LwM2M 协议介绍
LwM2M 是一种轻量级的物联网设备管理协议,由 OMA(Open Mobile Alliance)组织制定。它基于 CoAP (Constrained Application Protocol)协议,专门针对资源受限的物联网设备设计,例如传感器、智能表计等,它们通常由电池供电,并且 CPU、内存、网络链接资源有限。
协议栈结构
LwM2M 协议栈有以下几个特点:
- 应用层除了协议本身定义了一套标准的对象资源模型外,也允许用户进行自定义对象模型。
- 传输层上一般是常用的 CoAP/UDP,使其在兼顾轻量的前提下,也提供了一定程度的可靠性保证。
- 传输安全上采用 DTLS 协议,支持 Pre-Shared Key、Raw Public Key、X.509 证书等多种安全模式。
- 网络层一般以 UDP + IPv4/6 和 SMS 为主,同时也支持将其部署在 NB-IoT、TCP、LoRAWAN 等网络上。
资源模型
资源模型是 LwM2M 协议的核心,它定义了客户端与服务器之间的通信规范。客户端按该定义的数据格式向服务器上报数据,服务器通过资源模型向客户端对应的资源发送读、写、执行等控制命令。
下图展示了客户端(LwM2M Client)、对象(Objects)和资源(Resources)之间的关系,客户端可能有多个类型的资源,每个资源都隶属于某个对象:
所有标准的对象和资源都存在一个固定的编号,他们由 OMA LwM2M Registry 进行统一维护。
例如,用于温度传感器类设备的对象 Id 为 3303,它定义了:
-
Resource 5700: Sensor Value (current temperature reading)
资源 5700:传感器值(当前温度读数)
-
Resource 5701: Sensor Units (units of the temperature reading, e.g., Celsius or Fahrenheit)
资源 5701:单位(例如,摄氏度或华氏度)
-
Resource 5601: Min Measured Value (minimum recorded temperature)
资源 5601:最小测量值
-
Resource 5602: Max Measured Value (maximum recorded temperature)
资源 5602:最大测量值
LwM2M 协议支持在对象和资源上定义允许的操作,例如:
- Read: 获取资源的当前值
- Write: 设置新值
- Execute: 调用定义在资源上的函数
- Observe/Notify: 订阅该资源值的变化,并实时进行通知
优势和主要应用场景
综上可见,LwM2M 协议的主要优势有:
- 轻量级:基于 CoAP 和 UDP 协议,网络开销小,适合资源受限设备。
- 远程管理:定义了多种标准化的资源,支持设备升级、资源状态查询、监控等操作。
- 灵活的资源模型:LwM2M 的资源模型允许灵活地表示设备能力,可根据具体应用定义自定义资源。
- 安全性:支持 DTLS 安全传输,确保设备数据的安全性。
主要适用的场景有:
- 智慧城市:管理路灯、交通传感器和环境监测设备。
- 交通运输:跟踪和管理车队车辆,优化物流,监控车辆健康状况。
- 工业物联网:在工厂环境中监控和管理机器、传感器和执行器。
- 智