LWM2M 协议是 OMA 组织制定的轻量化的 M2M 协议,主要面向基于蜂窝的窄带物联网(Narrow Band Internet of Things, NB-IoT)场景下物联网应用,聚焦于低功耗广覆盖(LPWA)物联网(IoT)市场,是一种可在全球范围内广泛应用的新兴技术。具有覆盖广、连接多、速率低、成本低、功耗低、架构优等特点。 移动 OneNET 平台采用的是基于 NB-IOT 的 LWM2M 协议和 CoAP 协议实现 UE 与平台的通信,其中 LWM2M 协议为应用层协议,CoAP 协议为传输层协议。 1、LWM2M 协议逻辑实体与逻辑接口 (1)LwM2M 定义了三个逻辑实体: LWM2M Server :接入机,平台服务器接口; LWM2M client : 客户端,负责执行服务器 的命令和上报执行结果; Bootstrap server :引导机,负责 配置 LWM2M 客户端。 (2)这三个逻辑实体之间有4个逻辑接口: Bootstrap:Bootstrap Server 通过这个接口来配置 Clinet - 比如说 LWM2M server 的 URL 地址; Device Discovery and Registration:客户端注册到服务器并通知服务器客户端所支持的能力; Device Management and Service Enablement: LWM2M Server 发送指令给 Client 并受到回应.; Information Reporting:LWM2M Client 来上报其资源信息的,比如传感器温度。 这三个逻辑实体与四个逻辑接口之间的关系如下图: ![]() 2、LWM2M 协议栈 Lightweight M2M 协议栈结构如下图所示: ![]() 2.1 LWM2M Objects 每个 object(对象)对应客户端的某个特定功能实体。 LWM2M 规范定义了一些标准 Objects,比如: urn:oma:lwm2m:oma:2; (LWM2M Server Object,其中‘2’为object ID)。 urn:oma:lwm2m:oma:3; (LWM2M Access Control Object,其中‘3’为object ID)。 除了 LWM2M 定义的 object,IPSO 组织也定义了一些常用传感器的 object,比如: urn:oma:lwm2m:ext:3311;(IPSO Light Control,,其中‘3311’为 object ID)。 每个 object 可以有多个 resource,每个 resource 代表一项 object 属性或者功能。比如 object ID 为 3311 的传感器的部分resource描述如下表: ![]() 2.2 LWM2M Protocol LWM2M Protocol 定义了一些逻辑操作,比如 Read, Write, Execute, Create 和 Delete 等操作。通过这些逻辑操作,实现云平台与终端设备的数据交互。 3、基于LWM2M协议接入移动OneNet实例 在此我们使用北京奇迹物联的 AM20E 模块接入 OneNET 平台。接入之前,需要完成 OneNET 平台侧的用户注册和产品创建。 3.1 产品创建 1. 完成用户注册并登录后,进入开发者中心进行产品创建。 ![]() 2. 产品创建时,根据页面内容,填写您的产品信息。 ![]() 3.产品创建完成之后,添加设备,其中,AM20E 模块的 IMEI 号和 SIM 卡的 IMSI 号,可使用串口调试工具,分别通过 AT+ CGSN指令和 AT+CIMI 指令获取,并填入。 ![]() 4.产品创建并添加设备完成之后,可在设备管理界面看到所添加的设备,设备栏灰色表示离线状态。 ![]() 5.在模块侧接入流程中,当模块收到平台侧返回的注册结果+MIPLEVENT:0,6,完成注册。设备栏将显示绿色,表示上线状态。 ![]() 3.2模块接入 OneNET 平台流程 模块完成初始化流程并成功注册网络后,接入 OneNET 平台,流程图如下所示。 ![]() 上述模块接入 OneNET 平台流程图中,需要说明的是: 数据交互过程中,平台 READ/WRITE/EXECUTE/PARAMETER 操作请求、模块资源值上报、以及模块更新注册信息,这 3 个步骤不分先后顺序,所以未对其按顺序进行编号。 图中虚线箭头表示 OneNET 平台将返回响应结果+MIPLEVENT 给模块侧。+MIPLEVENT 返回值请参考 AT 指令集的说明。 3.3参考示例 1.模块初始化 AT +PBREADY AT //AT 响应正常 OK ![]() AT+CSQ +CSQ: 20,99 OK//检测CSQ 正常 ![]() AT+CEREG? +CEREG: 0,1 OK//模块注册网络正常 ![]() 2.模块接入 OneNET 平台,完成注册 AT+XIIC=1 OK//获取IP 地址 AT+XIIC? +XIIC: 1,100.103.238.182 //查询IP 地址已成功获取 OK AT+MIPLVER? //查询基础通信套件版本2.2.0 OK AT+MIPLCREATE +MIPLCREATE:0 //创建基础通信套件成功,返回<ref>为 0,0 是基础通信套件标识,后续 AT 指令都需要使用到它 OK AT+MIPLADDOBJ=0,3303,2,"11",6,1 //添加对象 3303,2 个实例,6 个属性。其中对象 Objectid3303 需遵守命名规范,请参考链接: http://www.openmobilealliance.org/wp/OMNA/LwM2M/LwM2MRegistry.html, OK AT+MIPLOPEN=0,3600 OK //模块请求注册 +MIPLEVENT:0,1 //OneNET 平台返回结果 BOOTSTRAP_START +MIPLEVENT:0,2 //OneNET 平台返回结果 BOOTSTRAP_SUCCESS +MIPLEVENT:0,4 //OneNET 平台返回结果 CONNECT_SUCCESS +MIPLEVENT:0,6 //OneNET 平台返回结果 REG_SUCCESS //模块侧收到上述返回值表示请求注册成功,此时,刷新OneNET 平台可看到设备显示绿色在线状态。 ![]() 3.模块响应 OneNET 平台 Observer 请求和 Discover 请求,完成订阅。 ![]() +MIPLOBSERVE:0,87667,1,3303,0,-1 //OneNET 平台对象/实例Observe 请求 AT+MIPLOBSERVERSP=0,87667,1 //模块响应 Observe 请求,其中 msgid=87667 必须对应 OneNET 平台 Observe 请求消息中下发的 msgid OK +MIPLEVENT:0,21 //模块响应Observe 请求成功 +MIPLDISCOVER:0,153204,3303 //OneNET 平台对象 Discover 请求 +MIPLDISCOVER:0,153204,3303 AT+MIPLDISCOVERRSP=0,153204,1,34,"5700;5701;5601;5602;5603;5604;5605" OK //模块响应Discover 请求,其中msgid=153204 必须对应 OneNET 平台 Discover 请求消息中下发的msgid。模块响应 Discover 请求时创建7 个资源,每个资源用分号“;”隔开,其中资源Resourceid 5700;5701;5601;5602;5603;5604;5605 需遵守 IPSO 规范定义,请参考链接: http://www.openmobilealliance.org/wp/OMNA/LwM2M/LwM2MRegistry.html, +MIPLEVENT:0,21 //平台返回 Discover 请求结果给模块,完成订阅。此时OneNET 平台上可查看到对象 3303 对应的资源列表信息。 4.模块与 OneNET 平台数据交互 ![]() +MIPLREAD:0,21459,3303,0,5700 //平台请求指定资源(此处指Resourceid 5700)的READ 请求 AT+MIPLREADRSP=0,21459,1,3303,0,5700,4,5,20.22,0,0 //模块响应平台 READ 请求,其中msgid=21459 必须对应 OneNET 平台 READ 请求消息中下发的 msgid,4 表示 float 数据类型。模块将资源值 20.22 返回给OneNET 平台侧。 OK +MIPLEVENT:0,21 //平台请求指定资源(此处指Resourceid 5605)的 EXECUTE +MIPLEXECUTE:0,11671,3303,0,5605,5,"reset AT+MIPLEXECUTERSP=0,11671,2/模块执行 EXECUTE 请求 OK +MIPLEVENT:0,21 //模块收到平台返回的响应结果 AT+MIPLNOTIFY=0,77861,3303,0,5700,4,4,23.5,0,0 OK //模块向平台侧上报指定资源值,此处上报 float 类型的值 810.56 给Resourceid 5700,其中 msgid=129584 必须对应 前面 OneNET 平台 Observer 请求消息中下发的 msgid。 +MIPLEVENT:0,26 //模块收到平台返回的响应结果,上报资源值成功,点击“操作”的详情按钮,可看到上报资源值的数据流。 //模块收到平台返回的响应结果,刷新OneNET 平台,可看到实例 0,资源 5700 的属性值更新为 20.2199999。 AT+MIPLUPDATE=0,3600,1//模块更新注册信息 +MIPLEVENT:0,11//模块收到平台返回的响应结果,更新注册信息成功 5.模块删除对象 AT+MIPLDELOBJ=0,3303 OK 6.模块请求注销 AT+MIPLCLOSE=0 OK +MIPLEVENT:0,15 7.删除基础通信套件 AT+MIPLDELETE=0 OK |
共3条
1/1 1 跳转至页
基于NB-IoT的LWM2M协议浅析

关键词: 基于 NB-IoT LWM2M 协议 浅析
共3条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
汽车+汽车地线之间连接处理被打赏20分 | |
【Zephyr】使用Zephyr外设初始化过程解析被打赏30分 | |
【S32K146】S32DS watchdog 配置使用被打赏20分 | |
【Zephyr】使用 IAR 调试 Zephyr 镜像被打赏20分 | |
赚取电动螺丝刀+电源电路理论知识分享1被打赏5分 | |
我想要一部加热台+分享常见运算放大器电路的应用被打赏5分 | |
【Zephyr】MCXN947 Zephyr 开发入门适配shell被打赏20分 | |
我想要一部加热台+常见的MOS管驱动电路被打赏5分 | |
【我要开发板】6.联合MATLAB记录数据被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下串口调试printf输出记录被打赏29分 |