MQTTX 模拟设备接入 ThingsCloud
MQTTX 模拟设备接入 ThingsCloud
参考
关于 ThingsCloud MQTT 标准协议,请浏览 MQTT 接入手册。
准备工作
首先打开 ThingsCloud 控制台,进入您的项目。
创建设备类型(可选)
这一步不是必须的,您也可以直接进入下一步。
这里我们来创建一个温湿度传感器的设备类型。进入项目的设备类型列表,点击创建设备类型。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107193422_ff4974af8d2557a6f20e2da84a3b711d.png)
这里我们使用标准设备类型,直接使用系统内置的功能定义模板,选择温湿度传感器。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107193510_fb3171f059e6197c271199ee6e7710ba.png)
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107193534_ca904c2e88ae880c705eae7991816a04.png)
然后在接入协议中,选择 ThingsCloud 标准接入协议。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107193607_417c2a5f4db40d2515091379c6c0b056.png)
进入创建好的设备类型,在功能定义的属性中,除了系统自动生成的温度和湿度,还多了一个我们手动创建的恒温控制属性,用于设备接收云平台下发的参数。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107194604_8a373910bd19fb4ccfc04e011f2e9ac9.png)
我们来手动添加这个新的属性定义,如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107194637_980d2fcd6645bf1ce47eaafc8bf945e2.png)
创建设备
这里创建一个设备,用于 MQTTX 客户端来模拟连接。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107194942_4c3247b85eb09a66d7cc63b7750e4ec2.png)
如果设备关联到之前创建的设备类型,可以看到系统默认展示当前属性,但是没有内容,因为设备还没有和云平台通信,这些属性无实际数据。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107195003_e8c3d9add4d5fe16599e3a762e884ccd.png)
进入设备的连接页面,这里的设备证书和 MQTT 接入点信息,接下来会用到。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107195533_f7c7e47cd4400b8bf0ae65b6d000da5a.png)
建立 MQTT 连接
接下来,我们用 MQTTX 来模拟一个物理设备,接入在 ThingsCloud 上刚刚创建的设备。
在 MQTTX 上新建一个连接,填写信息如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107200018_e2c2932b1416a596639d099fb7ad8130.png)
点击连接,如果一切顺利,可以看到连接成功的提示。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107200047_189d0abcc5a79da18c9658986dc50cd4.png)
与此同时,在 ThingsCloud 控制台的设备详情页,设备状态变为在线。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107200105_c4b543c5caf81e439cef3109cf5a7b96.png)
设备上报属性数据
在 MQTTX 上发布数据
设备通常上报传感器数据或设备状态信息到云平台,这里用 MQTTX 模拟上报温湿度数据,将以下 JSON 数据发布到主题 attributes
。
{
"temperature": 21.4,
"humidity": 69.3
}
如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203035_918d951c4b8896f35db6e207f85eaf33.png)
参考
关于 ThingsCloud 支持的 MQTT 主题,请浏览 MQTT 主题一览。
云平台实时更新
发布成功后,云平台上的设备属性数据实时更新,如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203100_2a19c79e05430ce9a24941e69d4c4e8c.png)
修改温度值后再次发布,如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203145_9ce44460924b74ae21dcddb18e8011e5.png)
在云平台上可以看到历史数据,如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203131_3b4f2c957078bc53bab59b5321b0f809.png)
提示
如果您使用的是 ThingsCloud 免费版项目,请确保属性上报不要过于频繁,且总量不要超过日消息量上限,否则会被系统限制连接。
设备接收下发的属性数据
这里我们以设备接收恒温控制参数为例。
在 MQTTX 上订阅属性下发主题
在 MQTTX 上订阅主题 attributes/push
,这是 ThingsCloud 内置的属性下发订阅主题,任何设备可以直接使用。
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107200319_03e4428b1aca4e35bfc65671ce7331a0.png)
从云平台下发属性
如果您在前边创建了设备类型,并添加了恒温控制这个下发属性的定义,这里便可以直接在属性面板上编辑该属性的下发数据,如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203324_f87881aa8ef5a8b35c9e8fcd03737d89.png)
顺便说一下,ThingsCloud 支持很多下发属性数据的方式,包括:
在 MQTTX 上接收数据
这时候,MQTTX 模拟的设备便收到了刚刚下发的恒温控制数据,如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203352_75a8dea327d61f50ea06c41a28f6faf4.png)
接下来我们用在线调试功能来下发属性,如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203444_611b04b94c3da424d8035151141ea5e2.png)
这里支持直接编辑 JSON 属性集合,例如:下发两个继电器的控制状态给设备。要求设备断开继电器1,闭合继电器2。
{
"relay1": false,
"relay2": true
}
如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203539_3c6ff0923b1176aa313a26dea2dda4d1.png)
MQTTX 客户端立即收到云平台下发的属性。如下图:
![](https://img-1300291923.cos.accelerate.myqcloud.com/articles/2022/20230107203613_89bec4f680fd842181c9c779b0b5ae74.png)
以上是 ThingsCloud MQTT 协议中属性上报和下发的示例,更多的使用方法,请浏览 MQTT 主题一览。