跳至主要內容

MQTTX 模拟设备接入 ThingsCloud

约 1132 字大约 4 分钟

MQTTX 模拟设备接入 ThingsCloud

参考

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

准备工作

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

创建设备类型(可选)

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

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

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

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

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

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

创建设备

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

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

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

建立 MQTT 连接

请先下载并安装 MQTTXopen in new window

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

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

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

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

设备上报属性数据

在 MQTTX 上发布数据

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

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

如下图:

参考

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

云平台实时更新

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

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

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

提示

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

设备接收下发的属性数据

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

在 MQTTX 上订阅属性下发主题

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

从云平台下发属性

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

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

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

在 MQTTX 上接收数据

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

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

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

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

如下图:

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

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