子设备上线之前,需在物联网平台为子设备注册身份,建立子设备与网关的拓扑关系。子设备上线时,物联网平台会根据拓扑关系进行子设备身份校验,以确定子设备是否具备使用网关通道的能力。

说明 子设备上下线消息,只支持QoS=0,不支持QoS=1。

子设备上线

说明 一个网关下,同时在线的子设备数量不能超过1500。若在线子设备数量达到1500个后,新的子设备上线请求将被拒绝。

数据上行

  • 请求Topic:/ext/session/${productKey}/${deviceName}/combine/login
  • 响应Topic:/ext/session/${productKey}/${deviceName}/combine/login_reply
说明 因为子设备通过网关通道与物联网平台通信,以上Topic为网关设备的Topic。Topic中变量 ${productKey}${deviceName}需替换为网关设备的对应信息。

Alink请求数据格式

{
  "id": "123",
  "params": {
    "productKey": "123",
    "deviceName": "test",
    "clientId": "123",
    "timestamp": "123",
    "signMethod": "hmacmd5",
    "sign": "xxxxxx",
    "cleanSession": "true"
  }
}
说明 消息体中,参数 productKeydeviceName的值是子设备的对应信息。

Alink响应数据格式

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

请求参数说明

参数 类型 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
params Object 请求入参。
deviceName String 子设备的设备名称。
productKey String 子设备所属的产品Key。
sign String

子设备签名。签名方法与直连设备签名方法相同。

签名方法:

  1. 将所有提交给服务器的参数(signsignMethodcleanSession除外)按照字母顺序排序,然后将参数和值依次拼接(无拼接符号)。
  2. 对加签内容,通过signMethod指定的加签算法,并使用设备的DeviceSecret值,进行签名计算。

示例如下:

sign= hmac_md5(deviceSecret, clientId123deviceNametestproductKey123timestamp123)
signMethod String 签名方法,支持hmacSha1,hmacSha256,hmacMd5,Sha256。
timestamp String 时间戳。
clientId String 设备端标识。可以为设备的productKey&deviceName。
cleanSession String
  • 如果取值是true,则清理所有子设备离线时的消息,即所有未接收的QoS1消息将被清除。
  • 如果取值是false,则不清理子设备离线时的消息。

响应参数说明

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

错误信息

错误码 消息 描述
460 request parameter error 请求参数错误。
429 rate limit, too many subDeviceOnline msg in one minute 单个设备认证过于频繁被限流。
428 too many subdevices under gateway 网关下同时在线子设备过多。
6401 topo relation not exist 网关和子设备没有拓扑关系。
6100 device not found 子设备不存在。
521 device deleted 子设备已被删除。
522 device forbidden 子设备已被禁用。
6287 invalid sign 子设备密码或者签名错误。

子设备下线

数据上行

  • 请求Topic:/ext/session/{productKey}/{deviceName}/combine/logout
  • 响应Topic:/ext/session/{productKey}/{deviceName}/combine/logout_reply
说明 因为子设备通过网关通道与物联网平台通信,以上Topic为网关设备的Topic。Topic中变量 ${productKey}${deviceName}需替换为网关设备的对应信息。

Alink请求数据格式

{
  "id": 123,
  "params": {
    "productKey": "xxxxx",
    "deviceName": "xxxxx"
  }
}
说明 消息体中,参数 productKeydeviceName的值是子设备的对应信息。

Alink响应数据格式

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

请求参数说明

参数 类型 说明
id String 消息ID号。需定义为String类型的数字,且设备维度唯一。
params Object 请求入参。
deviceName String 子设备的设备名称。
productKey String 子设备所属的产品Key。

响应参数说明

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

错误信息

错误码 消息 描述
460 request parameter error 请求参数错误。
520 device no session 子设备会话不存在。

子设备接入具体可参考设备身份注册,错误码参考错误码说明