添加子设备拓扑关系

网关类型的设备,可以通过该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结构体中,除去signsignmethod之外其他的键值对。其步骤如下:

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

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

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

    sign=uppercase(hmacsha1(clientId123deviceKeytestproductKey123timestamp1524448722000xyz123))

结果返回码

返回码

错误消息

释义

1255

add topo failure, [details]

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