上线子设备


在子设备上线前,需要确保子设备身份已经在 EnOS 云端中注册,并在 Edge 中添加拓扑关系。云端需要根据拓扑关系对子设备进行身份校验,以确定子设备具有使用网关通道的能力,才会上线该子设备。

上行

  • 请求 TOPIC: /ext/session/{productKey}/{deviceKey}/combine/login

  • 响应 TOPIC: /ext/session/{productKey}/{deviceKey}/combine/login_reply

上述 Topic 中包含的均为网关设备的 productKey 和 deviceKey。

请求数据格式

{
    "id":"123",
    "params":{
        "productKey":"123", //子设备的 product key
        "deviceKey":"test", //子设备的 device key
        "clientId":"123",
        "timestamp":"123",
        "signMethod":"hmacmd5",
        "sign":"xxxxxx",
        "cleanSession":"true"
    },
    "method":"combine.login"

}

响应数据格式

{
 "id":"123",
 "code":200,
 "message":"success",
 "data": {
      "assetId": "t5CM9W2b",
      "productKey": "123",
      "deviceKey": "test"
  }
}



所有发往 EnOS 云端的参数都会被加密,除了 sign 和 signmethod 之外。EnOS 云端会将参数按照字母顺序排序,然后将参数和值依次拼接(无拼接符号)。对加签内容,需使用 signMethod 指定的加签算法进行加签。

例如,在如下 request 请求中,对 params 中除了 cleanSession 以外的参数按照字母顺序依次拼接后进行加签。

sign=uppercase(hmacsha1( clientId123deviceKeytestproductKey123timestamp123{deviceSecret}))



参数说明

参数

类型

是否必需

描述

id

String

可选

消息 ID 号,保留值。

params

List

必需

子设备上线的参数

deviceKey

String

必需

子设备的 deviceKey

productKey

String

必需

子设备的 productKey

sign

String

必需

子设备签名,规则与网关相同。

signmethod

String

必需

签名方法,支持 hmacSha1

timestamp

String

必需

时间戳

clientId

String

必需

设备端标识,可以为 productKeydeviceName

cleanSession

String

必需

值为 truetrue 代表清理所有子设备离线消息,即 QoS1 的所有未接收内容。

method

String

必需

请求方法

message

String

必需

结果返回信息

code

Integer

必需

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

data

JSON

可选

返回的详细信息,JSON 格式。

结果返回码

返回码

错误消息

释义

705

It failed to query device, not existed this device

子设备不存在

723

Device is disable

子设备被禁用

770

Dynamic activate is not allowed

该产品未启用动态激活

771

Sub device cannot connect to mqtt broker directly

子设备不能与 EnOS 云端直连

740

Sub device not belong the gateway

该设备并非该网关的子设备

742

Sign check failed

Hash 签名验证失败

746

The device must login by ssl

该产品启用了证书双向认证