上报设备连接拓扑状态¶
设备端通过 MQTT 协议通道上报设备连接拓扑和设备连接状态到云端。有关 IoT Hub 中连接拓扑的更多信息,参见 查看设备连接拓扑。
上行
- 请求 TOPIC:
/sys/{productKey}/{deviceKey}/connection/state/post
- 响应 TOPIC:
/sys/{productKey}/{deviceKey}/connection/state/post_reply
请求数据格式¶
上报连接拓扑结构和状态¶
当根节点与云端建立 MQTT 连接或者重连后,首先会向 IoT Hub 上报全量的设备连接拓扑结构和连接状态信息。
{
"id":"123",
"version":"1.0",
"params":{
"nodes":[
{"name":"name3","state":1,"nodeId":"#003","assetId":"assetId3"},
{"name":"name4","state":1,"nodeId":"#004"},
{"name":"name5","state":1,"nodeId":"#005","assetId":"assetId5"},
{"name":"name1","state":1,"nodeId":"#001","info":"reconnect by xxx"},
{"name":"connection1","state":2,"nodeId":"#002","info":"no heartbeat"}
],
"isFull":true,
"relations":{
"#004":["#005"],
"#001":["#003","#004","#002"]
},
"reportTime":1612254712139
},
"method":"connection.state.post"
}
上报中断/重新连接状态¶
根节点中断/重新连接后,IoT Hub 会自动探测到,将根节点的状态置为 1 (connected) 或 2(disconnected)。
当子节点中断/重新连接后,根节点需要上报具体的中断/重新连接的节点信息,IoT Hub 会将该节点设置为 1 或 2。
{
"method":"connection.state.post",
"id":"1",
"params":{
"isFull":false,
"reportTime":1609809203312,
"nodes":[
{
"nodeId":"#002",
"assetId": "Edge1",
"state":2,
"info": "no heartbeat"
}
]
},
"version":"1.0"
}
响应数据格式¶
{
"id":"123",
"code":200,
"data":{}
}
请求参数说明¶
参数 | 类型 | 必需/可选 | 描述 |
---|---|---|---|
id | String | 可选 | 消息 ID 号,保留值。 |
version | String | 必需 | 协议版本号,目前协议版本 1.0。 |
params | Object | 必需 | 上报拓扑状态所需的参数。 |
nodes | Array | 可选 | 描述设备端拓扑中包含的所有节点信息。 |
nodeId | String | 必需 | 全局唯一的节点标识符(即 identifier)。 |
assetId | String | 可选 | 节点对应的设备的 assetId,如果节点没有对应任何设备,则不需要提供该字段。 |
state | Integer | 必需 | 节点上一次上报的状态。
|
info | String | 可选 | 节点状态相关的额外信息,比如节点变为离线的原因等。 |
name | String | 可选 | 节点的名称。对于设备节点,如果不提供,会自动使用云端设备的名称。 |
isFull | Boolean | 可选 | 描述当前请求中是否包含了全量的连接状态信息。
|
relations | Object | 若 isFull 为 true ,则此字段为必需;若为 false ,则此字段为可选。 |
描述节点与节点之间的连接信息。 |
reportTime | Long | 可选 | 上一次状态上报的时间戳。如果为空,时间戳会被设为服务器的时间。 |
method | String | 必需 | 请求方法。 |
响应参数说明¶
参数 | 类型 | 必需/可选 | 描述 |
---|---|---|---|
code | Integer | 必需 | 结果返回码。200 代表请求成功执行。 |