ZeroQin 发表于 2019-4-26 15:42:16

MQTT之阿里云物联网通信

掌控MQTT的Easy IoT和OneNet平台的物联网通信我在另外两篇帖子里已经介绍过了,这里来介绍MQTT的最后一个平台——阿里云。

mqtt在阿里云平台的实现:手机app控制小灯的亮灭。
首先,要在阿里云IoT平台上建立LED灯与手机App的联系。这一部分要特别特别提到一位小伙伴,感谢@wuji 分享的阿里云IoT灯光控制,前面的app部分基本上是跟着她的流程来的(连名字都一样绝对不是因为我不!想!截!图!)。
准备工作1. 注册并登录阿里云账号打开谷歌浏览器,输入网址,点击该界面右上角的【登录】按钮,再点击【密码登录】框的“免费注册”选项,如果已有账号直接登录即可。
2.进入阿里云IoT的物联网平台页面登录完成后,会进入上图1所示的阿里云IoT主界面,点击【设备接入】”按钮,会跳转到“物联网设备接入”界面,如果是第一次进入,这个按钮应该是【立即开通】,根据要求开通就好了,是免费的。果你此前没有创建任何产品,其产品列表处会显示“没有找到产品”,用户可以在该界面完成产品,设备的创建,以及开发相应的开发服务以上均为准备工作,主要目的是能成功进入【物联网平台】界面,接下来就是在该界面实现产品的创建,设备的创建,以及开发移动App项目。
创建产品该步骤主要分为2部分:创建并完善产品信息;定义产品的功能。
1.创建名为“智能灯光系统”的产品登录阿里云账号后,直接进入阿里云IoT的物联网平台界面,具体进入方法参考“进入阿里云IoT管理控制台界面”小节;选择物联网平台页面左侧导航栏上的设备管理>产品,在产品管理页面,单击创建产品;选择高级版,单击下一步。
2.定义产品功能为“智能灯光系统”产品添加一个功能名为“工作状态”,产品标识符为“LightStatus”的属性。在产品列表中,找到名为“智能灯光系统”的产品,单击查看,进入产品详情页;在产品详情页中单击功能定义;在自定义功能栏,单击添加功能;设置属性,将LED灯的工作状态定义为产品属性,0表示灯灭,1表示灯亮。单击确定。功能添加完成后,将自动出现在自定义功能列表中,用户可在该处查看产品的标识符“LightStatus”。

如此,一个名为“智能灯光系统”的产品就创建好了,此步骤中,用户要留意产品的标识符“LightStatus”。
为产品添加设备该步骤主要是为已经创建的产品添加设备,即将一个或多个设备挂载在某个产品上。1. 挂载名为“Family_Light”的设备在“智能灯光系统”产品下挂载名称为“Family_Light”的设备。选中左侧导航栏的设备管理>设备,进入设备管理页面;单击添加设备,选中之前创建的产品,并输入设备名称“Family_Light”,单击确认。记录设备证书内容。设备证书包含的ProductKey、DeviceName和DeviceSecret ,是设备后续与物联网平台交流的重要凭证,请妥善保管。设备挂载完成后,将自动出现在设备列表中。

至此,产品“智能灯光系统”下就挂载了一个设备名为“Family_Light”的设备。
手机App开发服务如今,设备灯已经创建完毕,接下来就该准备一个App来控制设备了,该步骤主要分为3部分:新建项目;导入产品与设备;创建移动应用开发。
1.新建项目新建一个项目名为“智能灯光管理”的项目。选中“物联网平台”页面左侧导航栏的开发服务,进入物联网开发页面,单击右侧项目列表的新建项目,填写完成后,单击确定后,新建的“智能灯光管理”项目会自动出现在项目列表中。
2.导入产品和设备将刚才创建的“智能灯光系统”产品和“Family_Light”设备导入新建的“智能灯光管理”项目中。单击“智能灯光管理”项目的查看按钮,进入“智能灯光管理”项目管理页面;单击右上角的导入产品,选中“智能灯光系统”产品,单击导入,导入成功后,关联设备和关联产品的数字会发生变化。
3.创建移动应用开发该步骤主要分为5部分:App的UI界面拖建;关联设备与UI控件;App首页路由配置;账号用户添加;手机App发布。       搭建App名为“家庭灯控制”App的UI界面选中“智能灯光管理”项目左侧导航栏的移动应用开发,单击新增移动应用,选择可视化搭建,新建一个应用名为“家庭灯控制”的App,单击完成,选中弹出的模板Link Develop公版应用,进入“家庭灯控制”移动应用页面。

选中左侧导航栏的自定义页面>自定义新增页,编辑,将其修改为“家庭灯控制页面”,接下来就是用鼠标将左侧导航栏的可视化组件拖动到中间的“家庭灯控制页面”中去,组件的具体用法,可自行浏览帮助里的内容
增加可视化应用 具体设计出的UI界面
关联产品设备与UI控件此步骤主要是将旨在“家庭灯控制页面”所示的“指示灯”,“开关”等控件与“Family_Light”设备关联起来,达到通过UI界面监测和控制 “Family_Light”设备的工作状态。选中的“家庭灯控制页面”的指示灯控件,再单击右侧栏的数据选项;点击链接,选中“Family_Light”设备选项,点击确定,选中展示数据框里的“工作状态”选项,保存,及成功将“指示灯”控件与“Family_Light”设备关联。“开关”控件的关联方式同“指示灯”控件一致。
App首页路由配置该步骤主要是配置App的跳转页面,设置了后,就可以通过它跳转到上述的“家庭灯控制页面”界面。选中“家庭灯控制”移动应用页面左侧导航栏的模板页面>首页,单击右侧栏的新增页面路由,根据要求填写,这里的标题相当于App的导航栏。
账号用户添加该步骤添加用户的账户和密码,主要是为“家庭灯控制”App首次登录时所用。选中“家庭灯控制”移动应用页面左侧导航栏的账号,单击添加用户,按要求填写信息,记住账号(手机号)和密码。

手机App发布“家庭灯管理”App开发完成后,点击发布后,用户即可将其下载到手机上。 点击右上角的构建选项,根据你的手机系统选择Android构建或iOS构建,单击我只想自己使用,单击随机生成,单击下一步,然后耐心等待打包,最终会形成如二维码,此时用户可通过手机微信扫描该二维码,即可下载安装该App。

手机App安装后完成后,如图所示:
由此,一个名为“家庭灯控制”的App即开发完成,可投入使用,首次安装,需登录,账号和密码就是刚才设置的账号和密码,具体参考“账户用户添加”小节。接下来,就是修改mind+程序,并将程序下载到掌控板主控上,即可打开手机App实现对LED灯的控制了。
(1) 初始化MQTT ClientId是自定义的,ProductKey,DeviceName,DeviceSecret如下图所示: 接下来配置TOPIC信息选择一个发布和一个订阅(注意一定要在设备里面去找topic,产品里面是topic类的列表)复制到配置模块里    发布Topic:通过它,掌控可以上报某个设备的属性(即更新阿里云IoT上某个设备的功能状态)到阿里云平台上。    订阅Topic:通过它,会检测并接收到阿里云IoT向掌控发送的指令,再通过数据格式解析从而操作ESP32上的某个设备。(2)编写程序并上传到掌控,掌控通过扩展板在P0引脚连接一个LED通过串口打印的MQTT接收消息,可以看到接收到的实际上是一个包含了小灯状态信息(LightStatus)的json字符串,而目前Mind+还没有专门处理json字符串的block(PS:我猜马上就要有了^_^),所以我这里采用了一个比较笨的方法╮(╯▽╰)╭在手机端操作灯的开关,可以控制连接的LED灯的亮灭。    打开开关,Mind+接收到【"LightStatus":1】,点亮P0连接的LED     关闭开关,Mind+接收到【"LightStatus":0】,熄灭P0连接的LED我们可以在日志服务里查看到消息记录(由于Mind+消息格式的问题,并不能直接在阿里云上查询消息内容)



阿泽 发表于 2021-12-24 10:43:08

阿里云界面改版,找不到阿里云IoT的物联网平台入口的看这里

ZeroQin 发表于 2019-6-6 16:24:11

nfsgt 发表于 2019-6-6 13:19
不行,我在WiFi连接成功和IOT连接成功后都加了个灯闪烁的程序,WiFi连接成功闪3次,IOT连接成功闪5次,灯只 ...

你那个0.2s太短了,会不会成功了但是没观察到?如果不是的话,检查自己的MQTT参数,没连上多半是参数问题。另外掌控板有个问题,不知道ESP32有没有,就是使用WIFI的时候,芯片温度会很高,高到一定程度就会断掉wifi连接。用个风扇降温就行了。你先查MQTT参数吧,注意topic要在设备里面找,不能在产品里面找。

nfsgt 发表于 2019-6-6 23:44:44

ZeroQin 发表于 2019-6-6 16:24
你那个0.2s太短了,会不会成功了但是没观察到?如果不是的话,检查自己的MQTT参数,没连上多半是参数问题 ...

不是的,我同时开两个文件,一个是用你发的文件改的,另一个是我重新做的,里面的模块和设置,以及参数设置一模一样,传我这个连不上,,马上换你那个就连得上,再传我这个还是连不上。

ZeroQin 发表于 2019-6-14 11:28:14

nfsgt 发表于 2019-6-9 14:24
看您的文章中写道“由于mind+数据格式问题,还不能直接在阿里云的在线调试界面看到上传的信息”,请问这就 ...

不是。我这里的意思是说,无法查看到具体的消息内容,但是发送的上行数据是成功了的。如果是“上行数据错误”,就应该是发送数据出错了。

rzyzzxw 发表于 2019-4-27 08:16:29

好人啊,正搞不定呢,教程就来了。{:5_190:}

韦应 发表于 2019-5-24 15:26:27

厉害,学习了

nfsgt 发表于 2019-6-5 16:54:43

好贴,解了燃眉之急。

nfsgt 发表于 2019-6-5 22:06:57

神奇了,我用版主发的那个文件改成自己设备的信息能连接,但是重新照着做了一个程序,一模一样的,死活连不上IOT

ZeroQin 发表于 2019-6-6 11:12:21

nfsgt 发表于 2019-6-5 22:06
神奇了,我用版主发的那个文件改成自己设备的信息能连接,但是重新照着做了一个程序,一模一样的,死活连不 ...

不用手机APP,先直接用iot和掌控板通信,能成功么?

nfsgt 发表于 2019-6-6 13:19:54

不行,我在WiFi连接成功和IOT连接成功后都加了个灯闪烁的程序,WiFi连接成功闪3次,IOT连接成功闪5次,灯只闪了3次,没有闪5次在你发那个上面改就完全没问题,哦对了,我是用的一块ESP32模块

nfsgt 发表于 2019-6-9 14:24:40

看您的文章中写道“由于mind+数据格式问题,还不能直接在阿里云的在线调试界面看到上传的信息”,请问这就是一直显示“上行数据错误”的原因吗?如果想看上传的数据,比如光线传感器采集的光线值就必须配合移动端,或者web可视化工具才能查看,对不?

ZeroQin 发表于 2019-6-14 11:28:10

nfsgt 发表于 2019-6-9 14:24
看您的文章中写道“由于mind+数据格式问题,还不能直接在阿里云的在线调试界面看到上传的信息”,请问这就 ...

不是。我这里的意思是说,无法查看到具体的消息内容,但是发送的上行数据是成功了的。如果是“上行数据错误”,就应该是发送数据出错了。

ZeroQin 发表于 2019-6-14 11:29:45

nfsgt 发表于 2019-6-9 14:24
看您的文章中写道“由于mind+数据格式问题,还不能直接在阿里云的在线调试界面看到上传的信息”,请问这就 ...

阿里云支持的消息查询格式是QoS1,而Mind+的格式是QoS2,不知道有没有这方面的数据解析工具

ZeroQin 发表于 2019-6-14 11:29:51

nfsgt 发表于 2019-6-9 14:24
看您的文章中写道“由于mind+数据格式问题,还不能直接在阿里云的在线调试界面看到上传的信息”,请问这就 ...

阿里云支持的消息查询格式是QoS1,而Mind+的格式是QoS2,不知道有没有这方面的数据解析工具

ZeroQin 发表于 2019-6-14 11:31:22

nfsgt 发表于 2019-6-6 23:44
不是的,我同时开两个文件,一个是用你发的文件改的,另一个是我重新做的,里面的模块和设置,以及参数设 ...

有点奇怪,这个要看你具体程序才能找出来原因了

ZeroQin 发表于 2019-6-14 11:31:28

nfsgt 发表于 2019-6-6 23:44
不是的,我同时开两个文件,一个是用你发的文件改的,另一个是我重新做的,里面的模块和设置,以及参数设 ...

有点奇怪,这个要看你具体程序才能找出来原因了

ZeroQin 发表于 2019-6-14 11:31:37

nfsgt 发表于 2019-6-6 23:44
不是的,我同时开两个文件,一个是用你发的文件改的,另一个是我重新做的,里面的模块和设置,以及参数设 ...

有点奇怪,这个要看你具体程序才能找出来原因了

ZeroQin 发表于 2019-6-14 11:31:38

nfsgt 发表于 2019-6-6 23:44
不是的,我同时开两个文件,一个是用你发的文件改的,另一个是我重新做的,里面的模块和设置,以及参数设 ...

有点奇怪,这个要看你具体程序才能找出来原因了

ZeroQin 发表于 2019-6-14 11:31:38

nfsgt 发表于 2019-6-6 23:44
不是的,我同时开两个文件,一个是用你发的文件改的,另一个是我重新做的,里面的模块和设置,以及参数设 ...

有点奇怪,这个要看你具体程序才能找出来原因了

ZeroQin 发表于 2019-6-14 11:31:38

nfsgt 发表于 2019-6-6 23:44
不是的,我同时开两个文件,一个是用你发的文件改的,另一个是我重新做的,里面的模块和设置,以及参数设 ...

有点奇怪,这个要看你具体程序才能找出来原因了

zsqzsqzs 发表于 2020-4-8 21:43:48

真好,我也要学习一下
页: [1] 2
查看完整版本: MQTT之阿里云物联网通信