MCU通过NB模组LWM2M方式连接ONENET 实践前言, ONEnet 连接协议众多, 但是对LWM2M介绍不祥, 大多实践以MQTT为 例. 介绍LWM2M时又以IPSO数据协议为例. IPSO的问题在于无法实现LBS定位所需的ONEJSON. 所以就有一个办法比较 合适, 那就是自定义数据格式, 这种模式下, MCU通过AT指令传输字符串, onenet服务器中转的时候,先用我们提供的脚本翻译 为onejson,再解析后更新到服务器上的设备数据库.我们知道LWM2M是通过 ObjectID, InstanceID,Reso ureID,来对应数据的. 自定义数据协议就是通过特定的ObjectID=20 来实现的, =19是给ONEJSON用的, 但是不 知道如何把Onejson套进AT命令里面.ONENET目前还在不断升级调整的过程中. 每一次大调整就导致服务IP也发生变化, 这个 要明察. 前一段时间还在推行STUDIO, 我还没搞懂,现在又说推行开放物联网平台. 但新平台又有不完善的地方, 所以我调试还是依 靠STUDIO, 搞懂了再过渡到新平台吧.产品创建 (STUDIO)注意, LBS定位属于系统功能,其他属于标准功能. 要实现LB S,目前只有POST ONEJSON的方式. 注意到上面有数据解析, 这里是做转换json的脚本. 可以从开发文档, 自定义数据格 式的最佳实践文档里面找例程.LBS_WIFI例子:{"id":"1","params":{"$OneNET_LBS_WIFI":{ "time":1684970695109,"value":{"mmac":"","macs":"38:ad:be:e9:f7:f7 ,-56|38:ad:be:e9:f7:f7,-56|38:ad:be:e9:f7:f7,-56","idfa":"","serv erip":"","smac":"","imsi":""}}},"version":"1.0"}这里id 的值不重要. Time的 值是系统值. 我在脚本里面没写这一项也会产生.在脚本草稿编写完成后,可以先模拟, 保存并发布后,可以用NB模组测试了.设备属性上报 AT+MIPLCONFIG=0,1,0,"183.230.102.118",5683\r\n ---studio的ipAT+MIP LCREATE\r\nAT+MIPLADDOBJ=0,20,2,"11",1,1\r\n // 注: 2,"11" 2个资源; 1,1=1个属性很关键0不行,1个可执行, 20必须用2个资源,如前言所述.AT+MIPLOPEN=0,86400\r\n 用收到的msgid回应OBSERVER. 因为是两个instance,所以将会收到两次:+MIPLOBSERVE: 0,10581 0,1,20,0,-1+MIPLOBSERVE: 0,171347,1,20,1,-1注意到: 105810对应inst0 171 347对应inst1分别回应它AT+MIPLOBSERVERSP=0, 105810,1\r\nAT+MIPLOBSERVERSP =0,171347,1\r\n通知属性变化 用的是inst0的msgidAT+MIPLNOTIFY=0,118172,20,0,0 ,2,9,010338adbee9f7f7c8,0,0,255\r\n解释: 2代表接下来的字符串是16进制的,不必要加双引号, 9代表字符串长度(两个符号才占一个长度), 字符串后面是: 多条消息的话剩余几条; 多条数据开头的结尾的还是中间的; 是否回应 E VENT 26 相应的数字.数据上传服务器后, 可以通过 运维监控的日志查看, 也可通过设备管理查看当前各属性.服务器对设备设置属 性在 运维监控-设备调试 里面选择产品和设备,然后选择 应用模拟, 如果产品属性里面含有可读写的物模型, 则会出现在 属性设置页里 面, 这里更改了属性就可以 点下面属性设置按钮, 右边会展示日志., 设备会收到 +MIPLWRITE: 0,40279,20,1,0,2,4,xxxx,0,0, 设备回复后, 整个过程结束. 可以查看设备日志核实. |
|