APP下载

基于交互地图的传感器监控方法研究

2019-08-21林铠徐轲李耀辉焦东来

现代计算机 2019年21期
关键词:框架符号监控

林铠,徐轲,李耀辉,焦东来

(南京邮电大学地理与生物信息学院,南京210023)

0 引言

设备管理是企业、工厂、农业管理中的一个重要领域,加强设备管理对于保证工作的顺利进行,提高工作效率有着十分重要的意义。由于地图能将设备信息通过符号直观地表现出来,其在设备管理方面具有很大优势。目前地图在设备管理中的应用越来越广泛,例如,路灯管理系统[1]、古树名木GIS 管理系统[2]、城市交通GIS 管理系统[3]等,上海大学的项金灵等人也将地图应用于校园设备的管理[4]。

移动互联网时代已经开始,各种领域都开始慢慢地渗入互联网技术进行特定功能的拓展开发,地图也逐步运用互联网技术进行传感器等设备的管理。传感器带有空间位置,互联网可以使用传感器获取数据,两者的相互需求使得基于交互地图的传感器设备管理方法的应用越来越普及,Wunder[5]和Cordova-Lopez[6]分别使用交互地图进行农业生产监视传感器和大气污染检测传感器的管理。

现阶段,各种GIS 系统中都需要进行传感器设备的数据传输,并实时控制传感器设备的工作状态,而目前的交互地图还无法满足上述要求。因此,本文在总结前人研究成果的基础上,使用MINA 框架作为基于交互地图的传感器设备监控方法的通信框架,在数据交互的过程中使用Redis 数据库暂存数据,通过Web-Socket 协议互换Socket 和WebSocket 格式的数据,将WebSocket 数据发送至交互地图端进行传感器数据的可视化显示,Socket 数据发送至传感器端控制传感器的工作状态。该方法的设计思路以期对后续的研究有一定的启发意义。

1 相关技术

基于交互地图的监控方法需要满足以下几点要求:高速稳定地传输传感器的海量数据;实时不间断地监控传感器的工作状态;允许多个用户同时接入并同时管理多个传感器设备等。因此,针对基于交互地图的监控方法对稳定性、实时性和多线程性的需求,本文选取MINA 框架、Redis 数据库和WebSocket 协议这三项技术来进行监控方法的设计。

1.1 MINA框架

MINA(Multipurpose Infrastructure for Network Applications)是Apache 软件组织开发的一个可用于开发高性能和高可用性网络应用程序的基础框架[7]。MINA框架分为5 个部分[8]:IoService 负责在线程上创立套接字并监听是否有连接被建立;IoFilterChain 接收由IoService 转化的事件;如果建立了连接,IoFilter 会定义一组拦截器,调用Encoder 和Decoder 方法解码或编码数据,并把处理后的数据交给IoHandler;IoHandler 负责业务逻辑实现,核心功能是接收和发送数据;IoSession 负责用户定义属性与应用数据之间的联系。

由于MINA 框架具有多线程特性,可以同时监听多个不同位置的传感器的消息请求,既不会造成系统拥挤,也不会浪费资源,并且在进行大批量数据传输的同时,还能保持较高的通信速度。所以选择MINA 框架作为基于交互地图的传感器监控方法中的通信框架,可以同时处理多个传感器的数据,减少数据发送的延迟。

1.2 Redis数据库

Redis(Remote Dictionary Server)是NoSQL 数据库中使用广泛的非关系内存数据库,它的内部形式是Key-Value 键值对存储结构。相较于传统DB 数据库而言,Redis 作为一个内存数据库,读写数据的时候不会受到硬盘I/O 速度的限制,具有对数据高并发读写和高效率存储访问的性能[9]。

基于交互地图的传感器监控方法中,转发的数据量和连接的用户数众多,且交互地图在实时性方面需求较高,传统关系型数据库已经不能满足海量数据转发的要求。选取Redis 作为传感器监控方法的缓存数据库,可以暂存交互地图服务器和传感器设备之间转发的海量信息,缓解数据传输的压力,对提高整个系统的性能起到了关键性的作用。同时Redis 会周期性地把更新的数据写入追加的记录文件中,很好地实现了实时监控传感器的功能。

1.3 WebSocket协议

WebSocket 协议是由HTML5 提供的一种基于TCP的持久化协议,是为了解决持久性连接和资源浪费等问题而开发的一种新协议[10]。WebSocket 协议与传统的轮询方式相比,响应更加及时,可以在一段时间内保证服务端与客户端之间的数据实时同步;网络带宽占用少,WebSocket 只在服务端数据变化时才会发出通知消息;WebSocket 服务端只需要保持与每一个客户端连接即可,能够节省很多开销;并且WebSocket 协议中,服务端不需要等待客户端的消息请求,就可以直接推送数据给客户端,可以给用户带来良好的实时性体验[11-12]。由于交互地图为网页服务端,使用Socket协议无法完成数据的转发,因此,特选取WebSocket 协议实现网页服务端的数据转发。

2 总体设计

2.1 基于交互地图的传感器监控方法系统框架

基于交互地图的传感器设备监控方法由四个层次构成(图1),数据层、传输层、服务层、应用层。

图1 基于交互地图的传感器监控方法系统框架

数据层完成传感器的数据采集工作,控制传感器数据采集模块定时采集数据;

传输层分为两层,一层可以通过数据传输模块实现Socket 数据在传感器与面向传感器的MINA 数据转发框架之间的交换,另外一层可以实现WebSocket 数据在交互地图与面向交互地图的MINA 数据转发框架之间的交换。

服务层为两个MINA 数据转发框架,面向传感器的MINA 数据转发框架可完成两项工作:监听传感器的发送的数据,发送交互地图的鼠标点击事件,且可以对这两种数据进行编解码。面向交互地图的MINA 数据转发框架的功能为:监听交互地图的鼠标点击事件,发送传感器的数据至交互地图,并进行Socket 数据和WebSocket 数据的互相转换。

本研究对喜辽妥与常规护理对PICC置管患儿发生机械性静脉炎预防效果进行了对比分析,结果表明:治疗组机械性静脉炎的发生率低于对照组(P<0.05),严重程度小于对照组(P<0.01),此结果与李智英等[7]研究结果一致;治疗组机械性静脉炎的发生时间晚于对照组(P<0.01),对比两组患儿其他早期并发症的发生率比较差异无统计学意义(P>0.05),由此说明喜辽妥可有效延缓预防机械性静脉炎。

应用层为交互地图用户界面,该界面通过JavaScript 编写了一套映射规则,对传感器进行可视化显示。用户在交互地图用户界面,可通过点击传感器符号,远程控制传感器工作状态。

2.2 基于交互地图的传感器监控方法实现流程

在基于交互地图的传感器监控方法实现流程中(图2),数据的传输有两个流向。

图2 基于MINA框架的监控方法实现流程

在采集数据的过程中,传感器端的数据采集模块会定时采集数据并通过数据传输模块发送至面向传感器的MINA 数据转发框架。面向传感器的MINA 数据转发框架由于其多线程性,在其监听到传感器的建立请求命令后,立刻监听传感器数据,并将数据发布(publish)到Redis 数据库。传感器数据会暂存于Redis数据库。面向交互地图的MINA 数据转发框架将订阅(subscribe)Redis 数据库中的数据,并使用WebSocket协议将Socket 数据包装为WebSocket 数据,发送至交互地图。交互地图前端使用JavaScript 编写了一套完整的映射规则,根据传输信息的不同,以相应的Scalable Vector Graphics(SVG)符号表示传感器状态,实现传感器数据的可视化显示。

在控制传感器工作状态的过程中,用户在交互地图界面通过点击传感器图标,可以产生鼠标点击事件,这个命令以WebSocket 格式发送至面向交互地图的MINA 数据转发框架。面向交互地图的MINA 数据转发框架监听到数据后,将其转换为Socket 数据发布到Redis 数据库。面向传感器的MINA 数据转发框架订阅数据,并反馈给传感器,控制传感器的工作状态。

3 详细设计

3.1 基于订阅发布的数据转发机制

基于交互地图的传感器监控方法中传输的数据分为两种格式:Socket 和WebSocket。MINA 服务器和传感器之间传输的是Socket 数据,而交互地图和MINA服务器之间传输的是WebSocket 数据,所以必须要有两套编解码方式。为了连接两种编解码方式,本文选取Redis 数据库,使用其特有的订阅和发布功能,将两种数据存储在缓存数据库中,再使用WebSocket 协议进行数据转换,以此建立传感器设备和交互地图网页的数据传输通道。

3.2 交互地图端的设计

GeoServer 是目前较为流行的地图服务发布工具,其地图服务发布满足OGC 规范[13],因此被广泛的用于WebGIS 系统。GeoServer 可以将空间数据发布成JPG、SVG、GML、KML 等格式的地图数据,由于SVG 能够较好地支持JavaScript,所以本研究采用GeoServer 发布的SVG 格式的地图数据作为交互地图的底图。每个传感器抽象成SVG 图形块(Block)与底图叠加显示,不同的传感器数据对应不同的图标(SVG 图形块),其中,使用矩形代表传感器的主板部分,天线代表传感器的数据采集和传输模块。该对应关系通过映射规则的方式描述。例如,当接收到的传感器温度数据小于25℃时,生成的传感器SVG 符号轮廓为黑色;温度大于25℃时,其轮廓为红色。传感器数据传输至交互地图后,GeoServer 服务端会根据映射规则,设计出相应的SVG 符号,JavaScript 编写的网页脚本可以获取该SVG符号的ID,替换当前交互地图上的SVG,达到实时更新传感器SVG 符号的效果。

交互地图端具有响应用户操作的功能。当用户通过鼠标点击传感器SVG 符号时,SVG 符号会响应鼠标点击事件,生成控制(开启或关闭)命令,发送至传感器端控制其工作状态。接受到“开启”命令时,传感器端的传感器开始采集数据,交互地图端传感器SVG 符号主板部分(传感器符号中的矩形)替换为白色;接受到“关闭”命令时,传感器端的传感器停止采集数据,交互地图端传感器SVG 符号主板部分替换为黑色。

4 测试与分析

本文以南京市玄武区为实验区,进一步验证基于交互地图的传感器监控方法的可行性和映射规则的准确性。我们分别在研究区的不同位置放置了8 个传感器,每个传感器的dht11 模块每隔1h 采集一次数据,并将数据通过esp8266Wifi 模块发送至面向传感器的MINA 数据转发框架。本次实验仅观察3 个传感器所监视的地区在交互地图上的变化情况(图3),共采集7时-18 时的12 组数据(表1)来验证传感器符号的状态变化与测试数据的映射情况。

7-10 时及14 时-18 时,传感器采集到的温度低于26℃,传感器SVG 的轮廓为黑色;11 时-12 时,传感器采集到的温度高于26℃,传感器SVG 的轮廓为红色(图4)。

12 时45 分,点击交互地图上的传感器图标,产生“关闭”命令,传感器停止采集数据。13 时,交互地图后端没有接收到温度信息,且交互地图上的传感器SVG主板颜色被替换为黑色(图5)。13 时45 分,再次点击交互地图上的传感器图标,开启传感器。14 时,交互地图上的传感器主板恢复为白色,并且,交互地图后端重新接收到温度信息。

图3 初始交互地图界面图

图4 传感器温度发生变化

图5 传感器关闭

通过实验证明:交互地图会根据传感器实时发送的温度信息,相应地改变传感器符号轮廓的填充颜色,反映监视地区温度的高低变化。用户可以在交互地图网页上通过点击传感器符号,达到对传感器设备进行远程控制的功能。

5 结语

本文研究了在地图上进行数据交互的方法,并在数据的交互过程中实现传感器设备的监控。为了满足设备监控对稳定性、实时性和多线程性的需求,我们设计了相应的方法,通过Redis 的订阅和发布功能建立Socket 和WebSocket 的数据传输通道,实现了在交互地图上监控传感器设备的功能。这种方法为远程设备的监控与维护提供了一个直观方便、经济有效的手段。维护人员可以通过交互地图了解到传感器设备的状态,快速确定传感器设备的位置,对传感器设备产生的故障进行初步排查,实现快速、高效、准确的维护工作。但该方法尚存在一些不足,例如用户权限问题,所有用户均可以在交互地图界面中控制传感器工作状态。可是在实际应用中,传感器的控制具有很严格的要求。因此,给传感器的控制加上管理员权限,成为我们未来的改进方向。

猜你喜欢

框架符号监控
有机框架材料的后合成交换
框架
The Great Barrier Reef shows coral comeback
冬奥项目训练监控方法的研究——TRIMP、sRPE在短道速滑训练监控中的应用
学符号,比多少
基于无人机的监控系统设计
基于量化的风险监控预警机制探索与实践
“+”“-”符号的由来
浅谈框架网页的学习
草绳和奇怪的符号