添加子设备拓扑关系¶
网关类型的设备,可以通过该Topic上行请求添加它和子设备之间的拓扑关系。
上行
- 请求TOPIC:
/sys/{productKey}/{deviceKey}/thing/topo/add
- 响应TOPIC:
/sys/{productKey}/{deviceKey}/thing/topo/add_reply
注解
TOPIC中的`productKey`和`deviceKey`为网关设备的product key和device key。
请求数据格式¶
{
"id":"123",
"version":"1.0",
"params":[
{
"deviceKey":"deviceKey1234",
"productKey":"1234556554",
"sign":"xxxxxx",
"signmethod":"hmacSha1",
"timestamp":"1524448722000",
"clientId":"xxxxxx"
}
],
"method":"thing.topo.add"
}
响应数据格式¶
{
"id":"123",
"code":200,
"data":{}
}
参数说明¶
参数 | 类型 | 是否必需 | 描述 |
id | String | 可选 | 消息 ID 号,保留值 |
version | String | 必需 | 协议版本号,目前协议版本 1.0 |
params | List | 必需 | 添加拓扑关系的参数 |
deviceKey | String | 必需 | 子设备的 deviceKey |
productKey | String | 必需 | 子设备的 productkey |
sign | String | 必需 | 签名,生成方法见下文 |
signmethod | String | 必需 | 签名方法,支持 hmacSha1 |
timestamp | String | 必需 | 时间戳 |
clientId | String | 必需 | 本地标记。可以为 productKey 或 deviceKey |
code | Integer | 必需 | 结果返回码,200 代表请求成功执行 |
生成sign
需要使用params
结构体中,除去sign
和signmethod
之外其他的键值对。其步骤如下:
将除了
sign
和signmethod
之外其他的键值对,按照键的首字母顺序,以“键名+值”“键名+值”“键名+值”的方式拼接成一字符串(无需“+”号或者任何其他表示拼接的符号)例如,在上述请求中,
params
中被抽取的字段应拼接成如下字符串:clientIdxxxxxxdeviceKeydeviceKey1234productKey1234556554timestamp1524448722000
将该字符串与子设备的 device secret 拼接,再使用
signmethod
中规定的方法进行签名运算,并将所有英文字符转换为大写字母。假定子设备的 device secret 为 xyz123,则其运算表达式如下:sign=uppercase(hmacsha1(clientId123deviceKeytestproductKey123timestamp1524448722000xyz123))