23103浏览
查看: 23103|回复: 22

[教程] MQTT之阿里云物联网通信

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


mqtt在阿里云平台的实现:手机app控制小灯的亮灭。

首先,要在阿里云IoT平台上建立LED灯与手机App的联系。这一部分要特别特别提到一位小伙伴,感谢@wuji 分享的阿里云IoT灯光控制前面的app部分基本上是跟着她的流程来的(连名字都一样绝对不是因为我不!想!截!图!)。

准备工作
1. 注册并登录阿里云账号
打开谷歌浏览器,输入网址,点击该界面右上角的【登录】按钮,再点击【密码登录】框的“免费注册”选项,如果已有账号直接登录即可。
MQTT之阿里云物联网通信图1

2.进入阿里云IoT的物联网平台页面
登录完成后,会进入上图1所示的阿里云IoT主界面,点击【设备接入】”按钮,会跳转到“物联网设备接入”界面,如果是第一次进入,这个按钮应该是【立即开通】,根据要求开通就好了,是免费的。
果你此前没有创建任何产品,其产品列表处会显示“没有找到产品”,用户可以在该界面完成产品,设备的创建,以及开发相应的开发服务
MQTT之阿里云物联网通信图2MQTT之阿里云物联网通信图3MQTT之阿里云物联网通信图4
以上均为准备工作,主要目的是能成功进入【物联网平台】界面,接下来就是在该界面实现产品的创建,设备的创建,以及开发移动App项目。

创建产品
该步骤主要分为2部分:
创建并完善产品信息;
定义产品的功能。

1.创建名为“智能灯光系统”的产品
登录阿里云账号后,直接进入阿里云IoT的物联网平台界面,具体进入方法参考“进入阿里云IoT管理控制台界面”小节;选择物联网平台页面左侧导航栏上的设备管理>产品,在产品管理页面,单击创建产品;选择高级版,单击下一步。
MQTT之阿里云物联网通信图5

2.定义产品功能
“智能灯光系统”产品添加一个功能名为“工作状态”,产品标识符为“LightStatus”的属性。在产品列表中,找到名为“智能灯光系统”的产品,单击查看,进入产品详情页;在产品详情页中单击功能定义;在自定义功能栏,单击添加功能;设置属性,将LED灯的工作状态定义为产品属性,0表示灯灭,1表示灯亮。单击确定。功能添加完成后,将自动出现在自定义功能列表中,用户可在该处查看产品的标识符“LightStatus”。
MQTT之阿里云物联网通信图6


如此,一个名为“智能灯光系统”的产品就创建好了,此步骤中,用户要留意产品的标识符“LightStatus”。

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


至此,产品“智能灯光系统”下就挂载了一个设备名为“Family_Light”的设备。

手机App开发服务
如今,设备灯已经创建完毕,接下来就该准备一个App来控制设备了,该步骤主要分为3部分:
新建项目;
导入产品与设备;
创建移动应用开发。

1.新建项目
新建一个项目名为“智能灯光管理”的项目。选中“物联网平台”页面左侧导航栏的开发服务,进入物联网开发页面,单击右侧项目列表的新建项目,填写完成后,单击确定后,新建的“智能灯光管理”项目会自动出现在项目列表中。
MQTT之阿里云物联网通信图8

2.导入产品和设备
将刚才创建的“智能灯光系统”产品和“Family_Light”设备导入新建的“智能灯光管理”项目中。单击“智能灯光管理”项目的查看按钮,进入“智能灯光管理”项目管理页面;单击右上角的导入产品,选中“智能灯光系统”产品,单击导入,导入成功后,关联设备和关联产品的数字会发生变化。
MQTT之阿里云物联网通信图9

3.创建移动应用开发
该步骤主要分为5部分:App的UI界面拖建;关联设备与UI控件;App首页路由配置;账号用户添加;手机App发布。
      
搭建App名为“家庭灯控制”App的UI界面
选中“智能灯光管理”项目左侧导航栏的移动应用开发,单击新增移动应用,选择可视化搭建,新建一个应用名为“家庭灯控制”的App,单击完成,选中弹出的模板Link Develop公版应用,进入“家庭灯控制”移动应用页面。


选中左侧导航栏的自定义页面>自定义新增页,编辑,将其修改为“家庭灯控制页面”,接下来就是用鼠标将左侧导航栏的可视化组件拖动到中间的“家庭灯控制页面”中去,组件的具体用法,可自行浏览帮助里的内容

增加可视化应用
MQTT之阿里云物联网通信图10
MQTT之阿里云物联网通信图11
具体设计出的UI界面
MQTT之阿里云物联网通信图12

关联产品设备与UI控件
此步骤主要是将旨在“家庭灯控制页面”所示的“指示灯”,“开关”等控件与“Family_Light”设备关联起来,达到通过UI界面监测和控制 “Family_Light”设备的工作状态。
选中的“家庭灯控制页面”的指示灯控件,再单击右侧栏的数据选项;点击链接,选中“Family_Light”设备选项,点击确定,选中展示数据框里的“工作状态”选项,保存,及成功将“指示灯”控件与“Family_Light”设备关联“开关”控件的关联方式同“指示灯”控件一致。
MQTT之阿里云物联网通信图13

App首页路由配置
该步骤主要是配置App的跳转页面,设置了后,就可以通过它跳转到上述的“家庭灯控制页面”界面。
选中“家庭灯控制”移动应用页面左侧导航栏的模板页面>首页,单击右侧栏的新增页面路由,根据要求填写,这里的标题相当于App的导航栏。
MQTT之阿里云物联网通信图14

账号用户添加
该步骤添加用户的账户和密码,主要是为“家庭灯控制”App首次登录时所用。
选中“家庭灯控制”移动应用页面左侧导航栏的账号,单击添加用户,按要求填写信息,记住账号(手机号)和密码。
MQTT之阿里云物联网通信图15


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


手机App安装后完成后,如图所示:
MQTT之阿里云物联网通信图17
MQTT之阿里云物联网通信图18

由此,一个名为“家庭灯控制”的App即开发完成,可投入使用,首次安装,需登录,账号和密码就是刚才设置的账号和密码,具体参考“账户用户添加”小节。接下来,就是修改mind+程序,并将程序下载到掌控板主控上,即可打开手机App实现对LED灯的控制了。

(1) 初始化MQTT
MQTT之阿里云物联网通信图19
ClientId是自定义的,ProductKey,DeviceName,DeviceSecret如下图所示:
MQTT之阿里云物联网通信图20
接下来配置TOPIC信息
MQTT之阿里云物联网通信图21
选择一个发布和一个订阅(注意一定要在设备里面去找topic,产品里面是topic类的列表)复制到配置模块里
    发布Topic:通过它,掌控可以上报某个设备的属性(即更新阿里云IoT上某个设备的功能状态)到阿里云平台上。
    订阅Topic:通过它,会检测并接收到阿里云IoT向掌控发送的指令,再通过数据格式解析从而操作ESP32上的某个设备。
[size=12.0000pt](2)编写程序并上传到掌控,掌控通过扩展板在P0引脚连接一个LED
通过串口打印的MQTT接收消息,可以看到接收到的实际上是一个包含了小灯状态信息(LightStatus)的json字符串,而目前Mind+还没有专门处理json字符串的block(PS:我猜马上就要有了^_^),所以我这里采用了一个比较笨的方法╮(╯▽╰)╭
MQTT之阿里云物联网通信图22
在手机端操作灯的开关,可以控制连接的LED灯的亮灭。
    打开开关,Mind+接收到【"LightStatus":1】,点亮P0连接的LED
MQTT之阿里云物联网通信图23
    关闭开关,Mind+接收到【"LightStatus":0】,熄灭P0连接的LED
MQTT之阿里云物联网通信图24
我们可以在日志服务里查看到消息记录(由于Mind+消息格式的问题,并不能直接在阿里云上查询消息内容)
MQTT之阿里云物联网通信图25
MQTT之阿里云物联网通信图26




截图201904261517239660.png

阿里云iot控制小灯.rar

45.38 KB, 下载次数: 5001

阿泽  初级技师

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

阿里云界面改版,找不到阿里云IoT的物联网平台入口的看这里MQTT之阿里云物联网通信图1
回复

使用道具 举报

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

好人啊,正搞不定呢,教程就来了。
回复

使用道具 举报

韦应  高级技师

发表于 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次MQTT之阿里云物联网通信图1在你发那个上面改就完全没问题,哦对了,我是用的一块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

真好,我也要学习一下
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail