前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
今天分享第11篇技术报告,题目为:
“基于Zephyr的IoT设备管理”
作者介绍了Canvas设备管理器,是一个物联网设备管理系统,将物联网的硬件设备与协议和云服务相结合。物联网服务提供商受益于现场设备的各种远程连接监控、软件更新、配置和诊断功能。Canvas设备管理器使运营商能够扩展其物联网设备网络,降低物联网部署的复杂性,并支持远程设备操作。
Canvas设备管理器部署在网关固件上。网关向上连接云平台,进行程序部署、配置设置、健康监测与诊断、数据传输。向下连接物联网传感器,进行终端设备管理、程序部署、遥测技术支持等。作者选用Sentrius MG100设备作为网关,Sentrius BT610作为终端传感器。
这个物联网设备管理器有如下要求:
必须是安全的
使用开放的标准和协议
实现非接触式部署和管理
支持健康监测
LwM2M协议是来自于开放移动联盟(OMA)用于IoT设备管理和遥测的应用层协议和对象模型,为设备数据和操作定义了格式良好的、统一的API。
LwM2M的格式如下图所示,以树状结构,分别代表了设备的对象和资源,并给他们分别赋值ID号。
LwM2M网关增加了一个前缀在LwM2M格式上,用来连接终端设备,如下图所示:
作者举了一个列子来解释LwM2M协议的使用方式,下面的目录可以让服务器访问n1网关所连接的终端中3号对象的2号资源。
LwM2M设备有如下功能:
在设备注册期间指定物联网设备对象,通过称为CoRE的链接完成注册。
从设备上查询到的LwM2M对象和资源的数据存储在服务器中,供程序访问。
LwM2M网关上的资源给终端节点提供物联网设备对象ID。
LwM2M设备之间的通信有如下几种:
l LwM2M网关注册
网关与LwM2M之间的公共协议栈由LwM2M对象模型、CoAP请求响应机制、DTLS安全层和UDP传输协议组成。LwM2M网关使用UDP套接字通过网络接口向服务端发起注册(连接或会话),LwM2M服务端响应完成网关注册。
l LwM2M服务端向网关发出请求
服务端发出LwM2M请求,网关响应针对其LwM2M对象树的请求,通过UDP套接字回应服务端。
物联网终端节点有自己的LwM2M客户端和设备树,通过非ip接口将CoAP消息发送给网关,网关将终端节点作为实例添加到自己的设备树中,并询问是否完成注册,终端节点完成注册并响应网关,网关在收到终端节点后在设备树添加前缀并向LwM2M服务端发出节点完成注册的通知。
LwM2M终端节点发出请求由LwM2M网关代理执行,其执行步骤与服务端向网关发出请求步骤一致,只是设备树中增加了终端节点的前缀。
l LwM2M网关代理
来自服务器的读、写、访问操作的CoAP请求被网关解析并移除设备树中的前缀,剩余的CoAP请求使用一个新的用户定义的组ID预先挂起一个SMP帧报头,并传递给终端节点。终端节点移除SMP报头将CoAP请求发给LwM2M客户端进行处理。处理完将响应结果和SMP帧包头发回网关。网关删除SMP帧报头,添加前缀,转发给相对应的LwM2M服务器。
SMP(Simple Management Protocol)包含CoAP的格式如下所示,包括操作代码、标志位、长度、分组、顺序、命令ID和LwM2M请求缓冲区。
添加如下代码支持LwM2M的传输,为LwM2M消息添加应用程序钩子,实现LwM2M网关及其代理。
https://github.com/LairdCP/zephyr/commit/46c0c9f784c9c94d447df6189672ec23dea17fc2
https://github.com/LairdCP/zephyr/commit/8dd4e0f249847564700977b3756977553ad5b482
https://github.com/CanvasDM/lwm2m_gateway_obj_module
https://github.com/CanvasDM/lwm2m_gateway_proxy_module
通过Web端可视化管理网关和终端节点,实时监测其数据变化。
Canvas可以为传感器(终端)的时序数据提供连接到应用云平台的途径,可以通过MQTT或LwM2M发方式连接。
设备配置
通过Shell命令,可以对设备进行配置,作者举了一个例子:
为提高物联网设备管理的安全性,有如下特性:
唯一硬件密钥
双引导加载程序安全引导
签名固件
Shell登陆
所有信息被加密操作
加密BLE通信
作者对网关设备和终端设备中的代码进行了开源:
网关(MG100):
https://github.com/CanvasDM/ble_gateway_dm_firmware_manifest
终端设备(BT610):
https://github.com/CanvasDM/bt610_firmware_manifes