一种轻量化的气象要素监测预警平台设计与实现

2024-08-23 00:00:00牛一鸣
河南科技 2024年14期

摘 要:【目的】区域自动气象站作为综合气象观测体系的重要组成部分,数量在不断增加。由于观测数据种类多、采集更新频率高,再加上极端天气对人们生产生活的影响越来越大,传统的网页报警、短信报警已经不能满足需求,迫切需要一种自动化的手段实时监测数据变化并进行有效预警。【方法】气象要素监测预警平台采用B/S架构,使用Django框架搭建Web服务,后台服务端采用Python语言编写。前端网页可供用户对实况气象观测数据进行报警条件设置,设置完成后即可关闭。后台服务端会定时循环读取最新观测数据并与报警条件进行比对,当达到触发条件时,由后台服务器调用阿里云语音服务自动向用户发起电话呼叫并播报实况观测数据详情。【结果】通过该平台,用户可根据当前天气的发展情况,快速灵活地定制阈值报警策略,在实况观测要素达到报警阈值时,以电话呼叫的方式对用户进行强提醒,实现了自动化、轻量化、可定制的数据监控功能。【结论】在实际业务运行中,该平台的应用在中小尺度天气系统监测预警、地方气象服务等气象防灾减灾领域中发挥了重要作用。

关键词:区域自动气象站;数据监控;自动语音呼叫

中图分类号:TP315" " "文献标志码:A" " "文章编号:1003-5168(2024)14-0031-05

DOI:10.19968/j.cnki.hnkj.1003-5168.2024.14.006

Design and Implementation of a Lightweight Meteorological Elements Monitoring and Warning Platform

Abstract: [Purposes] As an important part of the comprehensive meteorological observation system, the number of regional automatic meteorological stations is constantly increasing. Due to the variety of observation data and the high frequency of collection and updating, coupled with the increasing impact of extreme weather on people's production and life, the traditional webpage alarms or SMS alarms can no longer meet the demand, there is an urgent need for an automated means to monitor data changes in real time and provide effective early warning.[Methods] The meteorological elements monitoring and warning platform adopts B/S architecture, using Django framework to build Web services, and the back-end server is written in Python. The web page for users to set alarm conditions for live meteorological observations and then turn them off. The back-end server regularly and cyclically reads the latest observation data and compares it with the alarm conditions, and when the triggering conditions are reached, the back-end server calls Alibaba Cloud's Voice Messaging Service to automatically initiate a call to the user's phone and broadcast the details of the live observation data. [Findings] Through the platform, users can quickly and flexibly customize the threshold alarm strategy according to the development of the current weather process, and strongly alert the user with a phone call when the live observation element reaches the threshold, which achieves an automated, lightweight and customisable data monitoring function.[Conclusions] In actual operation, the application of the platform plays an important role in the field of meteorological disaster prevention and mitigation, such as monitoring and warning of small and medium scale weather systems and local meteorological services.

Keywords: regional automatic meteorological stations; data monitoring; automated voice calling

0 引言

为了满足中小尺度天气的系统监测预警和地方气象服务需要,气象部门建立了密集的区域自动气象站网络。作为综合气象观测体系的重要组成部分,这些区域自动气象站的观测资料在气象防灾减灾中发挥了重要作用。由于区域自动气象站数据种类多、采集更新频率高,迫切需要一种自动化的手段实时监测数据变化并进行有效预警。因此,本研究设计并实现了一种轻量化的气象要素监测预警平台(以下简称“平台”)。当实况观测数值达到提前设定的阈值时,将会自动拨打电话对值班员进行强提醒[1-4]。

1 总体设计

1.1 需求分析

目前,河南省已建成由2 800多个自动气象站组成的气象监测站网络,站点观测要素种类由单雨量要素到气温、气压、雨量、风向、风速、相对湿度、浅层地温七种要素不等,这些站点每1~5 min 会将实时观测数据上传至气象观测网络。在汛期时,强对流天气的高发时段虽然多在午后到傍晚,但在凌晨时段仍然会出现突发短时强降水。例如:2023年9月10日03时,洛阳市新安县正村站点的小时雨强达89.6 mm;2022年6月17日03时,焦作市槐树站点的小时雨强达88.2 mm。针对这种局部地区突发强降水,一线值班员需24 h不间断地关注着数值变化情况,给基层工作带来较大压力。不仅耗费大量人力,而且及时性也很难得到保证。目前应用的业务系统中,针对自动气象站实时观测数据的监测预警多以网页端播放声音用来提示为主,且报警条件设置方法较为复杂,无法根据当前天气形势快速灵活地设置报警条件,这种完全依赖人工监测预警的现状亟待改变。

1.2 平台总体设计

区别于传统的网页报警、短信报警等形式,该平台直接采用拨打电话的形式进行强提醒,用户针对观测数据添加报警条件设置(称之为“订阅”)后即可关闭网页。平台通过阿里云语音服务(Voice Messaging Service)实现自动拨打电话的呼叫功能,通过阿里云提供的SDK,联合运营商提供稳定、可靠、安全的云通信服务,该通信方式具备高可用、高并发、高质量的特点[5-8]。

平台采用B/S架构,将复杂的逻辑隐藏在服务器端。前端网页仅提供用户登录、添加或取消订阅、查看历史订阅的功能;后台服务端采用Python语言编写,使用Django框架搭建Web服务,基于多线程同步的考虑,采用MySQL搭建数据库,使用Git进行版本管理[9-11]。系统总体架构,如图1所示。

2 流程设计及功能模块

平台采用“极简高效”的设计理念,用户只需要简单的几次点击,就可快速地为实况气象观测数据添加一条订阅,复杂的订阅条件触发逻辑和语音呼叫消息队列处理隐藏在后台服务器中执行。后台服务器在读取实时观测数据后与订阅条件进行比对,当达到用户设置的触发条件时,由后台服务器调用第三方语音通信SDK,通过云服务自动向订阅账户的电话号码发起呼叫,在接通后播报订阅的观测数据详情。后台服务器将根据云服务异步返回的呼叫消息状态执行后续操作。平台工作流程,如图2所示。已触发的订阅状态将实时更新在平台前端网页供用户查询,如“尝试通知1次”“尝试通知2次”“用户完整接听”“用户无法接通(拒绝)”等。

2.1 用户模块

平台为不同地区的用户分配各自的账户,账户中包含默认地区、默认订阅号码、可添加的最大订阅数等信息,用户登录后即可添加订阅、查看或取消当前订阅及查看历史订阅状态。用户信息通过Django框架的自动管理工具Admin模块进行可视化管理。

2.2 订阅设置模块

点击“添加一条订阅”按钮,弹出订阅条件设置窗口,其中监控区域站所在地栏可选择需要监控的地区,如各县、市区、全区等,默认选中当前账户绑定地区;监控要素设置栏选择要监控的气象要素,如雨量、10 min雨强、风速、气温、能见度等;触发条件可设置为大于、小于,并在输入框中输入阈值数值;接受订阅电话号码栏默认填写当前账户绑定的电话号码,用户可根据情况任意修改。添加订阅过程如图3所示。

为了方便用户选取阈值数值,运用AJAX技术,定时异步请求后台服务器,在不重新加载整个页面的情况下,在输入框上方提供2个实时刷新的标签,用于显示所选监控区域指定观测要素的最大值和最小值,在更改监控区域或监控观测要素时,最大值和最小值的标签也将同步更改[12]。

订阅条件设置完毕后,点击提交订阅,即向后台服务器发送请求,服务器将此条订阅数据完善状态信息后写入数据库,在订阅被触发前,用户可以在所属账户的订阅列表中查看或取消此条订阅,如图4所示。

当所选区域的实况观测数值达到订阅条件时,该条订阅被触发,后台服务器通过运营商网络向指定接受订阅的电话号码发起电话呼叫,电话接听后,根据触发的订阅内容播放机器合成语音,例如:“请注意:伊川县白沙站点附近雨量达到10 mm”,语音播放3遍后自动挂断。若出现呼叫失败,如占线、超时未接听、用户挂断、用户不在服务区等情况,后台会在1分钟后再次发起呼叫,直至达到设置的最大重试呼叫次数。用户可在平台上查看已触发订阅的状态信息,包括订阅的触发条件、尝试呼叫次数、最终呼叫结果、最终呼叫时间,如图5所示。

2.3 后台服务模块

后台服务器主要处理2个任务,即订阅条件遍历和呼叫消息队列处理。

订阅条件遍历任务是从数据库中读取所有用户提交的订阅条件,与实时观测数据进行对比,当条件满足时,调用云通信API来呼叫订阅号码,同时将订阅条件状态修改为已触发。

无论呼叫是否成功,每条呼叫都将在呼叫消息队列中异步返回一条呼叫回执,需要从消息队列中不断尝试读取。当读取到回执后,将对应的订阅条件状态进行相应修改,若呼叫成功,则状态为已完成;若呼叫失败且呼叫次数小于设置的重试呼叫次数,则在1分钟后再次发起呼叫,若呼叫次数达到重试呼叫次数,则标记状态为失败。

此外,还有一个重要的功能需要考虑。平台的作用是当实况观测要素数值达到用户设置的阈值时,对用户发出强提醒,那么无论任何原因,出现无法按照订阅条件通知用户的情况都是无法被接受的。因此,需要一套独立于后台服务器运行的守卫机制,确保平台本身出现异常时,能够立刻通知管理员进行修复。于是选择在云服务器上部署守卫系统,但平台本身的异常包含但不限于后台服务器死机、网络异常、代码BUG等,显然不能由后台服务器向守卫系统报告运行异常。应反其道行之,守卫系统初始化时,即提交若干分钟后报告管理员出现异常的定时器,之后若在定时器触发前收到后台服务器的正常报告,则重置定时器;若在定时器触发前未收到正常报告,则定时器触发,立即通知系统管理员处理异常。

3 结语

该平台的研发是为了探索一种自动化、轻量化、可定制的数据监控方法。用户可根据当前天气过程的发展情况,快速地定制报警阈值。该平台已在洛阳市气象部门投入业务应用,在中小尺度天气系统监测预警、地方气象服务等气象防灾减灾领域中发挥了重要作用。在后续的开发中,可根据《河南省强对流、暴雨天气预警发布技术规范和分类强天气监测预警指标》等预报方法,创建缺省的智能订阅条件,对值班人员进行智能预警。除了监控观测要素数值外,也可对区域站故障及异常值进行自动监控,提高数据可用性。

参考文献:

[1]汪玮,赵宝义,章超,等.区域自动气象观测站网信息管理系统设计与实现[J].中国管理信息化,2019,22(17):177-180.

[2]覃丰阜,吴桂明,林益才.封开县区域自动气象站数据传输稳定性研究[J].科学技术创新,2019(5):78-79.

[3]侯江生,邹哲馨.贺州市区域自动气象站监控平台设计与实现[J].气象研究与应用,2018,39(4):74-76,94.

[4]蒋礼珍,符永兴,徐一晖.市级区域自动站信息处理系统的开发和应用[J].气象研究与应用,2010,31(1):77-79.

[5]冯继东.智能语音分析系统在呼叫中心的推广及其应用[J].电子世界,2019(11):186-187.

[6]王宏芳.智能语音客服系统在呼叫中心领域的应用及展望[J].通信企业管理,2017(6):57-59.

[7]滕庆武,朱青,谢海波.基于设计的GPS接口通信协议的语音呼叫系统方案[J].计算机应用与软件,2017,34(6):113-119.

[8]古雄. SOA架构下基于云计算平台的语音及短信实时报警系统[D].南宁:广西大学,2018.

[9]葛宇航.基于Django的留学生信息管理系统设计与实现[J].通讯世界,2019,26(8):35-36.

[10]刘进京.排查MySQL主从数据异常故障[J].网络安全和信息化,2019(8):153-154.

[11]邹奕轩,赵海桐,赵紫婷,等.基于Python和MySQL的医疗机构药品及耗材信息管理系统的设计与实现[J].中国医学装备,2019,16(9):115-119.

[12]谢春祥,叶舒畅.用AJAX解决模态对话页面的刷新异常问题[J].南昌师范学院学报,2019,40(3):30-32.