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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |