新闻  |   论坛  |   博客  |   在线研讨会
基于NB-IoT的LWM2M协议浅析
lm1988 | 2020-03-06 10:11:48    阅读:373   发布文章

LWM2M 协议是 OMA 组织制定的轻量化的 M2M 协议,主要面向基于蜂窝的窄带物联网(Narrow Band Internet of Things, NB-IoT)场景下物联网应用,聚焦于低功耗广覆盖(LPWA)物联网(IoT)市场,是一种可在全球范围内广泛应用的新兴技术。具有覆盖广、连接多、速率低、成本低、功耗低、架构优等特点。

移动 OneNET 平台采用的是基于 NB-IOT  LWM2M 协议和 CoAP 协议实现 UE 与平台的通信,其中 LWM2M 协议为应用层协议,CoAP 协议为传输层协议。

1LWM2M 协议逻辑实体与逻辑接口

(1)LwM2M 定义了三个逻辑实体:

LWM2M Server  :接入机,平台服务器接口;

LWM2M client     客户端,负责执行服务器 的命令和上报执行结果;

Bootstrap server :引导机,负责 配置 LWM2M 客户端。

(2)这三个逻辑实体之间有4个逻辑接口:

BootstrapBootstrap Server 通过这个接口来配置 Clinet - 比如说 LWM2M server  URL 地址;

Device Discovery and Registration:客户端注册到服务器并通知服务器客户端所支持的能力;

Device Management and Service Enablement LWM2M Server 发送指令给 Client 并受到回应.

Information ReportingLWM2M Client 来上报其资源信息的,比如传感器温度。

这三个逻辑实体与四个逻辑接口之间的关系如下图:

 

image.png

 

2LWM2M 协议栈

Lightweight M2M 协议栈结构如下图所示:

IMG_256image.png

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 定义的 objectIPSO 组织也定义了一些常用传感器的 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.    完成用户注册并登录后,进入开发者中心进行产品创建。

image.png

2.    产品创建时,根据页面内容,填写您的产品信息。

 

image.png

image.png

3. 产品创建完成之后,添加设备,其中,AM20E 模块的 IMEI 号和 SIM 卡的 IMSI 号,可使用串口调试工具,分别通过 AT+ CGSN指令和 AT+CIMI 指令获取,并填入。

4. 产品创建并添加设备完成之后,可在设备管理界面看到所添加的设备,设备栏灰色表示离线状态。

 

image.png

5. 在模块侧接入流程中,当模块收到平台侧返回的注册结果+MIPLEVENT:0,6,完成注册。设备栏将显示绿色,表示上线状态。

image.png

3.2模块接入 OneNET 平台流程

模块完成初始化流程并成功注册网络后,接入 OneNET 平台,流程图如下所示。

 

image.png

上述模块接入 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> 00 是基础通信套件标识,后续 AT 指令都需要使用到它

OK

 

AT+MIPLADDOBJ=0,3303,2,"11",6,1

//添加对象 33032 个实例,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 平台可看到设备显示绿色在线状态。

image.png

 

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 对应的资源列表信息。

image.png

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 请求消息中下发的 msgid4 表示 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

image.png

 

 

AT+MIPLUPDATE=0,3600,1//模块更新注册信息

+MIPLEVENT:0,11//模块收到平台返回的响应结果,更新注册信息成功

image.png

 

5. 模块删除对象

 

AT+MIPLDELOBJ=0,3303 OK

 

6. 模块请求注销

 

AT+MIPLCLOSE=0 OK

+MIPLEVENT:0,15

 

7. 删除基础通信套件

 

AT+MIPLDELETE=0 OK


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客