朱先远 孙握瑜
(安徽商贸职业技术学院电子信息工程系, 安徽 芜湖 241002)
随着我国新农村建设工作的不断推进,农村环境监管工作也逐渐得到重视。目前,农村环境监管工作多是由人工完成,也有部分发达地区引入了远程监测系统进行辅助管理。这些远程监控技术大致分为两类:(1) 基于4G移动通讯网络实现烟雾或红外人体等传感模块与GPRS模块硬件的集成化[1-2],对传感器数据进行统一编码与发送,当传感器数量较大时成本也较高;(2) 基于ZigBee技术通过终端节点、路由节点和协调器节点实现远程监控[3-6],当用于监控范围广、密度低的乡村环境时会存在网络不稳定、传输干扰大等问题。为了弥补以上不足,我们结合LoRa网络的远距离、低功耗、高性能、支持大规模组网特性[7],研究设计一种基于LoRa网络的乡村环境监控可视化平台。
本平台的系统功能模块包括道路视频监控、下水道井盖监控、垃圾桶监控和水质监控等模块;需要连接的传感器有反映空气质量情况的PM2.5传感器、温湿度传感器,反映水质情况的电导率传感器、pH值传感器、浊度传感器,用于垃圾监控储存监控的超声波传感器,用于下水道井盖监控的甲烷传感器、三轴传感器、超声波传感器等等。
系统层次架构如图1所示。每个检测装置均包含相关传感器模块和LoRa节点模块,鱼塘中所有检测装置采集的数据均通过LoRa节点转发给LoRa网关,LoRa网关遵循MQTT协议将数据上传到系统的平台。系统平台为整个监控可视化平台的核心,包含数据库、MQTT服务端和一个大数据API。其中,MQTT服务端和网关设备都建立一个MQTT连接,网关设备可以是LoRa网关,或是NB-IoT网关、WiFi网关。通过建立相应的MQTT连接实时上传检测到的数据到平台,平台也可以通过这个MQTT连接实时下发一些控制指令给警报设备。系统平台的大数据API提供JSON数据格式的接口,可以供客户端编程调用。系统PC客户端目前包含环境总览、道路监控、智能垃圾桶、智能井盖和水质监控等5个模块。通过环境总览模块,用户可以查看反映乡村环境的噪音、 温度、湿度、 PM2.5等数据,也可以查看各个垃圾桶的空满状态。通过道路监控模块,可以获取主要路段采集的实时监控视频和历史视频,也可以远程控制该路段的智能路灯。通过水质监控模块,可以获取湖泊、水库水域的水质数据。
系统连接多个网关设备,每个设备可以安装多个传感器。系统中每增加一个网关设备,就需要为其分配唯一标识(device)、设备传输密钥(key)等信息。平台和网关设备采用MQTT version 3.1.1协议进行通讯。
图1 系统层次架构图
网关设备连接流程如图2所示。设备到平台之间建立连接时,设备向平台发起的第一个链接为Connect请求,Connect请求中携带了握手信息。平台不允许匿名登陆,协议包VariableHeader中部分用户名、密码标识位在连接时必须设置为1;否则,提示协议错误,将会断开连接。平台在接到握手信息后首先要进行鉴权验证,确定是否通过。当握手信息通过后,如果CleanSession=0, 平台将会加载上一次保存的一些设备信息(如果有保存),如客户端订阅的topic列表,以及还未完成确认的Qos1、Qos2级别的publish消息;如果CleanSession=1, 平台将不加载这些信息(不管上次有没保存)。最后,返回握手结果ConnAck。
LoRa网关设备与平台建立连接后,便可以完成传感数据的上报和上传工作,进行消息发布。设备数据上报有以下3种方式:
(1) Qos0(最多发送一次),服务端不发送任何响应。
(2) Qos1(至少发送一次),服务端给客户端回复相应的PubAck。
(3) Qos3(只发送一次),服务端给客户端回复相应的PubRec,客户端再回复服务端PubRel报文;如超时不回复,则平台会断开相应连接;反之,服务端最后给客户端回复PubComp报文。
图2 LoRa网关设备连接流程
按图3所示Qos0(Client→Server)方式数据上报流程,设备采用Publish Packet格式发布Qos0消息,平台收到上报传感数据后保存起来。
图3 Qos0(Client→Server)方式数据上报流程
按图4所示Qos1(Client→Server) 方式数据上报流程,设备使用Publish Packet格式发布Qos1消息,平台收到上报传感数据后保存起来,给设备回复相应的PubAck。
按图5所示Qos2(Client→Server) 方式数据上报流程,设备使用Publish Packet格式发布Qos2消息;平台收到上报传感数据后保存起来,并给设备回复相应的PubRec报文;设备需回复平台PubRel报文,如超时不回复,则平台会断开相应连接,并给设备回复PubComp报文。
图4 Qos1(Client→Server) 方式数据上报流程
图5 Qos2(Client→Server) 方式数据上报流程
平台下发命令给执行器设备(增氧设备、水泵设备、闸口设备和警报设备等)时,数据流程采用Qos0(Server→Client)方式,平台采用Publish Packet格式发布topic为sensorcmdreq的Qos0消息。设备收到消息后,将其作为控制执行器的指令来处理。
为了保证数据下载和命令发布接口的安全性及保密性,在API调用中加入了MD5 Token验证功能。客户端应用程序在执行初始阶段时会利用自己的合法用户名、密码从平台换取一个MD5 Token值,在后期阶段客户端应用程序在每次调用API请求时都携带并提交这个Token值,平台在收到这个Token值时会将其与历史值进行比较,以确认此次API调用的合法性。设备接入平台及数据传输的身份认证MD5 Token值具有时效性限制,超过时间戳范围即自动失效。
为了检验本次设计的乡村环境监控可视化平台的有效性,在我校物联网实训基地进行了实践应用。将系统平台部署在Intel(R) Core(TM)2 Quad CPU、8G内存、Windows Server2008R2(64位)、Sql server2008R2的环境中,PC客户端程序安装在Win10的.net framework4.5环境中。系统相关传感器节点、继电器节点及LoRa网关等网络设备在实训基地的部署网络见图6。
如图7所示,在系统环境监测客户端主界面可以总览实时环境。点击主界面中“环境导览”,可以总览安装在各处的智能垃圾桶和下水道井盖使用情况,获知当前空气质量监控的PM2.5、温度、湿度和噪音等数据。在主界面中可以通过左侧的“环境导览”“道路监控”“智能垃圾筒”“智能井盖”等5个导航按钮进入相应模块。通过“环境导览”模块,可以对鱼塘各个区域的监控摄像头进行增删、检查和管理,选择某1路、4路、16路摄像头等模式进行实时监控。通过“道路监控”的子功能模块,可以新增监控摄像头,或者查询某个摄像头在某历史时间段中的视频资料。通过智能垃圾桶功能模块,可周期性监控各个区域部署的智能垃圾桶内垃圾高度(见图8)。智能垃圾桶内垃圾高度等于桶高减去超声波测距长度,其中超声波测距上传周期设定为8:00 — 22:00时段内,每隔30 min上传一次,其余时段不上传,以减少平台网络请求的并发量。当智能垃圾桶内垃圾高度超过设定的阈值时,给出警报弹框,并推送一条提醒短信给相应区域的卫生员。通过系统水质监控功能模块,可以实时显示各片水域的pH、浊度、电导率等数据。 pH、浊度、电导率传感器采集数据通过相应的LoRa 节点进行转发,LoRa节点将该数据传输至 LoRa 网关, LoRa 网关将接收到的数据上传到平台,系统客户端从平台获取数据。
图7 平台PC客户端监控界面
图8 平台智能垃圾桶监控界面
本次设计的基于LoRa的乡村环境监控可视化,在系统客户端集成了环境导览、道路监控、智能垃圾桶监控和水质监控等功能模块。与当前一些环境远程监控可视化平台相比较,本平台采用LoRa网络通讯技术,检测传感器终端功耗低、网络连接广、稳定性好;同时,检测传感设备、网关设备和采集数据中均实现了管理云端化。对于本平台系统,还需要进一步加强数据的安全性和系统远程操控的稳定性,以防在云端化环境中被非法访问和利用。