添加子设备拓扑关系


网关类型的设备,可以通过该 Topic 上行请求,添加它和子设备之间的拓扑关系。


上行

  • 请求 TOPIC: /sys/{productKey}/{deviceKey}/thing/topo/add

  • 响应 TOPIC: /sys/{productKey}/{deviceKey}/thing/topo/add_reply


备注

TOPIC 中的 productKeydeviceKey 为网关设备的 product key 和 device key。

请求数据格式


{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceKey": "yourDeviceKey",
      "productKey": "yourProductKey",
      "sign": "theSignature",
      "signmethod": "hmacSha1",
      "timestamp": "1524448722000",
      "clientId": "theSubDeviceId"
    }
  ],
  "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


生成sign需要使用params结构体中,除去signsignmethod之外其他的键值对。其步骤如下:

  1. 将除了signsignmethod之外其他的键值对,按照键的首字母顺序,以“键名+值”“键名+值”“键名+值”的方式拼接成一字符串(无需“+”号或者任何其他表示拼接的符号)

    例如,在上述请求中,params中被抽取的字段应拼接成如下字符串: clientIdxxxxxxdeviceKeydeviceKey1234productKey1234556554timestamp1524448722000

  2. 将该字符串与子设备的 device secret 拼接,再使用 signmethod 中规定的方法进行签名运算,并将所有英文字符转换为大写字母。假定子设备的 device secret 为 xyz123,则其运算表达式如下:

    sign=uppercase(hmacsha1(clientId123deviceKeytestproductKey123timestamp1524448722000xyz123))

响应参数说明


参数

类型

描述

code

Integer

结果返回码,200 代表请求成功执行

结果返回码


返回码

错误消息

释义

1255

add topo failure, [details]

部分或者全部子设备添加到网关失败,具体哪些子设备的topo添加失败,需要查看 具体错误信息 [1]