上报设备连接拓扑状态


设备端通过 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 必需

节点上一次上报的状态。

  • 1:Connected
  • 2:Disconnected
  • 3:Unknown
info String 可选 节点状态相关的额外信息,比如节点变为离线的原因等。
name String 可选 节点的名称。对于设备节点,如果不提供,会自动使用云端设备的名称。
isFull Boolean 可选

描述当前请求中是否包含了全量的连接状态信息。

  • true:全量请求。必须提供 relations
  • false (默认):非全量请求。可以不用提供 relations
relations Object isFulltrue,则此字段为必需;若为 false,则此字段为可选。 描述节点与节点之间的连接信息。
reportTime Long 可选 上一次状态上报的时间戳。如果为空,时间戳会被设为服务器的时间。
method String 必需 请求方法。

响应参数说明

参数 类型 必需/可选 描述
code Integer 必需 结果返回码。200 代表请求成功执行。