基于SOA的智慧河道水质监测预警平台设计及应用
2021-02-25邱曙光白若琛庞成鑫
贾 佳 邱曙光 白若琛 庞成鑫
(上海电力大学电子与信息工程学院 上海 200090)
0 引 言
水利信息化是现代化水利的重要组成部分,“十三五”期间水利部提出要以水利信息化带动水利现代化[1],加强基础设施和保障环境建设,全面推进全国水利信息化。现如今,城市水利信息采集及管理由人工测试记录逐步转变为各种智能化管理模式,如:智能管理采用遥感、空间定位、卫星航空定位、视频监控等科学手段,动态监测主要河流湖泊、滨水海岸线和河道采砂。[2],但是上述技术均无法实现全方位的监控和调度、各个水文站信息相对独立,易造成偏远区域河流采砂监测不完善,干流流域私自采砂现象影响河道正常的行洪与泄洪等现象。协调管理机制的不完善使得很多河流无法得到应有的管理,导致水环境污染问题不断加重[3]。因此,管理部门需要及时调查取证,掌握实时动态,以免造成很多不必要的麻烦。
1 基于SOA的系统整体架构
1.1 平台关键技术
低功耗广域网络(Low Power Wide Area Network,LPWAN)是具有超低功耗、广覆盖、低带宽、低速率、支持海量连接的物联网技术[4],适合状态变化慢、采集频次低、实时性要求低、分布松散的“小数据”连接。LPWAN网络常见技术有LoRa、NB-IoT、SigFox、LTE-M、RPMA、Weightless、Amber Wireless等。
SOA(Service Oriented Architecture)是一个业务驱动的框架[5],集成了对业务流程和IT基础设施的之处,提供安全、标准、可重用的组件,即服务;通过接口来实现各模块间的通信,接口的方式降低了模块之间的耦合度,从而使各种新旧系统进行无缝整合;具有基于标准、松散耦合、共享服务、粗粒度和联合控制等优势,可以有效地解决传统集成方案存在的弊端,简化了应用间集成拓扑结构[6],采用开放的标准,实现了不同系统间的消息、事件和服务层面的动态的互联互通,更有利于不同系统间的互操作性的提高[7]。
企业服务总线(Enterprise ServiceBus,ESB)是构建基于SOA解决方案时所使用基础架构的关键部分[8],是由中间件技术实现并支持SOA的一组基础架构功能。
1.2 系统架构
本文将SOA的设计思想引入到水质自动化监测系统的平台设计中,使用SSM框架同时融合了ESB系统为实现各异构系统平台共同接入为智慧河道管理系统提供更多服务,吸取SOA面向服务架构的优点,使平台具有更好的服务性、多源融合性及科学性等。系统整体架构如图1所示。
图1 基于SOA的河道管理系统架构
(1) 数据持久层。数据持久层是专门负责数据持久化的逻辑层,提供对数据库的CRUD(增删改查)操作[9]。持久层使用MySQL和MongoDB数据库进行存储以实现数据持久性,并且可以实现Device Shadow和HTTP服务。本文通过阿里云物联网套件作为中间件来实现数据镜像存储,同时定义了大量HTTP接口为用户界面服务提供帮助。
(2) 系统服务管理层。系统服务管理层是共享和交换底层数据的核心部分[10],是业务系统各个功能和任务的抽象和封装,其功能实现主要依赖于适配器和企业服务总线。该平台包含五类服务:设备管理传输服务、河道信息传输服务、权限信息传输服务、水质监测传输服务、数据采集传输服务。
高中是学生学习知识的关键期,这也是大家公认的一个特殊时期。那么,面对这个特殊时期,学生和教师都应该绷紧“一根弦”—学生要让自己踏上接受高等教育的道路,而教师则要将学生送上他们理想的高等学府。但是,这所有的一切都是建立在教师的高效教学和学生的高效学习的基础之上的。根据调查显示,“多元互动”式的合作学习就是一个不可多得且十分高效的教学方法。其以“互动”“合作”为手段,以教学课堂为依托,进而实施“多元互动”式的合作学习,以促进学生的知识吸收,提升高中语文课堂的教学效率。
(3) 应用展示层。应用展示层通过Echart库向用户展示区域内所有河道位置及放置传感器的点位信息;结合Web服务技术跨平台向用户动态展示河道相关数据、地理位置、水质等级、各水质参数走势等。
1.3 系统功能设计
基于SOA架构设计如图1中各类服务,将通用服务接口搭载在ESB上,这些服务通过不同协议、接口对采集到的数据及需要发送的数据进行系统化管理,同时为应用端服务提供基础。主要服务功能如下:
(1) 设备管理传输服务:使用SOAP轻量型协议与服务器进行消息交换[11]、消息控制,实现包括:对镜像阿里云设备进行激活,添加收发规则引擎对各套件设备数据格式、规则详情进行控制管理,设置设备连接等。
(2) 河道信息传输及权限服务:将河道专题图、河道基本信息、河流长办公信息、河道统计、用户角色设定、对应权限等上传至基本管理应用中。
(3) 水质监测传输服务:将训练好的深度学习算法网络存储在云端,解析后的数据通过该服务调取模型进行运算,实现云端数据智能化分析和预测。
(4) 数据采集传输服务:通过Socket连接网关网络服务器,从中提取JSON格式数据,对原生数据及无人机视频资料进行存储。所有服务在应用服务器中均可按需进行调用实现相应功能。
2 数据处理及可视化
2.1 数据集成
河道监测平台集成了包括水文站人工采集信息、传感器监测信息、沿岸涉水信息、各类河道新闻资讯、河道管理规则、沿河视频监控等多方面数据资源。
系统采用中间件模式统一管理各种异构数据库,遗留系统和Web资源。中间件位于异构数据源系统(数据层)和应用程序(应用层)之间[12],向下可以协调各数据源系统,向上可以为访问集成数据的应用提供统一数据模式和数据访问的通用接口。各水质传感器可基于不同的LPWAN技术进行组网,以实现低功耗、长距离数据采集及传输。不同系统的网关NS通过Websocket技术与阿里云物联网套件SDK相连接,组成数据流通中间件。SDK接收到采集数据后,形成设备影子数据,通过Topic传输设备影子数据,将原始数据存储在云服务器中并进行算术处理;水质传感器通过RS485/232分别与各协议集中器相连接,遵循LoRaWAN、CoAP、UDP等不同协议规定将各类低功耗物联网数据传输至网关NS,从而实现多源数据的接入,如图2所示。
图2 多协议数据接入
2.2 数据存储及分类
针对上述系统中接入的异构数据,采用三层B/S架构,服务器分为存储服务器、运算服务器及应用服务器。数据存储模式为“主存-辅存”模式[13],其中存储服务器中的数据库是主数据库,用于存储不同协议接入的各类原生数据(包括JSON、XMl等)及解析后数据。
采集出的数据根据类型可以分为结构化数据和非结构化数据[14],其中:结构化数据有传感器采集数据、设备状态信息、网关实时状态设备等;非结构化数据有运算产生的图表、页面展示目录信息、地理信息、遥感信息等。
结构化数据采用分布式关系型数据库(MySQL)进行存储。数据以表-字段形式存储在数据库中, 将数据表水平拆分到后端的每个分数据库的分表中。根据不同状态及服务,本文将数据库文件分为 “系统”“用户”“云端”“终端”。分别管理河道基本信息、河道定位坐标、传感器设备控制命令、采集数据等。数据库中每个分库负责每一份数据的读写操作,从而有效地分散了整体的访问压力, 提高了大型数据访问效率。
对半结构及非结构数据采用分布式文档存储数据库(MangoDB)。实现对JSON格式文本进行动态查询,同时查询文档中内嵌的对象及数组、关键段提取等; 对非结构化类数据,如无人机采集视频数据进行结构转换、清除无用数据等处理。
2.3 数据可视化
系统应用层使用MVC架构,将用户界面与逻辑运算分离,实现代码模块化。用户请求通过前端.jsp代码,将用户请求发送到Dispatch Servlet,随后通过.jsp中的URL地址查找Handler Mapping将请求分派给相应的Handler(Controller),调用相应的逻辑运算对请求进行处理,如监测数据查询服务、获取产品设备状态、地理信息获取、控制数据查询间隔、预警信息读取等服务,处理完成后将ModelAndView再传回Dispatcher Servlet,并将视图渲染到对应的JSP。
平台采用JavaScript技术实现的可视化库ECharts来更直观地呈现河道水质监测不同参数的变化情况,动态表图展示参数走势。该平台可在PC和移动设备上顺利运行,并与大多数当前浏览器兼容。提供可视化、交互式和高度可定制的数据可视化图表;同时,ECharts通过增量渲染技术支持Canvas / SVG双引擎渲染,可以实现数千万的数据渲染[15]。该平台基于ECharts库,使前端能够可视化大量监控数据的呈现,并具有平滑的动态效果。
3 监测预警算法设计
3.1 算法模型选择及设计
河流评估主要根据代表监测点的数据和河段的监测来评估河流或河段的分数[16]。仅在河道中放置一组传感器远不能准确测评出整条河道的水质信息,因此在进行监测、预警设计前针对一条河道分为N段,每段长度约为河宽的5~10倍,连续放置M类传感器在各河段进行数据采集,采用评价河段-监测点-监测河段-监测河道的技术路线,最终综合各河段数据以保证整条河道监测的完整性,如图3所示。设计包括对整条河道水质等级的监测及对一条河中某河段的某一参数进行预测报警。同时,对数据进行质量检测,包括对采集数据的合理性和时间连续性进行检查,对不符合检查标准的数据自动标注为异常数据,为下文数据深度应用与挖掘提供支持。
图3 传感器监测点位
监测技术是监测和测量水中污染物类型,各种污染物浓度及其变化以评估水质的过程。模型使用常见的BP神经网络,具有前向传播反馈功能,能够更好地修正各层级间权值问题,找出最优解。由于BP网络容易陷入局部最优解,因此利用PSO对BP网络进行参数优化,PSO是基于种群的一种演化算法,根据个体对环境的适应度来决定个体是否能移动到好的区域[17],使被优化算法具有更快收敛速度、更强的搜索能力和适用性等。
利用采集到的一个月的水质数据进行训练,设置输入层为五类传感器参数,根据中国水质分类文件《地表水环境质量标准GB3838—2002》将输出分为I、II、III、IV、V类,即输出向量为[1,2,3,4,5]。对河道中每一段进行检测。最终,所有河段中当Ⅰ~Ⅲ类大于90%时判断整条河质量为优,Ⅰ~Ⅲ类大于等于75%且小于90%时为良,以此类推,如图4所示。
图4 监测预测模型选择设计框图
预警信息包括监测预警对象、监测预警结果两部分[18]。当用户选择AR模型时,选调器跳转到AR模块进行运算,具体方法如下:以河道中pH值为例,预警对象为河道未来几天pH值,预测模型选用回归模型:
xt=ø1xt-1+ø2xt-2+…+ønxt-n+at
(1)
式中:xt-i(i=0,1,2,…,n)为历史数据;øn(i=0,1,2,…,n)为模型系数;at为均值为0、方差为δ2的平稳白噪声序列。传感器信息输入模型后,根据预测值与实际值之间差值,在规定的阈值范围内进行报警判断,预警信息标志分别设为“0”“1”,通过Ajax技术返回预警标志“1”对应的文字警报信息,实现自动化监控预警。该数据运算均在运算服务器中,采用多线程处理和并行计算模式完成多不同河段pH值、ORP、溶解氧等多类数据质量检查、数据滑动平均、迭代预测等处理流程。
上述监测及预测算法模型均基于MATLAB 2017平台进行搭建,通过MATLAB核心算法库设计数据处理算法,使用其中的Deploytools工具箱将.m文件生成Java包,从而在Java中对不同算法函数进行调用,实现同步算法的输入输出管理。采用Redis (Remote dictionary server) 缓存服务器和线程池技术对同一算法进行多次处理及结果存储,实现高效和简洁的编程,提高算法导入后的应用效果。
3.2 算法测试与仿真
监测算法仿真、测试仿真过程中,训练数据选取总体样本的前2/3,共1 200组数据(包含五种水质等级数据)进行PSO-BP模型训练。
PSO-BP模型通过设置粒子数量、迭代次数、粒子运动次数对BP网络中net.iw{1,1}、net.b{1}、net.lw{2,1}及net.b{2}(不同层级间权值)依次进行迭代最优值计算。其中网络参数设置为:网络输入输出层元素个数分别为五类传感器及其对应等级;最大收敛次数为1 000;收敛误差为1e-50;学习速率为10e-4;网络以RMSE为性能函数测试不同隐藏层层数最终确定隐藏层数为6层。
(2)
经过多次训练,选取RMSE结果为0.008 9的网络固定网络参数。输入新的测试集(样本后1/3),结果如图5所示。横坐标为训练集样本个数,其中每一个样本都包含五个数值即五类水质参数值。纵坐标即每个样本对应的水质等级。图中期望输出即原始样本,也就是每个样本应当输出的等级值;预测输出即拿原始输入样本通过上述训练网络后的输出结果,对比可见预测值基本在期望值上下浮动。
图5 PSO-BP模型测试
通过图6所示的误差分析,可以更加直观地看出这些误差基本维持在±0.5内,由于样本等级间隔为1,对于间误差的数据可以通过程序判断来进行校正。
图6 误差分析(PSO-BP模型)
为了更加确保该模型不仅整体预测效果佳,同时对局部数据也有较强的可靠性,因此分别对不同算法模型下不同等级的新样本数据进行计算,测试结果见表1。可以明显看出PSO-BP算法测试中误差不超过1.5%,可以完全适用于河道预测。
表1 不同算法模型下新样本数据测试
预测算法仿真中,由于预测值和历史数据间关系密切,因此,在采集数据时对一个站点采集频率设置为24次/天,对一个站点一天内采集到的数据进行切尾均值计算,得出该站点当天pH情况;对整条河道所有站点进行切尾均值后得出整条河道的综合值作为该河道当天pH值。
测试选用河道pH样本中的前80个数据作为历史数据,预测随后5天数据,如图7所示,其中“*”为真实样本数据,“△”为通过AR模型后的预测值。通过式(2)的计算得出其RMSE为1.6%,基本可以满足预测。
图7 pH值预测结果(AR模型)
4 平台运行效果
系统采用Eclipse平台进行开发,使用Java语言进行编写,基于ASP.net、SOA 架构,利用HTML、CSS、JavaScript及服务器脚本,开发了上海市智慧河道云平台。平台实现融合多协议传感器数据接入,同时对接嘉定区水利局河道数据信息,提供真实可靠的数据采集展示平台。
平台运行界面如图8所示。图8(a)展示了河道管理平台的整体功能分布及数据采集控制部分。该平台通过河道经纬度及百度地图插件将所有监测河道标记在地图中,同时实现了河道沿河管理、传感设备的随时监控、数据实时采集、水质数据PDF生成等功能。针对河道中放置的采集传感器,设计自由组合命令方式,根据用户需求设置发送设备的入网时间、发送内容、定时发送等功能,使平台更加贴合实际使用。图8(b)展示了平台在线水质监测部分。在线监测以5 s为周期自动更新各个监测数据,使用柱状图直观展示河道参数走势,便于分析,分析、预测中可以选择不同的河道进行分析、预测天数、预测参数等,另外还有大屏显示页面,手机端页面等综合上述功能。点击大屏页面地图中不同区域,通过Ajax技术使网页迅速跳转至区域河道信息展示,显示河道中设备状态、河道等级、及各参数状态等。
(a) 云平台界面
5 结 语
本文搭建了基于SOA架构的“云管端”一体化服务平台。基于LPWAN的低功耗物联网平台,借助阿里云中间件实现多种协议数据接入,形成多源异构的平台。结构化数据设计了针对用户数据分析的监测、预测系统,将PSO-BP及AR算法嵌入应用服务器内使用以便用户在平台进行实时监测。
同时,平台可以从多方面清晰地描述河湖健康与环境压力响应关系、系统地识别河湖健康状况,为揭示受损成因提供帮助;紧密结合河流和湖泊系统的任务要求,为加强河流和湖泊管理提供支持;多源融合数据访问可以为不同地区和类型的河流和湖泊健康评估的交叉参考比较提供支持;河流和湖泊的环境条件和评价指标验证了该平台是一种高效、经济的监测和管理平台。