2023新改版的中国移动物联网开放平台OneNET设备接入上报笔记
1 创建产品与设备
自从中移动2023年改了OneNET平台和协议,和以往都有所不同。记录一下本人的实验过程,有几个关键地方。
1.1 创建产品
进入Studio平台后,展开菜单栏中的「设备接入与管理」,点击「设备管理」,进入设备列表页面。
点击「添加设备」,选中单个设备(默认方式)输入设备详情,点击「确定」创建设备。
按照提示填写产品的基本信息,进行产品创建;请按照提示尽可能完整、全面地填写相应内容,这样更方便您后期对产品进行管理,接入协议选择 MQTT 协议。
1.2 创建设备
进入Studio平台后,展开菜单栏中的「设备接入与管理」,点击「设备管理」,进入设备列表页面。
点击「添加设备」,选中单个设备(默认方式)输入设备详情,点击「确定」创建设备。
编辑「设备名称」与 「设备描述」,点击「确定」,完成添加设备。
特别注意的不同:新版onenet设备添加和物模型添加都与旧版不同。
2 设备侧或MQTTfx连接
**• 服务器地址: mqtts.heclouds.com,端口:1883
• 用户名: 填写产品ID
• 密码: 填写token ,算法参见token有关安全认证资料。**
• MQTT版本:必须为 3.1.1
3 设备连接
设备连接在单片机初始化时,使用AT指令进行连接,请参考有关资料。
4 属性上报
4.1 订阅属性上报结果通知topic
为了确保设备上传消息确实被平台所接受处理,设备可以订阅系统 topic 获取属性上报结果消息,属性上报回复topic为:$sys/{pid}/{device-name}/thing/property/post/reply
4.2 发布属性上报topic
属性上报的topic为:$sys/{pid}/{device-name}/thing/property/post
上报数据成功后,订阅的属性上报会返回success
OneJSON请求数据格式:
{
“id”: “123”,
“version”: “1.0”,
“params”: {
“CurrentVoltage”: {
“value”: 5.0,
“time”: 1660720877111
},
“CurrentTemperature”: {
“value”: 23.6,
“time”: 1660720877111
}
}
}
特别注意:OneJSON的上报属性格式与以往不同,如果仍按以前单片机侧做法,造成很多错误。
(https://i-blog.csdnimg.cn/direct/feb666a7373a466bbd1538789502c77c.png)
我们进入产品管理-详情页面,选择两个属性的标识符,如当前电压 CurrentVoltage 和当前温度 CurrentTemperature。
页面设备管理-设备详情,就能够查看设备上报的属性数据。
5 属性下发
5.1 订阅设备属性设置topic
设备侧需要收到平台下发的数据,需要订阅:$sys/{pid}/{device-name}/thing/property/set
在页面运维监控-设备调试中-下行数据调试,可进行设置设备属性。
5.2 发布设备属性设置结果通知topic
topic: $sys/{pid}/{device-name}/thing/property/set_reply
{
“id”: “2”,
“code”:200,
“msg”:“success”
}
其中id为下行数据的id,需要匹配,code为200代表成功,msg可以自定义。
6 事件上报
6.1 订阅事件上报结果通知topic
为了确保事件上传消息确实被平台所接受处理,设备可以订阅系统 topic 获取事件上报结果消息,属性上报回复topic为:$sys/{pid}/{device-name}/thing/event/post/reply。
上报数据成功后,订阅的事件上报会返回success。
6.2 发布事件上报topic
上报事件topic为:$sys/{pid}/{device-name}/thing/event/post
OneJSON请求数据格式:
{
“id”: “123”,
“version”: “1.0”,
“params”: {
“HumAlarm”: {
“value”: {
“Type”: 1
},
“time”: 1660720877111
}
}
}
仍然特别注意的就是OneJSON数据流格式,与以往单片机onenet代码会有区别。
7 获取设备期望值
7.1 订阅获取设备期望值结果通知topic
设备侧需要收到平台下发的期望值,需要订阅:$sys/{pid}/{device-name}/thing/property/desired/get/reply
7.2 发布设备获取期望值topic
获取设备期望值的topic为:$sys/{pid}/{device-name}/thing/property/desired/get
OneJSON数据格式:
{
“id” : “123”,
“version”:“1.0”,
“params” : [
“MaxTempSet”
]
}
特别标注:本篇文章和实验参照了Leung_ManWah笔记:https://www.jianshu.com/p/e38fe45fead5