1. 概述
本篇主要是简单介绍下阿里云物联网平台中MQTT设备的使用。
温湿度监控系统应用开发所有文章
- 【嵌入式Linux应用开发】1. 移植LVGL到Linux开发板
- 【嵌入式Linux应用开发】2. 初步移植MQTT到Ubuntu和Linux开发板
- 【嵌入式Linux应用开发】3. SquareLine Studio与LVGL模拟器
- 【嵌入式Linux应用开发】4. 温湿度监控系统——绘制温湿度折线图
- 【嵌入式Linux应用开发】5. 温湿度监控系统——学习paho mqtt的基本操作
- 【嵌入式Linux应用开发】6. 温湿度监控系统——多线程与温湿度的获取显示
- 【嵌入式Linux应用开发】7. 设计温湿度采集MCU子系统
- 【嵌入式Linux应用开发】8. 阿里云物联网平台的简单使用
2.阿里云IoT
2.1 登录控制台
阿里云物联网平台的网址:https://iot.aliyun.com
我们首先需要登录控制台,如果没有账号需要注册账号。登录之后点击左上角的“控制台”:
此时就进入了阿里云物联网平台的后台主页:
如果是第一次进入此平台,在公共实例那里需要先开通,我这里是已经开通了(冻结状态是因为有设备长期不在线,可以再次解冻使用的),所以直接点击“公共实例”进入:
对于该公共实例的使用,需要先创建产品,然后再基于产品创建设备。
2.2 创建产品
在公共实例的“设备管理”里面,点击“产品”进入产品管理界面:
在这里可以看到你创建的所有产品,也可以在“创建产品”那里创建一个新的产品。下面我们就来新建一个产品,点击“创建产品”:
- 产品名称:设置为符合自己实际情况的名字即可;
- 所属品类:如果自己的需求符合市场物联网设备行业规范,可以在标准品类中找到所属品类;如果不是,比如我们这里的自用学习,就选择自定义品类即可;
- 节点类型:我们现在是为了让两个设备通过阿里云服务器进行MQTT通信,选择直连设备即可,不需要网关;
- 联网方式:默认WiFi方式;
- 数据格式:默认ICA格式即可;
- 其它:默认
设置完这些参数后点击“确认”即可:
可以在完成页面的“添加设备”处给这个新建的产品添加设备,也可以在左侧边栏“设备管理”的“设备”那里给产品添加设备,为了通用性,我们在设备管理处添加设备。
2.3 添加设备
我们进入设备的管理界面后,能看到自己创建的所有产品的设备:
这里是我之前创建的所有设备,可以看到其名称、所属的产品和状态,我们现在来为刚才新建的产品添加一个设备,点击“添加设备”:
在这里选择该设备所属产品和设置设备名称即可,备注名称可以不写:
然后点击“确认”,就完成了给某个产品添加设备:
我们可以在这里前往查看设备的信息,也可以查看SDK来学习和移植如何添加这个设备,我们这里不需要SDK,但是需要去查看设备信息,我们可以在这个添加设备完成界面进入,也可以在设备管理那里进入。同样为了通用性,我们去设备管理处进入查看设备的信息。
2.4 设备信息
我们在设备管理这里直接点击设备名,进入查看该设备的信息:
对于我们目前的需求而言,第一重要的是需要这个设备的MQTT连接参数:
我们在前面编程的时候就设置过一个MQTT设备的用户名、密码、ID、URI和端口,在程序中填写的依据就是来自这里。
只有正确填写这些信息,我们的设备才能连上阿里云的物联网平台服务器,开始MQTT通信。
我们这里使用一个Windows的MQTT客户端软件“MQTTX”来做实验:
点击“+”建立一个连接:
将刚才的MQTT参数填写上去:
然后点击右上角的“Connect”连接:
这样就表示连接上了,我们再去阿里云物联网平台的设备管理处刷新下页面:
可以看到这个设备的状态,就变成了在线,表明连接成功了。
连接上服务器之后,还要发布topic和订阅topic,那么topic又在哪里管理呢?是在产品处管理的。
3. topic
我们在产品出,点击某个产品的名称:
查看Topic类列表:
可以看到这里有3类:
- 基础通信Topic;
- 物理模型通信Topic;
- 自定义Topic;
基础通信Topic和物理模型通信Topic是一些固定类的topic,无法修改删除,只有在自定义类里面才可以定义新的topic,编辑和删除已有topic。我们的学习测试通常使用自定义的topic。这些topic有两种权限: - 发布;
- 订阅;
我们在使用的时候,不能用只具有订阅权限的topic去发布消息,也不能订阅只具有发布权限的topic。这两个权限可以在一个topic上同时具备。
3.1 自定义topic
我们在自定义topic中点击‘定义topic类”:
首先选择权限(根据自己的实际情况来):
比如我们这里就选择发布权限,然后设置topic的名称:
然后点击“确认”即可:
需要说明的是,这些topic不是乱定义的,是要根据自己的实际情况,产品项目管理,根据规则来定义,否则没有意义。
3.2 订阅topic
订阅topic的前提是我们清楚自己要和哪个产品的哪个设备进行通信,这是基础。然后再topic列表里面找到具有订阅权限的topic,将这个topic的“${deviceName}”字符替换成自己要通信的那个设备的名称,最后将这串topic的完整格式写到程序中设置订阅topic处。
我们就拿图中的get为例,先将这串字符复制到MQTTX:
再替换字符:
然后点击左下角的“Confirm”,就订阅好了:
然后我们再去TestDev设备信息中查看Topic列表:
尝试从后台发布消息:
点击“确认”发布,然后回到MQTTX查看:
可以看到MQTT客户端就收到了这条来自服务器后台的消息。
3.3 发布topic
同样的,只有具有发布权限的topic才能让MQTT客户端发布消息:
我们将这串topic字符复制到MQTTX:
然后替换字符,为TestDev:
点击右下角的那个图标即可发送消息给该topic:
随后我们去设备TestDev处查看日志:
点击“前往查看”:
我们查看第一条消息:
可以看到阿里云服务器也确实收到了这条消息,说明MQTT客户端到阿里云服务器之间的通信确实是正常的。
4. 总结
阿里云物联网平台的客户端到服务器之间的通信其实很简单,建议读者参考本篇自己实际动手练习下,先熟悉MQTTX和阿里云服务器的通信,然后逐步转移到程序上去。
程序中的操作参考:
【嵌入式Linux应用开发】6. 温湿度监控系统——多线程与温湿度的获取显示
【嵌入式Linux应用开发】7. 设计温湿度采集MCU子系统