APP下载

基于Linux系统的智慧路灯网关设计

2020-12-26李正杰

企业科技与发展 2020年7期
关键词:网关路灯服务器

李正杰

【摘 要】随着智慧城市的建设和发展,智慧路灯作为智慧城市建设中不可或缺的组成部分,在城市建设中发挥着越来越大的作用。智慧路灯作为智慧城市的数据采集器,承载着照明设备、传感器设备、视频设备等多种功能设备,但是这些设备之间又相互独立,数据不能够互联互通,需要有一个设备将这些功能部件黏合成一个整体,因此智慧路灯网关应运而生,它作为智慧路灯系统的中枢,通过多种总线协议将各个功能部件的数据汇聚在网关内,再通过统一的接口传输给服务器,实现了智慧路灯功能的整体化。

【关键词】智慧路灯网关;传感器;以太网;4G;智慧城市

【中图分类号】TU113.66 【文献标识码】A 【文章编号】1674-0688(2020)07-0070-03

近年来,随着物联网技术、传感器技术的发展,现代城市在发展的过程中提出了越来越多数字化、信息化的需求,智慧城市的概念深入人心。智慧城市的建设需要大量城市基础数据的支撑,没有这些基础数据的支撑智慧城市的概念就是空中楼阁,因此如何获取这些基础数据成为建设智慧城市的关键问题之一。目前,很多智慧城市的建设中都使用路灯作为载体来为智慧城市的建设提供基础数据,原因有两点:一是路灯作为城市的公共基础设施分布在城市的各个角落,分布范围广,可以涵盖城市的范围。二是路灯本身具备良好的承载能力,灯杆上可以部署多种传感设备。但是路灯上部署的充电桩、摄像头、报警器、气象站等设备分别属于不同的厂家,这些设备之间数据不能互通、接口也各不相同,不能形成一个整体,因此在管理这些设备时,管理者往往需要操作多个管理平台,效率低,增加了管理成本。对此,智慧路灯网关可以解决这个问题,智慧路灯网关在系统拓扑中是一个中间件,位于服务器平台与传感器之间,对上提供统一的管理接口,管理者只需要访问网关设备就可以管理到各个传感器,对下搜集和整理各个传感器的数据按统一格式传递给服务器,启动承上启下的作用(如图1所示)。

智慧路灯网关的主控芯片使用的是“德州仪器”的AM3352芯片,使用的是Cortex-A8内核,主频为600 MHz,基于Linux系统进行开发。智慧路灯网关在功能上分为通信模块、协议处理模块、存储模块、外围设备管理模块4个部分。

1 通信模块

通信模块具备3个主要的功能,第一个主要功能是对通信接口进行管理,网关设备在硬件上提供了两种不同的方式接入互联网,一是通过RJ45接口使用有线网络接入互联网,二是通过4G模块拨号上网,以无线的方式接入互联网。通信模块对这两种通信接口的管理方式如下:网关的Linux系统启动完成初始化后,有线接口因为是零配置设备,所以首先配置为网关设备的默认通信接口,紧接着通信模块会检查Linux系统中是否注册了4G模块,以及是否插入了4G数据流量卡,如果两个条件同时满足通信模块则启动拨号流程,拨号成功后将4G模块设置为系统默认的通信网卡,所有与外界的数据交互都通过4G网络来实现。在网关设备运行的过程中,通信模块还需要时刻监控4G模块的工作情况,因为4G模块会因为一些情况而导致掉线,例如通信网络的信号质量差、欠费等。当出现掉线的情况时,通信模块应当及时重新拨号,以保证网关设备的网络通畅(如图2所示)。

通信模块的第二个主要功能是实现网关设备与服务器之间的链路连接。网关与服务器之间采用MQTT协议进行通信,MQTT协议是一種由IBM公司提出的,基于发布/订阅模型的通信协议。MQTT协议的设计精简,可以提供实时可靠的通信服务,并且针对资源有限的嵌入式设备及高延时、低吞吐量的网络状况做了优化,因此非常适合于物联网应用,事实上目前很多物联网设备、平台都使用MQTT作为接入协议,比如阿里巴巴的物联网平台,百度的物联网平台、机智云,中国移动的物联网平台onenet等。此外,MQTT协议在Linux平台下有很多开源的中间件,通过交叉编译后就可以使用这些中间件,而不需要再做MQTT协议实现,这样在系统开发中可以把更多的时间和资源投入到业务处理中,节省了开发时间和资源。在网关设备的开发中,我们使用Mosquitto库作为MQTT协议的中间件。在运行的过程中,我们会对4种MQTT事件提供回调函数以进行相应的事件处理。一是连接成功事件,当网关与服务器的MQTT服务程序成功连接后会触发连接成功回调函数,在回调函数中,程序首先会将网络状态置为连接,然后再订阅相关的MQTT话题以接收服务器下发的指令。二是断开连接事件,当网关与服务器之间的状态由连接变为断开时会触发断开连接回调函数,在回调函数中,程序首先会将网络状态置为断开,然后再发出连接请求。三是连接请求失败事件,当网关发出连接请求后,请求返回超时或者被服务器拒绝后会触发连接请求失败回调函数,在回调函数中,程序会再次进行连接请求。四是收到订阅数据事件,当网关从订阅的话题中收到数据时会触发收到订阅数据回调函数,在回调函数中,程序会将收到的数据发送给协议处理模块进行处理,并将协议处理模块的处理结果返回给服务器。

通信模块的第三个主要功能是提供接口给其他的功能模块,以实现其他功能模块与服务器之间的数据交互。通信模块对Mosquitto库的原生API进行封装,将MQTT协议的一些细节进行屏蔽,使得其他模块在使用接口进行通信时只需要关心数据本身,提高了效率。

2 协议处理模块

协议处理模块是网关设备的核心模块之一,用于处理网关与服务器之间的通信协议。网关与服务器之间的通信协议使用的是json格式,json是一种轻量级的数据交换格式,独立于任何编程语言,采用文本格式存储和表示数据。采用json格式作为通信协议的载体有以下几个优势:①json格式的表示形式简洁、可读性强、逻辑层次清晰,类似于自然语言,便于开发人员阅读和理解,具备自解释的特质。②json格式的扩展性强,便于后期对协议进行扩展。③json格式作为一种在计算机领域大量被应用的格式,有很多开源编解码库,例如cJSON、fastjson、jansson、libjson等,这些开源库有各自特点,比如cJSON是针对资源有限的嵌入式设备使用,资源占用少,可以使用在单片机平台上,fastjson的解析速度快大多使用在服务器端。网关的json编解码库使用的是jansson。

协议处理模块收取从通信模块发出的数据帧,首先对数据帧进行json格式的解码,如果解析失败则认为数据非法,退出协议处理流程,重新等待从通信模块发出下一帧数据,反之则从解析成功的json对象中提取如消息编码、UUID码、命令字等信息进行处理。协议处理模块执行完指令操作后会将相应的执行结果组织成json对象,再通过json编解码库解码成字符串,发送给通信模块,最终通过通信模块将数据发送到服务器端。

3 存储模块

嵌入式设备在启动时通常会需要一些参数进行初始化操作,同时在运行的过程中也经常需要保存一些数据来记录设备工作的状态、发生的事件等,这些参数和数据都需要能做到掉电不丢失,因此会使用到存储模块。

嵌入式设备在做数据存储时,可以采用文件保存的方式,也可以使用数据库的方式保存。使用文件保存方式时,操作简单,但是可靠性不如数据库,且数据的检索、过滤、组织不如数据库高效,适用于数据量不大、不多、不复杂的情况。

智慧灯杆系统的网关使用sqlite3数据库保存运行过程中需要使用到的参数,以及在运行过程中产生的临时数据。sqlite3数据库是一种开源的、针对嵌入式设备的关系型数据库,具有资源占用少、无服务器、支持Linux/Unix/Windows等多种主流操作系统的特点。在很多知名的嵌入式软件中都使用到sqlite3数据库,例如微信等。相较于使用文件存储参数和临时数据的方式,使用数据库存储具有数据存储、删除方便、可靠,数据检索的功能强大、速度快等优势。sqlite3数据库提供了C、java、python、PHP、Lua等多种语言的绑定,网关的程序开发使用的是C语言,因此选择使用sqlite3的C语言绑定版本。存储模块作为一个通用基础模块会被通信模块、协议处理模块、外围设备管理模块调用。存储模块通过对sqlite3原生的API函数进行封装,实现对数据库增、删、改、查的操作,并将屏蔽了sqlite3数据库操作细节的接口提供给其他模块使用,减少了其他模块的工作量。

4 外围设备管理模块

智慧灯杆系统中部署有很多的传感器外围设备,例如微型环境气象站用于采集环境的温度、相对湿度、气压、PM2.5、风向、紫外线、降雨量等气象参数,智能电表模块用于采集當前供电电网的电压、电流、瞬时功率、电量等信息。这些外围设备的特点为功能比较单一,只能够采集特定参数信息,不具备主动将采集的信息上传服务器的能力,在整体系统中只能作为从设备存在,这些外围设备都配备了通信串口,支持通过Modbus协议进行采集数据的读取及设备参数的设置。网关设备在整个智慧灯杆系统中是主设备,是管理者的角色。网关提供4路RS485总线接口和1路以太网接口用于连接外围设备,并且通过Modbus协议对外围设备进行管理。Modbus协议是一种工业上常用的串行通信协议,由施耐德公司于1979年提出,目的是为可编程逻辑控制器(PLC)提供可靠的通信服务,目前已经成为工业通信领域的业界标准。Modbus协议包含RTU、ASCII、TCP 3个子集,RTU、ASCII这两个子集基本都使用在串口设备上,两者的区别为RTU使用的是二进制通信,ASCII使用ASCII码字符通信。TCP子集则使用在具备以太网通信能力的设备上。网关支持RTU、ASCII、TCP 3种Modbus协议子集的设备管理。环境传感器示意图如图3所示。

外围设备管理模块的工作流程如下:首先根据外围设备的部署情况在网关中进行设备注册,注册时需要提供设备的型号、支持的协议类型(Modbus-RTU、Modbus-ASCII、Modbus-TCP)。如果设备是Modbus-RTU、Modbus-ASCII协议类型,需要提供设备串口的波特率、数据位宽、结束位宽、奇偶校验类型等参数。如果设备是Modbus-TCP协议类型,需要提供设备的IP地址、端口号等信息。完成设备注册后,网关会根据各个外围设备的型号、协议类型、通信参数按照预设的轮询周期去获取各个外围设备的采集数据,并将获取到的数据根据通信协议的要求进行打包封装。封装后的数据传递给通信模块,通信模块接收到数据后,会根据当前的联网状态进行不同的处理措施,如果网关与服务器当前处于连接状态则直接将封装好的数据发送给服务器;如果网关与服务器当前处于断开连接的状态则将数据暂存在数据库中,等待网关与服务器联网后再将所有的暂存数据发送给服务器。

外围设备管理模块除具备设备管理、设备数据读取、设备数据上传功能外,还具备数据的分析处理能力。外围设备中有一些设备采集到的数据信息关系到智慧灯杆系统本身的运行稳定性,如电网电压的超压、低压信息、供电电流的过流信息等,有一些则关系到灯杆周围人民群众的人身安全,如水浸信息、漏电信息等。对于这些重要数据,管理模块会进行数据的分析比对,如果出现数据超过警告阈值的情况,则生成报警信息发送给服务器,提醒管理人员进行危险情况的处理和排查。

通过智慧路灯网关系统,我们成功地将智慧灯杆上的各个功能部件、传感器结合成一个良好的整体,为智慧城市的管理者获取城市的传感数据、管理城市的智慧路灯提供了一个统一的管理接口,提高了效率,减少了管理成本,让智慧路灯这些信息化设备更好地为智慧城市提供数据和服务。

参 考 文 献

[1]黄贞升.百色市城市照明路灯现状分析[J].企业科技与发展,2017(5):166-168.

[2]吴超华,李云飞,严建峰.基于NB-IoT的路灯控制系统设计[J].现代电子技术,2018(24):5-9.

[3]张群.基于物联网的智能路灯控制系统研究[J].建筑工程技术与设计,2018(5):22.

猜你喜欢

网关路灯服务器
基于FPGA的工业TSN融合网关设计
基于ARM架构的工业物联网网关研究与实现
2018年全球服务器市场将保持温和增长
为什么高速公路上不用路灯照明
傍晚,路灯为什么能自动亮起来?
基于ENC28J60的嵌入式以太网/CAN网关设计
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵