吴睿超 侯俊
摘 要:针对工业生产中难以监控传感器状态的问题,设计一个物联网系统,实现远程传感器数据监控与固件更新。该系统由远程实时监控系统与远程固件更新系统组成,传感器采用嵌入式实时操作系统。在远程实时监控系统中,传感器可调节频率测量数据,基于消息排队遥测传输协议,通过无线网络将数据传输到服务器。为使远程固件更新系统运行符合限制应用协议,传感器连接至轻量级物联网协议服务器,再通过网关连接到hawkBit服务器中,基于超文本传输协议与轮询方式,由hawkBit提供远程更新服务。实践操作表明,该系统操作简单,具有可视化、直观的优点,可满足大型工厂远程实时监控与固件更新需求。
关键词:无线传感器;远程固件更新;远程实时监测;消息队列遥测传输;轻量级物联网
DOI:10. 11907/rjdk. 182723 开放科学(资源服务)标识码(OSID):
中图分类号:TP319文献标识码:A 文章编号:1672-7800(2019)009-0130-04
Design of Remote Real-time Monitoring and Firmware Update
over the Air System Based on Wireless Sensor
WU Rui-chao,HOU Jun
(School of Optical-Electrical Computer Engineering,University of Shanghai for Science and Technology, Shanghai 200093,China)
Abstract: Aiming at the problem that it is difficult to monitor and control sensors in the industrial production, an IoT system is designed to monitor and control sensors remotely and update firmware over the air. The system based on the wireless sensors using an embedded real-time operating system consists of two subsystems: one is a remote real-time monitoring system and the other one is firmware updating over the air system. In the remote real-time monitoring system, the measurement frequency of sensors can be changed remotely and data will be transmitted to the server via a wireless network based on the Message Queuing Telemetry Transport Protocol. In the firmware updating over the air system, in order to implement the restricted application protocol, sensors are connected to server based on lightweight machine to machine (LWM2M) protocol, and then LWM2M sever is connected to hawkBit server through the gateway, afterwards, hawkBit provides a firmware update service remotely based on HTTP and a polling method. This system is proved to be easy to operate with an advantage of visualization and intuition and it can meet the requirements of remote real-time monitoring and firmware update for factories.
Key Words: wireless sensor; firmware update over the air; remote real-time monitoring; MQTT; LWM2M
0 引言
工業生产中采用无线传感器网络(Wireless Sensor Network,WSN)可解决传统工业监测环境平台采用有线搭建引起的布局困难、建设成本高、延时长、专用性低等问题[1]。WSN作为物联网不可或缺的一部分[2],常用于智能城市[3]、灾难预警[4]、智能家居[5]及智能医疗[6]等方面,主要作用是监控环境、记录参数。但WSN需经常增加新功能或修复固件问题,如果通过手动方式对所有节点进行编程则十分耗时、耗力,因此需要一种有效方法在WSN中通过无线方式对节点进行远程升级或更新[7]。基于以上需求,本文设计一个基于无线传感器远程实时监控与固件更新系统。
在该系统中,采用FreeRTOS实时系统对传感器进行编程。在远程实时监控系统中,传感器数据基于消息排队遥测传输(MQTT)协议,以可调节的频率通过WiFi发送至服务器,使用Grafana实现可视化。在远程固件更新系统中,文献[7-11]均对无线传感器网络代码更新技术进行了相关研究与改进。网关是WSN接入互联网的瓶颈[8],因此采用LWM2M服务器实现WSN互联网接入,同时为在不同协议之间进行通信,按照HTTP协议利用hawkBit管理传感器,使用CoAP协议将固件传输至传感器节点,通过网关实现不同协议之间的信息交换,使系统实现易操作、直观的工业生产监控及远程固件升级技术。
1 系统总体设计方案
随着工业生产自动化发展,物联网在工业生产中的应用愈加广泛。物联网允许用户远程监控物品/对象并发送配置。有研究者估计,到2020年,物联网将覆盖近500亿台设备[12]。为便于监控生产过程,用户产生可远程查看传感器数据、调节监控频率的需求,同时当有新的传感器系统时,用户可进行远程更新,而不是通过USB连接电脑更新。因此,本文根据以上两点需求,在传感器上采用FreeRTOS实时系统,在此基础上,开发两个子系统,分别为远程实时监控系统和远程固件更新系统,并将其合并成一个总系统。
1.1 传感器操作系统
传感器需完成两个任务,即获得传感器数据并发送到服务器,进行即时远程固件更新,同时还需兼顾工厂环境监测,因此实时性对操作系统十分重要。
FreeRTOS实时操作系统作为一个轻量级操作系统,具有一个可扩展的实时内核,采用多线程方法[13]。其中每个进程均可中断,调度程序可在线程之间切换[14],为低端设备提供实时、抢占式多任务环境,并确保在任何给定时间段内执行更高优先级任务。如果两个任务具有相同的优先级,则调度程序根据同一优先级的任务共享CPU使用时间,时间短的任务优先运行。任务执行遵循基于优先级的循环实现。FreeRTOS内核使用4个C文件(task.c,list.c,queue.c,croutine.c)构建,其中task.c通过使用list.c文件的结构和函数提供调度功能,queue.c文件提供一个线程安全队列以实现任务间通信与同步,croutine.c可实现简单的轻量级任务[15]。因此有必要采用FreeRTOS系统,确保在正确的时间内完成必要任务。
1.2 远程实时监控系统
系统通过WiFi传输传感器数据,并将传感器数据可视化。两种数据传输协议比较如下所示。
1.2.1 MQTT 协议
MQTT即消息队列遥测传输(Message Queuing Telemetry Transport),是由IBM开发的一种针对LWM2M通信的协议。该协议构建于TCP/IP协议之上,以发布/订阅的方式工作。与传统发布/订阅客户端相比,该协议工作方式可满足物联网需求,即无需不断更新请求。同时,MQTT协议可大量減少使用的网络带宽与资源, 如基于MQTT协议的Facebook聊天软件。
1.2.2 HTTP协议
HTTP即超文本传输协议(Hyper Text Transfer Protocol ),该协议基于TCP/IP协议,可提供可靠的通信。然而,由于通过TCP建立连接,访问的数据根据IP地址、URL及其关系进行转移,过程动态可变。在每次访问时连接会被释放,即完成一次通信,需要多次建立、释放同一个连接[16]。
通过比较两种协议,可以发现在通信过程中,HTTP采用大量微小的数据传输块,消耗大量网络资源,导致网络性能下降,且IP寻址取决于物理位置,引起网络控制复杂性问题。HTTP协议是一个对称协议,而MQTT协议是一个轻量级不对称结构,该结构具有非智能分布式设备与服务器通信所需的智能能力。综上所述,MQTT协议更适合传感器与服务器之间的数据交换。
1.3 远程固件更新系统
物联网设备在通信过程中通常采用短消息进行消息传递,这对于固件更新是一种大型负载传递。
CoAP协议即受限制的应用协议(Constrained Application Protocol),采用基于块的传输方式,即块状转移[17],处理大负载消息传递。该协议将大型资源拆分成块大小的多个资源,通过以消息的有效负载形式进行传输。接收方对已接受到的消息块进行标志后,请求下一消息,当接收到所有消息后,重组所有的块即接收到完整的资源包。
CoAP协议由 IETF的CoRE工作组提出,是一种以HTTP协议为基础的协议。由于传统HTTP协议对于资源受限制的设备过于庞大,而CoAP协议基于HTTP协议,可实现请求与响应同步,并且该协议基于REST架构风格,用户可以像使用HTTP协议一样应用CoAP协议[18],所以本文采用CoAP协议进行传感器固件传输。
系统采用hawkBit服务器在云端管理传感器固件。 hawkBit是一种基于RESTful的服务器。REST即表述性状态传递(Representational State Transfer),是一种架构风格,2000年由Roy Fielding博士[19]在其博士论文中提出并被广泛应用。HTTP被用于定义数据格式的开头,其内容格式依赖于HTTP服务器与其定义文件,主要指XML或JSON。本文使用Python搭建一个HTTP客户端,可向hawkBit服务器发起请求,即在服务器中注册新设备,查看是否有固件更新请求,下载新固件或者更新设备状态。
由于传感网无法与hawkBit服务器直接进行通信,为使管理传感器同时与CoAP服务器进行通信,系统搭建LWM2M服务器。LWM2M即轻量级物联网(Lightweight Machine to Machine),是开放移动联盟(OMA)的系统标准,其目标是开发一个快速部署的客户机—服务器规范,以提供物联网服务。在M2M中,LWM2M充当OMA设备管理 (OMA- dm)的继承者,并为使用相同协议的物联网应用程序提供高效的设备管理与安全工作流,从而简化系统,还可解决受约束的M2M设备服务及管理需求[20]。
LWM2M基于CoAP协议进行开发,LWM2M 定义了3个逻辑实体:LWM2M服务器、LWM2M客户端 及LWM2M 引导服务器。LWM2M客户端负责执行LWM2M服务器的命令并上报执行结果,LWM2M引导服务器负责配置LWM2M客户端。
为使hawkBit服务器获得LWM2M服务器中传感器的信息,利用Python搭建一个HTTP服务器。LWM2M服务器可向HTTP服务器发起请求,由此HTTP客户端从HTTP服务器中获得信息,发送到hawkBit服务器中,从而可实现LWM2M服务器与hawkBit服务器之间的通信,HTTP服务器与HTTP客户端被称为网关。
1.4 系统总体结构
系统总统结构如图1所示。該系统主要由两个子系统组成。传感器作为MQTT客户端,发送传感器数据到MQTT代理,同时作为LWM2M客户端,与LWM2M服务器通信,随时准备固件更新。
2 系统设计
2.1 传感器操作系统设计
本文采用ESP32芯片,连接BME280环境传感器与MPU-6050空间运动传感器。ESP芯片是ESP8266的升级版,具有并发的两个核心、WiFi模块及蓝牙模块,因此可满足系统需求。在ESP32上搭建FreeRTOS系统,采用任务调度的方式,设计与MQTT代理进行传感器数据传输任务,配合远程实时系统监测系统工作;同时设计与LWM2M服务器通信任务,配合远程固件更新系统工作,其中与LWM2M服务器通信任务的优先级高于与MQTT代理通信任务的优先级。
2.2 无线传感器监控系统
在该系统中, 无线传感器采用BME280环境传感器对温度、气压、湿度进行测量,采用BMM150磁场传感器测量磁场,采用BMA280加速度传感器测量加速度。各个传感器初始采样频率为10s/次。同时,无线传感器作为MQTT客户端将采集到的数据采用MQTT协议作为各个MQTT主题内容发布到MQTT代理中。例如MAC地址为60:64:05:A4:40:50,传感器以JSON的形式将其发布到主题为/60:64:05:A4:40:50/Temperature中。其它传感器信息与此类似。MQTT代理运行于AWS云中。MQTT代理订阅所有MQTT客户端发布的消息。此时传感器信息只是数据流,为让用户更方便地查看传感器数据以及监控工业生产环境,采用Telegraf作为数据采集器,通过监控指标的配置,将相应数据从MQTT代理采集并存储于Influxdb,从而进行时间序列化。而Grafana最终通过Influxdb提供的源数据进行聚合分析及展示。同时,在Grafana中,用户可根据需求查看任意时间的传感器数据。为方便移植该系统到任意系统中,将MQTT代理、Telegraf、Influxdb及Grafana打包到Docker中。
2.3 无线传感器固件更新系统
在该系统中,Eclipse hawkBit是所有传感器的控制器。hawkBit是一个 Eclipse公共许可证服务器, 可使边缘设备实现固件更新,同时可部署、构建管理器, 具有设备报告与监视功能。边缘设备可通过优化界面直接连接至hawkBit,或通过联合设备管理服务间接连接至服务器[21]。该系统采用基于HTTP以及轮询机制的直接设备集成API方式(Direct Device Integration API),将传感器连接到hawkBit服务器中。hawkBit更新服务提供REST资源,设备可以通过该方式接收到固件更新任务。由于传感器无法直接向hawkBit服务器请求连接,利用Python创建一个HTTP客户端,向hawkBit轮询,将新的设备注册到服务器中,并且监测是否有固件更新任务。传感器同时作为LWM2M的客户端与CoAP的客户端。
采用Eclipse Leshan提供的JAVA库进行LWM2M服务器开发。该服务器主要用于监控传感器固件更新状态,也具有RESTful功能。由于同时创建了HTTP服务器,LWM2M可向HTTP服务器进行轮询。当HTTP客户端从hawkBit服务器中接收到固件更新任务后,HTTP客户端将文件下载到本地文件夹中。同时,LWM2M服务器从HTTP服务器接收到消息,传感器作为LWM2M客户端,从LWM2M服务器接收到消息,触发传感器中的引导模式并进行模式切换。
为将固件传输到传感器的存储卡中,采用CoAP协议传输文件。当采用CoAP协议进行大文件传输时,需采用分块传输,即把文件拆解成多个块进行传输[22]。将传感器作为CoAP客户端,将Eclipse Californium中的服务器例子作为CoAP服务器。Californium采用Java编译,用于物联网云服务的CoAP协议。
LWM2M服务器以180s/次监测传感器状态,当传感器与CoAP服务器完成传输时,LWM2M服务器将触发传感器固件更新功能,同时向HTTP服务器发送完成固件更新的消息。hawkBit服务器从HTTP客户端得到该消息后,服务器传感器状态将切换为完成固件更新状态。
将LWM2M服务器、CoAP服务器、HTTP服务器和HTTP客户端安装在树莓派中,并在工厂进行测试。
3 系统测试
3.1 无线传感器监控系统
将多个传感器放入工厂进行测试,无线传感器以每秒几次的频率进行监控。图2显示了4个传感器在2018年8月9日-2018年9月6日期间监测到的温度信息,图3显示了MAC地址为60:64:05:9E:DC:41的传感器在2018年8月9日到2018年9月6日期间监测到的温度、气压、湿度及WIFI强度信息。
同时也可以通过MQTT代理发布以/MAC地址/change为主题、内容以JSON形式的消息改变传感器监控频率,或改变WiFi,也可改变MQTT代理地址。
3.2 无线传感器固件更新系统
传感器通过固件更新系统注册到hawkBit服务器中,如图4(见封三彩图)所示。同时,将需要更新的传感器固件上传到服务器中。在hawkBit服务器中对传感器进行管理。例如可对单个传感器更新,如图5所示,可看到MAC地址为6064059C99E7、606405A44050、A81B6A76BB25传感器状态为绿色,表示已经完成固件更新,其余3个传感器状态为蓝色,表示传感器未接收到固件更新任务。也可以对传感器进行分组,从而实现批量更新,如图4所示,可以看到MAC地址为A81B6A9C54EC的传感器状态表示已经完成固件更新。MAC地址为6064059C99AC和MAC地址为6064059C99E7的传感器状态为黄色,表示处于准备固件更新状态。
4 结语
本文采用ESP32连接环境与运动传感器,设计了一个基于无线傳感器的远程实时监控与固件更新系统,采用MQTT协议实时监控工业生产,并将其可视化;同时采用LWM2M协议,提出了一种将传感器节点接入互联网的方法。传统无线传感器网络采用有线通信方式对传感器节点布置实现网络代码更新,相比之下本文方法更符合未来物联网发展需求,更加智能、便利。在大型工厂应用中,用户只需通过网页即可监测工厂生产状态,同时无需连接USB即可进行远程固件更新,具有操作简单、直观、可视化等优点。
参考文献:
[1] 罗俊,孙国耀. 基于WiFi无线传感器网络的工业环境监测平台系统设计[J]. 仪表技术与传感器,2018,8:65-68.
[2] XIE H M,YAN Z,YAO Z,et al. Data collection for security measurement in wireless sensor networks: a survey[J/OL]. IEEE Internet of Things Journal,2018:1-1.2018-11-26.https://ieeexplore.ieee.org/document/8543865/metrics#metrics.
[3] GAUR A,SCOTNEY B,PARR G,et al. Smart city architecture and its applications based on IoT[J]. Procedia Computer Science, 2015, 52:1089-1094.
[4] ROY S D,SINGH S A,CHOUDHURY S,et al. Countering sinkhole and black hole attacks on sensor networks using dynamic trust management[C]. Morocco:IEEE Symposium on Computers and Communications,2008.
[5] CUI K W, KUMAR A,XAVIER N,et al. An intelligent home appliance control-based on WSN for smart buildings[C]. Hanoi:2016 IEEE International Conference on Sustainable Energy Technologies, 2016.
[6] ALAMELU J V,MYTHILI A. Design of IoT based generic health care system[C]. Vellore:International conference on Microelectronic Devices, Circuits and Systems,2017.
[7] 张国萍. 无线传感器网络在代码分发最新研究进展[J]. 浙江理工大学:自然学报版,2015,33(2): 219-227.
[8] 钱欢,施伟斌. 基于Android的无线传感器网络代码更新系统设计[J]. 软件导刊,2017, 16(12): 125-127.
[9] 吴涛,施伟斌,张磊. 基于CC2430的代码更新系统设计[J]. 电子科技,2017,30(1):123-125.
[10] 任万春,马延淮,刘琦. 一种基于多播分发树的无线传感器网络代码分发协议[J]. 传感器与微系统, 2014, 33(11):149-152.
[11] 王海勇,杨庚,许建. 一种低耗能的代码分发协议[J]. 计算机工程, 2012, 38(23):84-87.
[12] EVANS D. The Internet of Things:how the next evolution of the Internet is changing everything[J]. CISCO White Paper,2011,38:1-11.
[13] GOYETTE R. An analysis and description of the inner workings of the FreeRTOS kernel [EB/OL]. http://richardgoyette.com/Research/Papers/FreeRTOSPaper.pdf.
[14] DéHARBE D,GALV?O S,MOREIRA A M. Formal methods: foundations and applications[M]. Berlin: Springer,2009.
[15] FERREIRA J F,He G H, Qin S C. Automated verification of the FreeRTOS scheduler in Hip/Sleek[J]. International Journal on Software Tools for Technology Transfer,2014, (16)4:381-397.
[16] YOKOTANI T,SASAKI Y. Comparison with HTTP and MQTT on required network resources for IoT[C]. Bandung: 2016 International Conference on Control, Electronics, Renewable Energy and Communications,2017.
[17] BORMANN C,SHELBY Z. Block-wise transfers in CoAP [EB/OL]. https://tools.ietf.org/html/draft-ietf-core-block-20.
[18] BORMANN C,CASTELLANI A P,SHELBY Z. CoAP:an application protocol for billions of tiny internet nodes[J]. IEEE Internet Computing,2012(2): 62-67.
[19] KR?O S,POKRI? B,CARREZ F. Designing IoT architecture(s): a European perspective[C]. Seoul: IEEE World Forum on Internet of Things (WF-IoT),2014.
[20] RAO S,CHENDANDA D,DESHPANDE C. Implementing LWM2M in constrained IoT devices[C]. Melaka:IEEE Conference on Wireless Sensors,2015.
[21] BEATON W. Eclipse hawkBit[EB/OL]. https://projects.eclipse.org/projects/iot.hawkBit.
[22] AL-FUQAHA A,GUIZANI M,MOHAMMADI M,et al. Internet of Things: a survey on enabling technologies, protocols, and applications[J]. IEEE Communications Surveys & Tutorials, 2015(4):2347-2376.
(责任编辑:江 艳)