【嵌入式Linux应用开发】8. 阿里云物联网平台的简单使用

1. 概述

  本篇主要是简单介绍下阿里云物联网平台中MQTT设备的使用。

温湿度监控系统应用开发所有文章

  1. 【嵌入式Linux应用开发】1. 移植LVGL到Linux开发板
  2. 【嵌入式Linux应用开发】2. 初步移植MQTT到Ubuntu和Linux开发板
  3. 【嵌入式Linux应用开发】3. SquareLine Studio与LVGL模拟器
  4. 【嵌入式Linux应用开发】4. 温湿度监控系统——绘制温湿度折线图
  5. 【嵌入式Linux应用开发】5. 温湿度监控系统——学习paho mqtt的基本操作
  6. 【嵌入式Linux应用开发】6. 温湿度监控系统——多线程与温湿度的获取显示
  7. 【嵌入式Linux应用开发】7. 设计温湿度采集MCU子系统
  8. 【嵌入式Linux应用开发】8. 阿里云物联网平台的简单使用

2.阿里云IoT

2.1 登录控制台

  阿里云物联网平台的网址:https://iot.aliyun.com
  我们首先需要登录控制台,如果没有账号需要注册账号。登录之后点击左上角的“控制台”:
image
此时就进入了阿里云物联网平台的后台主页:


如果是第一次进入此平台,在公共实例那里需要先开通,我这里是已经开通了(冻结状态是因为有设备长期不在线,可以再次解冻使用的),所以直接点击“公共实例”进入:

对于该公共实例的使用,需要先创建产品,然后再基于产品创建设备。

2.2 创建产品

  在公共实例的“设备管理”里面,点击“产品”进入产品管理界面:


在这里可以看到你创建的所有产品,也可以在“创建产品”那里创建一个新的产品。下面我们就来新建一个产品,点击“创建产品”:

  • 产品名称:设置为符合自己实际情况的名字即可;
  • 所属品类:如果自己的需求符合市场物联网设备行业规范,可以在标准品类中找到所属品类;如果不是,比如我们这里的自用学习,就选择自定义品类即可;
  • 节点类型:我们现在是为了让两个设备通过阿里云服务器进行MQTT通信,选择直连设备即可,不需要网关;
  • 联网方式:默认WiFi方式;
  • 数据格式:默认ICA格式即可;
  • 其它:默认
    设置完这些参数后点击“确认”即可:

    可以在完成页面的“添加设备”处给这个新建的产品添加设备,也可以在左侧边栏“设备管理”的“设备”那里给产品添加设备,为了通用性,我们在设备管理处添加设备。

2.3 添加设备

  我们进入设备的管理界面后,能看到自己创建的所有产品的设备:


这里是我之前创建的所有设备,可以看到其名称、所属的产品和状态,我们现在来为刚才新建的产品添加一个设备,点击“添加设备”:

在这里选择该设备所属产品和设置设备名称即可,备注名称可以不写:

然后点击“确认”,就完成了给某个产品添加设备:

我们可以在这里前往查看设备的信息,也可以查看SDK来学习和移植如何添加这个设备,我们这里不需要SDK,但是需要去查看设备信息,我们可以在这个添加设备完成界面进入,也可以在设备管理那里进入。同样为了通用性,我们去设备管理处进入查看设备的信息。

2.4 设备信息


我们在设备管理这里直接点击设备名,进入查看该设备的信息:

对于我们目前的需求而言,第一重要的是需要这个设备的MQTT连接参数:

我们在前面编程的时候就设置过一个MQTT设备的用户名、密码、ID、URI和端口,在程序中填写的依据就是来自这里。
  只有正确填写这些信息,我们的设备才能连上阿里云的物联网平台服务器,开始MQTT通信。
  我们这里使用一个Windows的MQTT客户端软件“MQTTX”来做实验:
image
点击“+”建立一个连接:

将刚才的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类”:


首先选择权限(根据自己的实际情况来):
image
比如我们这里就选择发布权限,然后设置topic的名称:
image
然后点击“确认”即可:

需要说明的是,这些topic不是乱定义的,是要根据自己的实际情况,产品项目管理,根据规则来定义,否则没有意义。

3.2 订阅topic


订阅topic的前提是我们清楚自己要和哪个产品的哪个设备进行通信,这是基础。然后再topic列表里面找到具有订阅权限的topic,将这个topic的“${deviceName}”字符替换成自己要通信的那个设备的名称,最后将这串topic的完整格式写到程序中设置订阅topic处。
  我们就拿图中的get为例,先将这串字符复制到MQTTX:

再替换字符:
image
然后点击左下角的“Confirm”,就订阅好了:

然后我们再去TestDev设备信息中查看Topic列表:

尝试从后台发布消息:

点击“确认”发布,然后回到MQTTX查看:

可以看到MQTT客户端就收到了这条来自服务器后台的消息。

3.3 发布topic

  同样的,只有具有发布权限的topic才能让MQTT客户端发布消息:


我们将这串topic字符复制到MQTTX:

然后替换字符,为TestDev:

点击右下角的那个图标即可发送消息给该topic:

随后我们去设备TestDev处查看日志:

点击“前往查看”:

我们查看第一条消息:

可以看到阿里云服务器也确实收到了这条消息,说明MQTT客户端到阿里云服务器之间的通信确实是正常的。

4. 总结

  阿里云物联网平台的客户端到服务器之间的通信其实很简单,建议读者参考本篇自己实际动手练习下,先熟悉MQTTX和阿里云服务器的通信,然后逐步转移到程序上去。
程序中的操作参考:
【嵌入式Linux应用开发】6. 温湿度监控系统——多线程与温湿度的获取显示
【嵌入式Linux应用开发】7. 设计温湿度采集MCU子系统