LwM2M协议介绍

如题所述

第1个回答  2022-07-22

LwM2M是一套适用于物联网的协议。首先,EMQ君从整体上来带领大家来了解一下这个协议,看以下几个问题:

LwM2M的全称是Lightweight Machine-To-Machine,它的名称里面包含了这么两个重要含义:1)这个协议是轻量级的;2)这个协议适用于物联网设备。

LwM2M协议是由OMA(Open Mobile Alliance)提出并定义的。OMA这个组织专注于移动通讯以及物联网产业的标准开发,给自己的定位是“规范大工厂”。随着“万物皆可联”概念的兴起,物联网终端数目急剧膨胀,也不再局限于智能手机这样的强力大块头。有很多设备,要么电量有限,要么内存有限,要么可使用带宽有限,之前那些适于强劲终端设备管理的协议对它们来说有些太重了难以承受,因此,为了照顾到这些资源有限的小个子设备们,LwM2M协议在2013年底诞生了。目前的成熟版本号依然是1.0,OMA的专家们正在努力整1.1版。

概括地说: LwM2M是适用于资源有限的终端设备管理的轻量级物联网协议。

接着,我们从几个方面详细介绍LwM2M协议:

先看一下LwM2M协议的基本架构。

协议最主要的实体包括LwM2M Server和LwM2M Client。

此外,根据需要还可以加入LwM2M引导服务器(Bootstrap Server)或智能卡(SmartCard),对客户端完成初始的引导。

在这些实体之间,协议定义了4个接口,来实现预期的功能。

LwM2M协议有以下几个突出特点:

考虑到与时俱进,实现简洁易懂的风格,LwM2M协议采用了REST。

但由于协议的服务对象是资源有限的终端设备,传统的HTTP数据传输方式显得过分笨重,难以支持受限资源,因此选择了具备REST风格的CoAP来完成消息和数据传递。一方面CoAP基于UDP,与TCP相比,在网络资源有限及无法确保设备始终在线的环境里更加游刃有余(出于安全性考虑,使用了基于UDP的DTLS安全传输协议)。另一方面CoAP本身的消息结构非常简单,报文压缩,主要部分可以做到特别小巧,无需占用过多资源。

出于类似的考虑,协议的数据结构必须足够简单。LwM2M协议定义了一个以资源(Resource)为基本单位的模型,每个资源可以携带数值,可以指向地址,以表示LwM2M客户端中每一项可用的信息。资源都存在于对象实例中(Object Instance),即对象(Object)的实例化。LwM2M协议预定义了8种对象(Object)来满足基本的需求,分别是:

考虑到扩展性,协议也允许根据实际需要自定义更多的对象。在这样的数据模型中,资源、对象实例以及对象都是用数字对应的ID来表示的,以实现最大程度的压缩,因此任何资源都可以用最多3级的简洁方式表示,例如/1/0/1表示服务器对象(Server Object)第1个实例中的服务器短ID资源。 在注册阶段,LwM2M客户端把携带了资源信息的对象实例传递给LwM2M服务器,以通知服务器自身设备所具备的能力。

LwM2M协议的主要开源实现有以下几个:

此外,EMQ也实现了EMQ服务器上的LwM2M网关插件,实现了LwM2M协议的大部分功能,LwM2M设备可以注册至EMQ-LWM2M上,从而通过EMQ-LWM2M访问并管理设备,设备也可以向EMQ-LWM2M上报信息,并使用EMQ后端的服务来采集数据。