在线状态 - 子设备上线
子设备上线
sys/{product_id}/{device_id}/thing/gateway/login
说明:
Topic中的产品ID及设备ID均为网关设备的相关信息。对于网关及直连设备来说,其在线状态取决于其与平台MQTT的连接状态,而对子设备来说,则必须通过网关代理上报子设备上下线消息
示例:
{
"id": "123",
"params": [
{
"productId": "pk",
"deviceId": "device",
"clientId": "12345",
"timestamp": "1581417203000",
"signMethod": "hmacmd5",
"sign": "DE9B6C009C7DAC6279C89FD998B6****"
}
]
}
字段说明
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号。String类型,且每个消息ID在当前设备中具有唯一性。 |
params | Object[] | 请求入参 |
productId | String | 子设备的产品ID |
deviceId | String | 子设备的设备ID |
clientId | String | 客户端标识,视作加签的盐,可自定义 |
timestamp | String | 毫秒级时间戳 |
signMethod | String | 表示签名算法类型。支持hmacmd5,hmacsha1和hmacsha256 |
sign | String | 子设备签名。签名方法与直连设备签名方法相同,具体参考下面加签说明 |
加签说明
- 将所有提交给服务器的参数(sign,signMethod除外),按照字母顺序排序,然后将参数和值依次拼接(无拼接符号)
- 对加签内容,通过signMethod指定的加签算法,并使用设备的DeviceSecret值,进行签名计算。计算结果作为sign的取值。
例子
假设clientId = 12345,deviceId = device, productId = pk, timestamp = 1581417203000,signmethod=hmacmd5,deviceSecret=secret
,那么加签的结果是二进制转16制字符串,结果为hmacmd5("secret","clientId12345deviceIddeviceproductIdpktimestamp1581417203000").toHexString()
,即DE9B6C009C7DAC6279C89FD998B6994F
子设备上线回复
sys/{product_id}/{device_id}/thing/gateway/login/response
返回示例:
{
"id": "123",
"data": [
{
"deviceId": "123",
"code": 200,
"msg": "success"
},
{
"deviceId": "123456",
"code": 40001,
"msg": "sign error"
}
]
}
说明
服务端响应子设备上线结果
业务状态码说明
状态码 | 说明 |
---|---|
200 | 操作成功 |
40000 | 通用错误信息,即除其他错误之外的错误类型 |
40001 | 签名错误 |
40002 | 设备不存在 |
40003 | 设备已禁用 |
40004 | 非当前设备的子设备 |
字段说明:
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号,与子设备上线请求时携带的消息id相同 |
data | Object[] | 每个设备对应的详细上线结果 |
deviceId | String | 子设备ID |
code | Integer | 状态码,参考业务状态码说明 |
msg | String | 子设备上线成功时固定为success,子设备上线失败时为详细失败原因 |
最后修改时间: 6 个月前