设备上线之前您需要对设备进行身份注册,标识您的设备。
概述
接入物联网平台的设备身份注册有两种方式:
一机一密:首先,在物联网平台注册设备,获取设备证书信息(ProductKey、DeviceName、DeviceSecret)作为设备唯一标识。然后,将设备证书信息预烧录到设备固件,设备在完成上线建连后,即可向物联网平台上报数据。具体内容,请参见一机一密。
设备注册认证的协议说明,见下表。
设备
支持的协议
设备端注册开发
相关文档
直连设备
MQTT
HTTPS
网关子设备
MQTT
一型一密:同一产品下设备烧录相同产品证书(ProductKey和ProductSecret)。设备所属产品需开通动态注册功能。
支持动态注册包含:
预注册:在物联网平台注册设备,设备通过动态注册获取DeviceSecret。
免预注册:无需在物联网平台注册设备,设备通过动态注册获取ClientID与DeviceToken的组合。
说明HTTPS协议不支持一型一密免预注册方式。
设备完成注册的流程,请参见一型一密。其中,网关子设备仅支持预注册方式,注册流程说明,请参见网关与子设备。
设备注册认证的协议说明,见下表。
设备
支持的协议
设备端注册开发
数据格式说明
直连设备
MQTT
HTTPS
网关子设备
MQTT
子设备的MQTT动态注册
请求Topic:
/sys/${productKey}/${deviceName}/thing/sub/register
响应Topic:
/sys/${productKey}/${deviceName}/thing/sub/register_reply
请求数据格式:
{
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"params": [
{
"deviceName": "deviceName1234",
"productKey": "a1234******"
}
],
"method": "thing.sub.register"
}
响应数据格式:
{
"id": "123",
"code": 200,
"data": [
{
"iotId": "12344",
"productKey": "a1234******",
"deviceName": "deviceName1234",
"deviceSecret": "xxxxxx"
}
]
}
参数说明如下表。
参数 | 类型 | 说明 |
id | String | 消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。 |
version | String | 协议版本号,目前协议版本号唯一取值为1.0。 |
sys | Object | 扩展功能的参数,其下包含各功能字段。 说明 使用设备端SDK开发时,如果未设置扩展功能,则无此参数,相关功能保持默认配置。 |
ack | Integer | sys下的扩展功能字段,表示是否返回响应数据。
重要 该功能配置说明,请参见物模型使用示例。 如果未配置该功能,则无此参数,云端默认返回响应数据。 |
params | List | 子设备动态注册的参数。 |
deviceName | String | 子设备的名称。 |
productKey | String | 子设备的产品ProductKey。 |
iotId | String | 设备的唯一标识ID。 |
deviceSecret | String | 设备密钥。 |
method | String | 请求方法,取值 |
code | Integer | 结果信息。 |
错误码说明如下表。
错误码 | 消息 | 描述 |
460 | request parameter error | 请求参数错误。 |
6402 | topo relation cannot add by self | 设备不能将自己添加为自己的子设备。 |
401 | request auth error | 签名校验失败。 |
直连设备的HTTPS动态注册
URL模板:
https://iot-auth.${YourRegionId}.aliyuncs.com/auth/register/device
HTTP方法:POST
请求数据格式:
POST /auth/register/device HTTP/1.1 Host: iot-auth.cn-shanghai.aliyuncs.com Content-Type: application/x-www-form-urlencoded Content-Length: 123 productKey=a1234******&deviceName=deviceName1234&random=567345&sign=adfv123hdfdh&signMethod=HmacMD5
响应数据格式:
{ "code": 200, "data": { "productKey": "a1234******", "deviceName": "deviceName1234", "deviceSecret": "adsfw******" }, "message": "success" }
参数说明如下表。
参数
类型
说明
Method
String
请求方法,只支持POST。
Host
String
HTTPS动态注册的设备接入地址,格式为
iot-auth.${YourRegionId}.aliyuncs.com
。${YourRegionId}
:请替换为您的物联网平台设备所在地域的Region ID。支持HTTPS动态注册的地域:除华北2(北京)、华南1(深圳)以外的所有地域。
Region ID表达方法,请参见支持的地域。
Content-Type
String
设备发送给物联网平台的上行数据的编码格式。
productKey
String
产品唯一标识。
deviceName
String
设备名称。
random
String
随机数。
sign
String
签名。
加签方法:
将所有提交给服务器的参数(sign、signMethod除外)按照字母顺序排序,然后将参数和值依次拼接(无拼接符号)。
通过signMethod指定的加签算法,使用产品的ProductSecret,对加签内容进行加签。
加签计算示例如下:
hmac_sha1(productSecret, deviceNamedeviceName1234productKeya1234******random123)
signMethod
String
签名方法,目前支持hmacmd5、hmacsha1、hmacsha256。
code
Integer
结果信息。
deviceSecret
String
设备密钥。