标准MQTT对接平台
<p style="color: red;font-size: larger;font-weight:bold;">
注意事项 必看:
>d **\${deviceId}** 为客户端id,在平台上获取
1,MQTT设备需要连接外网。
2,MQTT发布主题的主题名称必须为 sys/device/\${deviceId}/variant_data
3,订阅主题是MQTT设备往我们平台上发送变量。
4,MQTT订阅主题的主题名称必须为 sys/device/\${deviceId}/write_variant
5,订阅消息是我们平台控制MQTT设备中的变量。
6,控制回复主题的主题名称必须为 sys/device/\${deviceId}/write_variant_reply
7,控制回复主题是MQTT设备接收到我们平台写变量信息后给我们平台的回复消息。
>i步骤:平台创建BOX(填写BOX信息)------配置MQTT设备参数----平台添加变量、关联项目
# BOX创建
<p style="color: blue;font-size: larger;font-weight:bold;">
在平台上前期操作:
1,登录 [天启云平台](https://cloud.ecsiot.com) ,在左侧找到 **应用中心** **第三方设备** 点击进入
![昆仑通态MQTT1.png](https://cos.easydoc.net/67848957/files/lmlhigvt.png)
2,点击左下角的 **BOX管理** **批建BOX** 输入要建的BOX个数,前期测试输入1就行,点击 **确定**
![昆仑通态MQTT2.png](https://cos.easydoc.net/67848957/files/lmlide92.png)
3,在弹出的窗口中 **所属协议** 选择 **标准MQTT** , **BOX来源** 选择 **BOX输入** 自己输入一个20位的随机英文字符串即可(BOX ID 是不能和其他接到平台上设备的ID重复的) **BOX名称** 输入对这个MQTT的备注,然后点击 **确定**
![标准MQTT.png](https://cos.easydoc.net/67848957/files/lpakbu5c.png)
4,点击确定后会出现如下界面,在MQTT设备中需要用到以下几个信息。
![标准MQTT1.png](https://cos.easydoc.net/67848957/files/lpake9od.png)
5,添加需要使用的变量,这里使用三个变量来测试,分别为 **浮点数** **整数** **开关量**。
![MQTT5.png](https://cos.easydoc.net/67848957/files/lpalefsn.png)
# MQTT配置
<p style="color: blue;font-size: larger;font-weight:bold;">
这里使用MQTTX软件进行模拟测试,实际使用中请自行配置自己的MQTT设备
1,打开MQTTX软件,新建连接通道
![标准MQTT2.png](https://cos.easydoc.net/67848957/files/lpakxk8g.png)
## 添加发布主题
2,添加发布主题(MQTT往平台上发送的主题)。
![标准MQTT3.png](https://cos.easydoc.net/67848957/files/lpal3nug.png)
3,发送报文测试。
![标准MQTT4.png](https://cos.easydoc.net/67848957/files/lpala81c.png)
```json
{
"type": "variant_data",
"version": "1.0",
"time": 1600324099000,
"params": {
"浮点数": 221.5,
"整数": 216,
"开关量": 0
}
}
```
|名称|数据类型|是否必须|说明|
|-|--|--|-|
|type|String|是|功能类型,当前协议固定为“variant_data”|
|version|String|是|协议版本号,当前固定版版本号为“1.0”|
|time|Nubmer|否|发送时间,格式为毫秒级的Unix时间戳,1970年开始的毫秒值|
|params|Oject|是|需要上报的数据信息,格式为json类型的key,value组合,可以同时上报一个或多个数据(key为平台上建的变量名称,value为变量当前数值)|
4,发送报文后,在平台上第三方设备里面变量前面的红色小圆点会变绿就表示变量链接成功了。
![MQTT6.png](https://cos.easydoc.net/67848957/files/lpam7lys.png)
## 添加订阅主题
5,添加订阅主题(平台控制MQTT设备的主题)。
![mqtt8.png](https://cos.easydoc.net/67848957/files/lpanyh4k.png)
6,平台控制变量测试。
![333.png](https://cos.easydoc.net/67848957/files/lpao0c63.png)
7,MQTTX接收到报文。
![Snipaste_20231123_120119.png](https://cos.easydoc.net/67848957/files/lpao3axx.png)
```json
{
"id":"b4aa6052580b4358ae9fc6317e267ef5",
"type":"write_variant",
"params":{
"浮点数":"323.2"},
"version":"1.0"
}
```
|名称|数据类型|是否必须|说明|
|-|--|--|-|
|type|String|是|功能类型,当前协议固定为“write_variant”|
|version|String|是|协议版本号,当前固定版版本号为“1.0”|
|id|String|是|设备唯一固定id号,由平台自动生成|
|params|Oject|是|控制数据信息,格式为json类型的key,value组合|
8,当设备收到云平台发送的控制信息后,需要自动回复,表示接收成功
主题:sys/device/\${deviceId}/write_variant_reply
![666.png](https://cos.easydoc.net/67848957/files/lparao3o.png)
```json
{
"id": "9f47bdbd4a964ee19a939310f295ceac",
"type": "write_variant_reply",
"version": "1.0",
"time":1670943056000,
"code":0
}
```
|名称|数据类型|是否必须|说明|
|-|--|--|-|
|id|String|是|消息唯一ID号,需要和write_variant协议中的ID对应|
|type|String|是|功能类型,当前协议固定为“write_variant_reply”|
|version|String|是|协议版本号,当前固定版版本号为“1.0”|
|time|Nubmer|否|发送时间,格式为毫秒级的Unix时间戳,1970年开始的毫秒值|
|code|Nubmer|是|状态码,标识操作时候成功。0:无错误,10000:其他原因,10001:不支持该操作,41001:子设备离线,41002:数据只读|
# 平台端配置
## 关联项目
1).【项目中心】-【设备监控】中新增自由项目
2).【项目中心】-【项目配置】-【BOX管理】中点击电加BOX按钮,选择BOX来源为第三方设备中选中自定义的BOX即可。
3).然后进入【项目中心】-【数据监控】即可看到数据,在触摸屏中改变数据,然后更改触发变量的值即可使触摸屏中的数据在云平台查看,云平台更改数据也能写入触摸屏。
![昆仑通态MQTT16.png](https://cos.easydoc.net/67848957/files/lmlqgvpz.png)
## 激活项目
如果项目未设置到期时间,监控到的数据都会显示88888888,如下图:
![昆仑通态MQTT17.png](https://cos.easydoc.net/67848957/files/lmlqm5ln.png)