网关类型的设备,可通过与云端的数据通信,对其下的子设备进行绑定与解绑操作。实现此类功能需利用如下两个 Topic:
$gateway/operation/${productid}/${devicename}
$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 | 签名类型。 |
网关绑定子设备响应数据格式:
{
"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": "bind",
"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 | 拓扑关系变化状态。 |
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 | 不支持的子设备 |
本页内容是否解决了您的问题?