数据格式
数据点 topic 簇 topic 列表如下:
系统topic | 用途 | QoS | 可订阅 | 可发布 |
---|---|---|---|---|
$sys/{pid}/{device-name}/dp/post/json | 设备上传数据点 | 0/1 | √ | |
$sys/{pid}/{device-name}/dp/post/json/accepted | 系统通知"设备上传数据点成功" | 0 | √ | |
$sys/{pid}/{device-name}/dp/post/json/rejected | 系统通知"设备上传数据点失败" | 0 | √ |
通常我们使用$sys/{pid}/{device-name}/dp/post/json` 这个系统topic来发布消息即可。
对于topic中的payload ONENET做了一些限制,如不按照规定格式进行消息的发布,服务器会将本客户机踢下线。
消息中payload字段数据内容仅支持json格式:
{
"id": 123,
"dp": {
"temperatrue": [{
"v": 30,
"t": 1552289676
}],
"power": [{
"v": 4.5,
"t": 1552289676
}],
"status": [{
"v": {
"color": "blue"
},
"t": 1552289677
},
{
"v": {
"color": "red"
},
"t": 1552289678
}
]
}
}
其中,参数说明如下:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
id | int | 是 | 消息ID,大于0的整数,数值范围为,4字节有符号数取值范围 |
dp | object | 是 | 数据点内容,key-value格式,key为数据流名称,value为list格式的一个或者多个数据点值 上例中向temperatrue、power、status三个数据流中上传带时间戳的数据 |
v | - | 是 | 数据点值,可以为int/float/string/object多种格式 |
t | int | 否 | 数据点时间戳,unix时间,单位为秒,若不携带,则系统将以数据到达平台时间作为其数据时间 |
设备数据点上传,支持 QoS1,若 publish QoS=1,则平台回复 publish ack
平台通知上传结果
消息处理完成后,平台通过系统 topic 向设备发送上传结果通知,若设备订阅了该 topic,则能收到该消息
当上传数据处理成功时
返回消息至: s y s / sys/ sys/{pid}/${device-name}/dp/post/json/accepted
数据格式为:
{
"id": 123 //对应数据上报时的消息ID
}
当上传数据处理失败时
返回消息至: s y s / sys/ sys/{pid}/${device-name}/dp/post/json/rejected
若不能成功解析合法id,错误时,返回数据格式为:
{
"id": -1,
"err_code": 98,
"err_msg":"Illegal Data"
}
若能成功解析合法id,由其他格式问题导致的错误,返回数据格式为:
{
"id": 123,
"err_code": 98,
"err_msg":"Illegal Data"
}
错误码
上传数据处理失败时,错误码如下:
错误码 err_code | 错误消息 err_msg | 说明 |
---|---|---|
98 | Illegal Data | payload格式有误,平台解析失败 |
设备接入项
-
接入ip和port为:
正式环境:183.230.40.16:8883
服务器IP | 183.230.40.96 | |
---|---|---|
服务器端口 | 1883 | |
Client ID | 设备名称 | |
User Name | 产品ID | |
PassWord | 需要使用Token工具生成 |
- Password计算方式请参考以下链接:
https://open.iot.10086.cn/doc/book/easy-manual/auth.html
Token 子项说明:
名称 | 类型 | 是否必须 | 参数说明 | 参数示例 |
---|---|---|---|---|
version | string | 是 | 参数组版本号,日期格式,目前仅支持"2018-10-31",Token工具会自动生成此项。 | 2018-10-31 |
res | string | 是 | 访问资源 resource 格式为:父资源类/父资源ID/子资源类/子资源ID 见res使用场景说明 | products/123123 products/123123/devices/78329710 mqs/osndf09nand9f21390 |
et | int | 是 | 访问过期时间 expirationTime,unix时间 当一次访问参数中的et时间小于当前时间时,平台会认为访问参数过期从而拒绝该访问 | 1537255523 表示:北京时间 2018-09-18 15:25:23 |
method | string | 是 | 签名方法 signatureMethod 支持md5、sha1、sha256 | sha256 |
sign | string | 是 | 签名结果字符串 signature |
res格式:
场景 | res参数格式 | 示例 | 说明 |
---|---|---|---|
API访问 | products/{pid} | products/123123 | |
设备连接 | products/{pid}/devices/{device_name} | products/123123/devices/mydev | 需使用设备级密钥 |
Token工具各项格式:
名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
res | string | 是 | 访问资源 resource 格式为:products/{products_id}/devices/{device_name} |
et | int | 是 | 访问过期时间 expirationTime,unix时间 当一次访问参数中的et时间小于当前时间时,平台会认为访问参数过期从而拒绝该访问,1537255523 表示:北京时间 2018-09-18 15:25:23(使用:1879077446即可) |
key | string | 是 | Token工具使用的时候需要添加,内容为设备详情页面的key |
method | string | 是 | md5 |
中移官方文档:
https://open.iot.10086.cn/bbs/thread-36330-1-1.html