跳到主要内容

消息规范

消息格式分类

  • 支持三类上行数据(用户自定义数据, 属性, 遥测)
  • 支持两类下行数据(属性(可写), 命令)

用户自定义数据

推送用户自定义数据到平台

  • topic: 合法的非平台预定义的 topic 均作为原始数据topic, 用户可以自定义。
  • payload: 上行原始数据可以是任意类型的数据, 比如 json, 二进制数据等用户自定义数据.

属性数据

属性API包括以下几种

  • 设备推送属性数据到平台
  • 设备订阅平台属性变化

设备推送属性数据到平台

  • topic: v1/devices/me/attributes
  • payload:
{
"attribute1": "value1",
"attribute2": "value2"
}

订阅平台属性变化

设备订阅 topic: v1/devices/me/attributes

平台侧修改属性后设备侧会收到变更的属性 payload:

{
"attribute1": "value1",
"attribute2": "value2"
}

遥测数据

  • 设备推送遥测数据到平台
  • topic: v1/devices/me/telemetry
  • payload:
{
"telemetry1": "value1",
"telemetry2": "value2"
}

命令数据

设备订阅topic: v1/devices/me/commands

平台发送命令后在设备侧会收到如下信息 payload:

{
"id": "ota",
"paras": {
"firmware_address": "http://xxx.yyy.com",
"version": "latest",
"secret": "****",
"http_method": "GET"
},
"ts": 1646964832292
}

注:ts 为毫秒

设备收到命令消息之后可以将执行结果发送到

topic: v1/devices/me/command/response

payload:

{
"id": "ota",
"ota": {
"output": {
"success": true,
"ts": 12345
}
}
}

反控数据

设备订阅 v1/devices/me/raw

平台推送数据到设备的 topic(v1/devices/me/raw)

Tips:
命令跟反控的区别在于命令下发的是格式化的数据(json),而反控可以是任意的数据

注意

对于有子设备的设备比如采集网关,其上报的遥测、属性及其他类型的数据可使用 key 进行区分如:

{
"telemetry1_opcua": "value1",
"telemetry2_modbus": "value2"
}

可以表示 telemetry1 来自 opcua, telemetry2 来自 modbus