子设备上线

更新时间:

子设备上线

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

说明

  • 子设备上下线、批量上下线消息,只支持QoS=0,不支持QoS=1。

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

  • 发送子设备批量上下线请求时,单个批次上下线的子设备数量不超过50个。

  • 设备批量上下线请求结果为全部成功或全部失败,失败时的data响应参数中会包含具体的设备信息。

子设备上线

数据上行:

  • 请求Topic:/ext/session/${productKey}/${deviceName}/combine/login

  • 响应Topic:/ext/session/${productKey}/${deviceName}/combine/login_reply

说明

因为子设备通过网关通道与物联网平台通信,以上Topic为网关设备的Topic。Topic中变量${productKey}${deviceName}需替换为网关设备的对应信息。

请求数据格式:

{
  "id": "123",
  "params": {
    "productKey": "al12345****",
    "deviceName": "device1234",
    "clientId": "al12345****&device1234",
    "timestamp": "1581417203000",
    "signMethod": "hmacmd5",
    "sign": "9B9C732412A4F84B981E1AB97CAB****",
    "cleanSession": "true"
  }
}
说明

消息体中,参数productKeydeviceName的值是子设备的对应信息。

参数说明:

参数

类型

说明

id

String

消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。

params

Object

请求入参,包含的具体参数见下表params。

params参数说明:

参数

类型

说明

deviceName

String

子设备的设备名称。

productKey

String

子设备所属的产品的ProductKey。

sign

String

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

签名方法:

  1. 将所有提交给服务器的参数(signsignMethodcleanSession除外)按照字母顺序排序,然后将参数和值依次拼接(无拼接符号)。

  2. 对加签内容,通过signMethod指定的加签算法,并使用设备的DeviceSecret值,进行签名计算。

计算结果作为sign的取值。

sign值计算方法示例如下:

hmac_md5(deviceSecret, clientIdal12345****&device1234deviceNamedevice1234productKeyal12345****timestamp1581417203000)

signMethod

String

签名方法,支持hmacSha1、hmacSha256、hmacMd5和Sha256。

timestamp

String

毫秒级时间戳。

clientId

String

设备端标识。可以为productKey&deviceName

cleanSession

String

  • 如果取值是true,则清理所有子设备离线时的消息,即所有未接收的QoS1消息将被清除。

  • 如果取值是false,则不清理子设备离线时的消息。

Alink响应数据格式:

{
  "id":"123",
  "code":200,
  "message":"success"
  "data":{
      "deviceName": "device1234",
      "productKey": "al12345****"
    }
}

请求参数说明:

参数

类型

说明

id

String

消息ID,String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。

code

Integer

返回结果,200代表成功。

message

String

返回结果信息。

data

Object

请求成功或失败时返回的子设备信息,具体参数请参见下表data。

参数

类型

说明

deviceName

String

子设备的设备名称。

productKey

String

子设备所属产品的密钥。

错误信息:

错误码

错误信息

描述

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

子设备密码或者签名错误。

子设备批量上线

重要

单次最多可请求50个子设备上线。

数据上行:

  • 请求Topic:/ext/session/${productKey}/${deviceName}/combine/batch_login

  • 响应Topic:/ext/session/${productKey}/${deviceName}/combine/batch_login_reply

说明

因为子设备通过网关通道与物联网平台通信,以上Topic为网关设备的Topic。Topic中变量${productKey}${deviceName}需替换为网关设备的对应信息。

请求数据格式:

{
  "id": "123",
  "params":{ 
    "deviceList":[{
      "productKey": "al12345****", 
      "deviceName": "device1234",
      "clientId": "al12345****&device1234",
      "timestamp": "1581417203000", 
      "cleanSession": "false",
      "signMethod": "hmacmd5",
      "sign": "9B9C732412A4F84B981E1AB97CAB****",
    }, {
      "productKey": "al12345****", 
      "deviceName": "device4321",
      "clientId": "al12345****&device4321",
      "timestamp": "1581417203000", 
      "cleanSession": "true",
      "signMethod": "hmacmd5",
      "sign": "9B9C732412A4F84B981E1AB97CAB****",
    }]
  }
}
说明

消息体中,参数productKeydeviceName的值是子设备的对应信息。

参数

类型

说明

id

String

消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。

params

Object

请求入参,其中deviceList参数包含要上线的子设备认证参数列表,包含的具体参数见下表deviceList。

参数

类型

说明

deviceName

String

子设备的设备名称。

productKey

String

子设备所属的产品的ProductKey。

sign

String

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

签名方法:

  1. 将所有提交给服务器的参数(signsignMethodcleanSession除外)按照字母顺序排序,然后将参数和值依次拼接(无拼接符号)。

  2. 对加签内容,通过signMethod指定的加签算法,并使用设备的DeviceSecret值,进行签名计算。

计算结果作为sign的取值。

sign值计算方法示例如下:

hmac_md5(deviceSecret, clientIdal12345****&device1234deviceNamedevice1234productKeyal12345****timestamp1581417203000)

signMethod

String

签名方法,支持hmacSha1、hmacSha256、hmacMd5和Sha256。

timestamp

String

毫秒级时间戳。

clientId

String

设备端标识。可以为productKey&deviceName

cleanSession

String

  • 如果取值是true,则清理所有子设备离线时的消息,即所有未接收的QoS1消息将被清除。

  • 如果取值是false,则不清理子设备离线时的消息。

响应数据格式:

{
  "id":"123",
  "code":"200",
  "message":"success",
  "data":[{
    "productKey": "al12345****",
    "deviceName": "device1234"
  },{
    "deviceName": "device4321",
    "productKey": "al12345****"
  }]
}

参数说明:

参数

类型

说明

id

String

消息ID,String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。

code

Integer

返回结果,200代表成功。

message

String

返回结果信息。

data

Object

请求成功或失败时返回的子设备信息,具体参数请参见下表data。

data参数说明:

参数

类型

说明

deviceName

String

子设备的设备名称。

productKey

String

子设备所属产品的密钥。

错误信息:

错误码

错误信息

描述

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

子设备密码或者签名错误。