物联网通信 拓扑关系管理

网关类型的设备,可通过与云端的数据通信,对其下的子设备进行绑定与解绑操作。实现此类功能需利用如下两个 Topic。

相关产品
物联网通信 产品页,含版本规格、价格与购买入口。

一、功能概述

·数据上行 Topic(用于发布):$gateway/operation/${productid}/${devicename}

·数据下行 Topic(用于订阅):$gateway/operation/result/${productid}/${devicename}

二、绑定设备

网关类型的设备,可以通过数据上行 Topic 请求添加它和子设备之间的拓扑关系,实现绑定子设备。请求成功之后,云端通过数据下行 Topic 返回子设备的绑定信息。

网关绑定子设备请求数据格式:

{ "type": "bind", "payload": { "devices": [ { "product_id": "CFCS****G7", "device_name": "****ev", "signature": "signature", "random": 121213, "timestamp": 1589786839, "signmethod": "hmacsha256", "authtype": "psk" } ] }}

请求参数说明:

参数 类型 描述
type String 网关消息类型。绑定子设备取值为:bind。
payload.devices Array 需要绑定的子设备列表。
product_id String 子设备产品 ID。
device_name String 子设备名称。
signature String 子设备绑定签名串。 签名算法:1. 签名原串,将产品 ID 设备名称,随机数,时间戳拼接:text=${product_id}${device_name};${random}${expiration_time}。2. 使用设备 Psk 密钥,或者证书的 Sha1 摘要,进行签名:sign = hmac_sha1(device_secret, text)。
random Int 随机数。
timestamp Int 时间戳,单位:秒。
signmethod String 签名算法。支持 hmacsha1、hmacsha256。
authtype String 签名类型。psk:使用设备 psk 进行签名。certificate:使用设备公钥证书签名。

网关绑定子设备响应数据格式:

{ "type": "bind", "payload": { "devices": [ { "product_id": "CFCS****G7", "device_name": "****ev", "result": -1 } ] }}

响应参数说明:

参数 类型 描述
type String 网关消息类型。绑定子设备取值为:bind。
payload.devices Array 要绑定的子设备列表。
product_id String 子设备产品 ID。
device_name String 子设备名称。
result Int 子设备绑定结果,具体错误码见下表。

三、解绑设备

网关类型的设备, 可以通过数据上行 Topic 请求解绑它和子设备之间的拓扑关系。请求成功之后,云端通过数据下行 Topic 返回子设备的解绑信息。

网关解绑子设备请求数据格式:

{ "type": "unbind", "payload": { "devices": [ { "product_id": "CFCS****G7", "device_name": "****ev" } ] }}

请求参数说明:

参数 类型 描述
type String 网关消息类型。解绑子设备取值为:unbind。
payload.devices Array 需要解绑的子设备列表。
product_id String 子设备产品 ID。
device_name String 子设备名称。

网关解绑子设备响应数据格式:

{ "type": "unbind", "payload": { "devices": [ { "product_id": "CFCS****G7", "device_name": "****ev", "result": -1 } ] }}

响应参数说明:

参数 类型 描述
type String 网关消息类型。解绑子设备取值为:unbind。
payload.devices Array 需要解绑的子设备列表。
product_id String 子设备产品 ID。
device_name String 子设备名称。
result Int 子设备绑定结果,详见 错误码。

四、查询拓扑关系

网关类型的设备, 可以通过该Topic上行请求查询子设备的拓扑关系。
数据上行Topic:$gateway/operation/${productid}/${devicename}
数据下行Topic:$gateway/operation/result/${productid}/${devicename}

网关查询子设备拓扑关系请求数据格式:

{ "type": "describe_sub_devices"}

请求参数说明:

参数 类型 描述
type String 网关消息类型。查询子设备取值为:describe_sub_devices。

网关查询子设备拓扑关系响应数据格式:

{ "type": "describe_sub_devices", "payload": { "devices": [ { "product_id": "XKFA****LX", "device_name": "2OGDy7Ws8mG****YUe" }, { "product_id": "XKFA****LX", "device_name": "5gcEHg3Yuvm****2p8" }, { "product_id": "XKFA****LX", "device_name": "hmIjq0gEFcf****F5X" }, { "product_id": "XKFA****LX", "device_name": "x9pVpmdRmET****mkM" }, { "product_id": "XKFA****LX", "device_name": "zmHv6o6n4G3****Bgh" } ] }}

响应参数说明:

参数 类型 描述
type String 网关消息类型。查询子设备取值为:describe_sub_devices。
payload.devices Array 网关绑定的子设备列表。
product_id String 子设备产品 ID。
device_name String 子设备名称。

五、拓扑关系变化

网关类型的设备, 可以通过该 Topic 订阅平台对子设备的拓扑关系变化。
数据下行 Topic:$gateway/operation/result/${productid}/${devicename}

子设备被绑定或解绑,网关将收到子设备拓扑关系变化,数据格式如下:

{ "type": "change", "payload": { "status": 0, //0-解绑 1-绑定 "devices": [ { "product_id": "CFCS****G7", "device_name": "****ev", } ] }}

请求参数说明:

参数 类型 描述
type String 网关消息类型。拓扑关系变化取值为:change。
status Int 拓扑关系变化状态。 0:解绑 。1:绑定。
payload.devices Array 网关绑定的子设备列表。
product_id String 子设备产品 ID。
device_name String 子设备名称。

网关响应,数据格式如下:

{ "type": "change", "result": 0}

响应参数说明:

参数 类型 描述
type String 网关消息类型。拓扑关系变化取值为:change。
result Int 网关响应处理结果。

六、错误码

错误码 描述
0 成功。
-1 网关设备未绑定该子设备。
-2 系统错误,子设备上线或者下线失败。
801 请求参数错误。
802 设备名非法,或者设备不存在。
803 签名校验失败。
804 签名方法不支持。
805 签名请求已过期。
806 该设备已被绑定。
807 非普通设备不能被绑定。
808 不允许的操作。
809 重复绑定。
810 不支持的子设备。
赞 (0)
上一篇 4天前
下一篇 4天前