设备拓扑更新

2022-07-07
暂无评分

PILOT发送MQTT上线设备拓扑更新

PILOT在加载上云模块之后,立即向服务端发起MQTT连接请求。请求连接成功后,紧接着会再发送status topic给服务端。

通信方式: MQTT

API接口:

场景发起topic响应topic备注
更新设备拓扑sys/product/#{pid}/statussys/product/#{pid}/status_reply

参数说明:

  • {pid}:指网关设备的产品ID,一般是用设备的SN号来表示,每台设备都不一样,所以需要服务端订阅Topic的时候用通配符来表示。
参数必填类型说明
tidstring
bidstring
methodstring仅支持 update_topo
timestampint13位时间戳
dataobject上线数据
data > typeint网关设备的产品类型
data > sub_typeint网关子设备的产品子类型
data > device_secretstirng网关设备的 device secret
data > noncestring网关设备的 device secret
data > versionint网关设备的物模型版本
data > sub_devicesarray子设备列表,空数组表示没有子设备
data > sub_devices > snstring子设备的序列号
data > sub_devices > typeint子设备的产品类型
data > sub_devices > sub_typeint子设备的产品子类型
data > sub_devices > indexint连接网关设备的通道索引。例如:A、B
data > sub_devices > device_secretstirng子设备的 device secret
data > sub_devices > noncestring子设备的 device secret
data > sub_devices > versionint子设备的物模型版本

示例:

## Topic: sys/product/#{pid}/status
## 网关设备+子设备上线
{
    "tid": "tid001",
    "bid": "bid001",
    "method": "update_topo",
    "timestamp": 1234567890123,
    "data": {
        "type": 98,
        "sub_type": 0,
        "device_secret":"secret",
        "nonce":"nonce",
        "version": 1,
        "sub_devices":[{
            "sn": "drone001",
            "type": 116,
            "sub_type": 0,
            "index": "A",
            "device_secret":"secret",
            "nonce":"nonce", 
            "version": 1
        }
        ]
    }
}

## Topic: sys/product/#{pid}/status
## 子设备下线
{
    "tid": "tid001",
    "bid": "bid001",
    "method": "update_topo",
    "timestamp": 1234567890123,
    "data": {
        "type": 98,
        "sub_type": 0,
        "device_secret":"secret",
        "nonce":"nonce",
        "version": 1,
        "sub_devices":[]
    }
}

## Topic: sys/product/#{pid}/status_reply 
{
    "tid": "xxx",
    "bid": "xxx",
    "method": "update_topo",
    "timestamp": 1234567890123,
    "data": {
        "result": 0
    }
}

注意:

1. 只要有设备拓扑变更,PILOT端都会发送一条更新拓扑的topic给服务端

2. 当服务端收到status topic后,需要发送 status_reply topic进行应答,不然PILOT端就会一直在推送,直到收到应答后停止