动态注册 - 子设备动态注册
子设备的MQTT动态注册
sys/{product_id}/{device_id}/thing/gateway/register
说明:
已连接到平台的网关设备,可以将子设备动态注册到平台
注意:
当子设备的产品ID及设备ID匹配到平台已有的设备时,平台直接返回已注册的设备的相关信息。当注册未在平台存在的设备时,则会将子设备添加到对应的网关设备
示例:
{
"id": "123",
"params": [
{
"productId": "product1",
"deviceId": "device1",
"deviceName": "网关子设备1",
"random": "123456",
"signMethod": "hmacmd5",
"sign": "7770ce00226ce26eb0c28c401f0090f4"
}
]
}
字段说明
参数 | 类型 | 是否必传 | 说明 |
---|---|---|---|
id | String | 是 | 消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。 |
params | Object[] | 是 | 请求入参 |
productId | String | 是 | 子设备的产品ID |
deviceId | String | 是 | 子设备的设备ID |
deviceName | String | 否 | 子设备的设备名称,若不传则默认与设备ID一致 |
random | String | 是 | 随机字符串 |
signMethod | String | 是 | 签名方法,目前支持hmacmd5、hmacsha1、hmacsha256 |
sign | String | 是 | 签名结果,查看下方签名说明 |
加签说明
- 将所有提交给服务器的参数(sign,signMethod除外),按照字母顺序排序,然后将参数和值依次拼接(无拼接符号)
- 对加签内容,通过signMethod指定的加签算法,并使用设备所属产品的ProductSecret值,进行签名计算。计算结果作为sign的取值。
- 加签时,若deviceName为空,则使用空字符串拼接,即只拼接字段名称deviceName
例子
deviceId=device1, deviceName=网关子设备1, productId=product1, random=123456, signMethod=hmacmd5, productSecret=W5oRiVaAbFWF64EQ
加签结果为:
hmacmd5("W5oRiVaAbFWF64EQ","deviceIddevice1deviceName网关子设备1productIdproduct1random123456").toHexString()
即:5ac3fc4295a02be506ebbdebfa1baba6
子设备的MQTT动态注册回复
sys/{product_id}/{device_id}/thing/gateway/register/response
返回示例:
{
"id": "123",
"data": [
{
"productId": "a1234******",
"deviceId": "deviceName1234",
"deviceSecret": "xxxxxx",
"code": 200,
"msg": "success"
},
{
"productId": "a1234******",
"deviceId": "deviceName1234",
"deviceSecret": "xxxxxx",
"code": 40001,
"msg": "sign result error"
}
]
}
说明
服务端响应子设备的MQTT动态注册结果
业务状态码说明
状态码 | 说明 |
---|---|
200 | 操作成功 |
40000 | 通用错误信息,即除其他错误之外的错误类型 |
40001 | 产品信息不存在 |
40002 | 设备ID已存在于其他产品 |
40003 | 设备编码不符合规范 |
40004 | 签名错误 |
40005 | 网关设备不存在 |
40006 | 实例不存在 |
40007 | 产品未开启动态注册开关 |
40008 | 设备存在且已激活 |
40009 | 实例容量超过限制 |
40010 | 设备存在但是认证方式不是密钥认证 |
40011 | 设备存在并已经存在父设备 |
40012 | 网关产品不存在 |
40013 | 设备名称不符合规范 |
字段说明:
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号,与子设备的MQTT动态注册请求时携带的消息id相同 |
data | Object[] | 每个设备对应的详细注册结果 |
productId | String | 注册成功的子设备的产品ID |
deviceId | String | 注册成功的子设备的设备ID |
deviceSecret | String | 加密之后的设备密钥(加密方式:使用网关产品密钥进行的AES-128加密,加密模式为CBC,填充方案是PKCS#7填充,IV为密钥字符串中的字符倒序排列的结果),注册失败时此字段为空 |
code | Integer | 状态码,参考业务状态码说明 |
msg | String | 注册成功时固定为success,注册失败时为详细失败原因 |
修改于 2 个月前