LwM2M协议初识_2022.06.06

学习基于记录,而不止于记录。

希望自己能坚持下去~

0.写在前面

    出于工作需求,涉及物联网相关,综合考虑物联传输协议选型,决定使用LwM2M。本文作为本人一篇学习笔记,难免错漏,有路过大神欢迎指正。随着后续学习深入,会继续更新(大概吧)。

1.LwM2M

  这里贴上官网地址,目前中文搜索引擎优先提供的都是一些第三方机构或者开发人员给出的对于协议方面的定义,这一块建议还是看看官网,由于是英文,可以使用中文插件汉化一下,如下。

QQ图片20220613141844.png

其实理解起来也不用那么复杂,LwM2M,全称:light weight machine to machine,顾名思义就是一种面向机器与机器,或者设备与设备之间的轻量级协议,是一种数据传输标准。

另外,协议栈如下图所示,传输层采用的是UDP或者SMS协议(这里不讨论后者);应用层协议,是Coap,而LwM2M是基于Coap协议,所以说,要想了解LwM2M还是得先知道Coap协议,这里贴上一篇Coap相关文章,可以先看看作为了解,另附coap协议的官方文档;至于中间的DTLS是安全协议,同时因为UDP的特性决定,LwM2M注定是一种非可靠性的协议,而加入DTLS可以一定程度确保其可靠性,再附上DTLS协议的官方文档。最后,有篇知乎专栏作为入门文章相当不错,贴在这里,LwM2M 协议介绍。

协议栈

2.协议特点

  看了不少博客和业内前辈的总结,关于LwM2M说明了很多东西,但是其实很重要的一个特性就是资源,LwM2M协议将服务端和客户端之间的交互,其实都设计为对于资源的操作,客户端成功将自己注册到服务端,并且告知服务端,自己所拥有的资源,服务端据此注册信息,可以发起对资源的操作。
  而LwM2M本身也是提供了一些最基本的资源供开发者使用,这里呢,看下官方LwM2M 注册表 API,里面做了说明,如下(已汉化):

注册表API文档

点击对象发现里面的最新链接,需要注意的是label为0的是OMA定义,如下(只截取了部分):


对象信息

资源的请求风格,是restful风格,比如,如果读取id为19对象,第一个资源,及其下的第一个资源实例,便是/19/0/0,根据权限,服务端可以对资源进行读取、删除、写入等操作,同事服务端可以对设备进行管理,例如发现、注册或者取消注册等操作。

3.框架

  作为开发者,我们更加关注是技术细节实现,那么如果选择LwM2M作为传输协议,我们该怎么实现,适合Java的LwM2M框架就是Eclipse Leshan。官网首页如下:

eclipse leshan

首页已经提供了较为完善的文档,框架源码在github上,gitee也有搬运,方便国内使用。关于源码结构快速熟悉,可以看看这篇文。

4.总结

  目前了解还比较浅,所以能说的也比较少,关于这方面的资料国内不多,英文的啃起来难受,目前进度推进缓慢,只能勉强搭建起环境,后续应该还会更新关于Leshan的相关使用。

你可能感兴趣的:(LwM2M协议初识_2022.06.06)