MQTTX 模拟设备接入 ThingsCloud


MQTTX 模拟设备接入 ThingsCloud

参考

关于 ThingsCloud MQTT 标准协议,请浏览 MQTT 接入手册

准备工作

首先打开 ThingsCloud 控制台open in new window,进入您的项目。

创建设备类型(可选)

这一步不是必须的,您也可以直接进入下一步。

这里我们来创建一个温湿度传感器的设备类型。进入项目的设备类型列表,点击创建设备类型。

articles/2022/20230107193422_ff4974af8d2557a6f20e2da84a3b711d.png

这里我们使用标准设备类型,直接使用系统内置的功能定义模板,选择温湿度传感器。

articles/2022/20230107193510_fb3171f059e6197c271199ee6e7710ba.png

articles/2022/20230107193534_ca904c2e88ae880c705eae7991816a04.png

然后在接入协议中,选择 ThingsCloud 标准接入协议。

articles/2022/20230107193607_417c2a5f4db40d2515091379c6c0b056.png

进入创建好的设备类型,在功能定义的属性中,除了系统自动生成的温度和湿度,还多了一个我们手动创建的恒温控制属性,用于设备接收云平台下发的参数。

articles/2022/20230107194604_8a373910bd19fb4ccfc04e011f2e9ac9.png

我们来手动添加这个新的属性定义,如下图:

articles/2022/20230107194637_980d2fcd6645bf1ce47eaafc8bf945e2.png

创建设备

这里创建一个设备,用于 MQTTX 客户端来模拟连接。

articles/2022/20230107194942_4c3247b85eb09a66d7cc63b7750e4ec2.png

如果设备关联到之前创建的设备类型,可以看到系统默认展示当前属性,但是没有内容,因为设备还没有和云平台通信,这些属性无实际数据。

articles/2022/20230107195003_e8c3d9add4d5fe16599e3a762e884ccd.png

进入设备的连接页面,这里的设备证书和 MQTT 接入点信息,接下来会用到。

articles/2022/20230107195533_f7c7e47cd4400b8bf0ae65b6d000da5a.png

建立 MQTT 连接

接下来,我们用 MQTTX 来模拟一个物理设备,接入在 ThingsCloud 上刚刚创建的设备。

在 MQTTX 上新建一个连接,填写信息如下图:

articles/2022/20230107200018_e2c2932b1416a596639d099fb7ad8130.png

点击连接,如果一切顺利,可以看到连接成功的提示。

articles/2022/20230107200047_189d0abcc5a79da18c9658986dc50cd4.png

与此同时,在 ThingsCloud 控制台的设备详情页,设备状态变为在线。

articles/2022/20230107200105_c4b543c5caf81e439cef3109cf5a7b96.png

设备上报属性数据

在 MQTTX 上发布数据

设备通常上报传感器数据或设备状态信息到云平台,这里用 MQTTX 模拟上报温湿度数据,将以下 JSON 数据发布到主题 attributes

{
  "temperature": 21.4,
  "humidity": 69.3
}

如下图:

articles/2022/20230107203035_918d951c4b8896f35db6e207f85eaf33.png

参考

关于 ThingsCloud 支持的 MQTT 主题,请浏览 MQTT 主题一览

云平台实时更新

发布成功后,云平台上的设备属性数据实时更新,如下图:

articles/2022/20230107203100_2a19c79e05430ce9a24941e69d4c4e8c.png

修改温度值后再次发布,如下图:

articles/2022/20230107203145_9ce44460924b74ae21dcddb18e8011e5.png

在云平台上可以看到历史数据,如下图:

articles/2022/20230107203131_3b4f2c957078bc53bab59b5321b0f809.png

提示

如果您使用的是 ThingsCloud 免费版项目,请确保属性上报不要过于频繁,且总量不要超过日消息量上限,否则会被系统限制连接。

设备接收下发的属性数据

这里我们以设备接收恒温控制参数为例。

在 MQTTX 上订阅属性下发主题

在 MQTTX 上订阅主题 attributes/push,这是 ThingsCloud 内置的属性下发订阅主题,任何设备可以直接使用。

articles/2022/20230107200319_03e4428b1aca4e35bfc65671ce7331a0.png

从云平台下发属性

如果您在前边创建了设备类型,并添加了恒温控制这个下发属性的定义,这里便可以直接在属性面板上编辑该属性的下发数据,如下图:

articles/2022/20230107203324_f87881aa8ef5a8b35c9e8fcd03737d89.png

顺便说一下,ThingsCloud 支持很多下发属性数据的方式,包括:

  • 通过在线调试功能下发,可一次下发多个属性。
  • 通过应用端设备访问 API 下发,适合集成到第三方系统中。了解更多
  • 通过项目 API 下发,适合集成到第三方系统中。了解更多

在 MQTTX 上接收数据

这时候,MQTTX 模拟的设备便收到了刚刚下发的恒温控制数据,如下图:

articles/2022/20230107203352_75a8dea327d61f50ea06c41a28f6faf4.png

接下来我们用在线调试功能来下发属性,如下图:

articles/2022/20230107203444_611b04b94c3da424d8035151141ea5e2.png

这里支持直接编辑 JSON 属性集合,例如:下发两个继电器的控制状态给设备。要求设备断开继电器1,闭合继电器2。

{
    "relay1": false,
    "relay2": true
}

如下图:

articles/2022/20230107203539_3c6ff0923b1176aa313a26dea2dda4d1.png

MQTTX 客户端立即收到云平台下发的属性。如下图:

articles/2022/20230107203613_89bec4f680fd842181c9c779b0b5ae74.png

以上是 ThingsCloud MQTT 协议中属性上报和下发的示例,更多的使用方法,请浏览 MQTT 主题一览