MQTT推送数据格式的说明:
1. 对外发布实时数据,别的MQTT客户端可以订阅该主题来得到我们设备中的实时数据
用途 | 对外发布实时数据 |
主题(默认值) | /system/MonitorData |
类型 | 发布 |
内容
这是我们对外发出的数据,对方必须按此格式接收。 | { "time":"2023-6-1 08:33:16", "Data":[{"name":"temp1","value":"124"}, {"name":"mqtt_state","value":"1"}, {"name":"float1","value":"45.500473"} ] }
|
2.接受别处的写。别的MQTT客户端可以发布该主题来向我们设备写入数据
用途 | 接受其他设备写入的数据 |
主题(默认值) | /system/WriteData |
类型 | 订阅 |
内容
这是我们接受的格式。想给我们写入数据的对方必须按此格式发布数据 | { "Data":[{"name":"Temp","value":"22"}, {"name":" mqtt_state ","value":"0"}, {"name":" float1","value":"12.3"} ] }
|
我们发送和接受的数据都是json格式。数据内容是json对象中的一个数组叫Data,里面每一项是一个变量的名字和值。变量名是name,变量值是value。发送的数据还带有当前的时间。接受写入的数据里面除了Data数组以外,其它的内容都不被识别。
因为数据收发的格式是一样的,用户可以把一个推送组的接受写的主题设为另一个推送组的发布数据主题,这样就可以从一个推送组往另一个推送组发数据。
为了节约流量和减少模块写入数据量(某些PLC写数据比较慢),推荐在这种情况下设置推送模式为“变化才推送,加上每10个周期推送一次所有值”,这样可以快速的推送有变化的数据。然后如果对方断线了,下次对方重新上线以后等10个周期就可以得到所有变量的值。
我们的测试服务器 :
test.yunplc.com端口7883
用户名 test1到test8,一共有8个测试用户,密码和对应的用户名相同。