子设备身份注册后,需由网关向物联网平台上报网关与子设备的拓扑关系,然后进行子设备上线。

子设备上线过程中,物联网平台会校验子设备的身份和与网关的拓扑关系。所有校验通过,才会建立并绑定子设备逻辑通道至网关物理通道上。子设备与物联网平台的数据上下行通信与直连设备的通信协议一致,协议上不需要露出网关信息。

删除拓扑关系后,子设备不能再通过网关上线。系统将提示拓扑关系不存在,认证不通过等错误。

添加设备拓扑关系

数据上行

  • 请求Topic:/sys/{productKey}/{deviceName}/thing/topo/add
  • 响应Topic:sys/{productKey}/{deviceName}/thing/topo/add_reply

Alink请求数据格式

{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554",
      "sign": "xxxxxx",
      "signmethod": "hmacSha1",
      "timestamp": "1524448722000",
      "clientId": "xxxxxx"
    }
  ],
  "method": "thing.topo.add"
}

Alink响应数据格式

{
  "id": "123",
  "code": 200,
  "data": {}
}

请求参数说明

参数 类型 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
version String 协议版本号,目前协议版本号为1.0
params List 请求入参。
deviceName String 子设备的名称。
productKey String 子设备的产品Key。
sign String

签名。

加签算法:

  1. 将所有提交给服务器的参数(signsignMethod除外)按照字母顺序排序,然后将参数和值依次拼接(无拼接符号)。
  2. 对加签内容,需通过signMethod指定的加签算法,使用设备的DeviceSecret值,进行签名计算。
签名计算示例:
sign= hmac_md5(deviceSecret, clientId123deviceNametestproductKey123timestamp1524448722000)
signmethod String 签名方法,支持hmacSha1、hmacSha256、hmacMd5、Sha256。
timestamp String 时间戳。
clientId String 设备本地标记,非必填。可以设置为具体的productKey&deviceName。
method String 请求方法,取值:thing.topo.add

响应参数说明

参数 类型 说明
id String 消息ID,String类型的数字。
code Integer 返回结果,200代表成功。
data Object 请求成功时的返回结果。

错误信息

错误码 消息 描述
460 request parameter error 请求参数错误。
6402 topo relation cannot add by self 设备不能把自己添加为自己的子设备。
401 request auth error 签名校验授权失败。

删除设备的拓扑关系

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

数据上行

  • 请求Topic:/sys/{productKey}/{deviceName}/thing/topo/delete
  • 响应Topic:/sys/{productKey}/{deviceName}/thing/topo/delete_reply

Alink请求数据格式

{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ],
  "method": "thing.topo.delete"
}

Alink响应数据格式

{
  "id": "123",
  "code": 200,
  "data": {}
}

请求参数说明

参数 类型 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
version String 协议版本号,目前协议版本号为1.0
params List 请求参数。
deviceName String 子设备名称。
productKey String 子设备产品Key。
method String 请求方法。取值thing.topo.delete

响应参数说明

参数 类型 说明
id String 消息ID,String类型的数字。
code Integer 返回结果,200代表成功。
data Object 请求成功时的返回结果。

错误信息

错误码 消息 描述
460 request parameter error 请求参数错误。
6100 device not found 设备不存在。

获取设备的拓扑关系

数据上行

  • 请求Topic:/sys/{productKey}/{deviceName}/thing/topo/get
  • 响应Topic:/sys/{productKey}/{deviceName}/thing/topo/get_reply

网关类型的设备,可以通过该Topic获取该设备和子设备的拓扑关系。

Alink请求数据格式

{
  "id": "123",
  "version": "1.0",
  "params": {},
  "method": "thing.topo.get"
}

Alink响应数据格式

{
  "id": "123",
  "code": 200,
  "data": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ]
}

请求参数说明

参数 类型 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
version String 协议版本号,目前协议版本号为1.0
params Object 请求参数,可为空。
method String 请求方法,取值thing.topo.get

响应参数说明

参数 类型 说明
id String 消息ID,String类型的数字。
code Integer 返回结果,200代表成功。
data Object 请求成功时的返回结果。
deviceName String 子设备的名称。
productKey String 子设备的产品Key。

错误信息

错误码 消息 描述
460 request parameter error 请求参数错误。

发现设备列表上报

数据上行

  • 请求Topic:/sys/{productKey}/{deviceName}/thing/list/found
  • 响应Topic:/sys/{productKey}/{deviceName}/thing/list/found_reply

在一些场景下,网关可以发现新接入的子设备。发现后,需将新接入子设备的信息上报云端,然后通过数据流转到第三方应用,选择将哪些子设备接入该网关。

Alink请求数据格式

{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ],
  "method": "thing.list.found"
}

Alink响应数据格式

{
  "id": "123",
  "code": 200,
  "data":{}
}

请求参数说明

参数 类型 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
version String 协议版本号,目前协议版本号为1.0
params Object 请求参数,可为空。
method String 请求方法,取值thing.list.found
deviceName String 子设备的名称。
productKey String 子设备的产品Key。

响应参数说明

参数 类型 说明
id String 消息ID,String类型的数字。
code Integer 返回结果,200代表成功。
data Object 请求成功时的返回结果。

错误信息

错误码 消息 描述
460 request parameter error 请求参数错误。
6250 product not found 上报的子设备产品不存在。
6280 devicename not meet specs 上报的子设备的名称不符规范,设备名称支持英文字母、数字和特殊字符-_@.:,长度限制4~32。

通知网关添加设备拓扑关系

数据下行

  • 请求Topic:/sys/{productKey}/{deviceName}/thing/topo/add/notify
  • 响应Topic:/sys/{productKey}/{deviceName}/thing/topo/add/notify_reply

通知网关设备对子设备发起添加拓扑关系,可以配合发现设备列表上报功能使用。可以通过数据流转获取设备返回的结果,数据流转Topic为/{productKey}/{deviceName}/thing/downlink/reply/message

Alink请求数据格式

{
  "id": "123",
  "version": "1.0",
  "params": [
    {
      "deviceName": "deviceName1234",
      "productKey": "1234556554"
    }
  ],
  "method": "thing.topo.add.notify"
}

Alink响应数据格式

{
  "id": "123",
  "code": 200,
  "data": {}
}

请求参数说明

参数 类型 说明
id String

数据下行消息ID号,由物联网平台生成。

version String 协议版本号,目前协议版本号为1.0
params Object 请求参数,可为空。
method String 请求方法,取值thing.topo.add.notify
deviceName String 子设备的名称。
productKey String 子设备的产品Key。

响应参数说明

参数 类型 说明
id String 消息ID,String类型的数字。
code Integer 返回结果,200代表成功。
data Object 请求成功时的返回结果。