摘 要:【目的】區(qū)域自動(dòng)氣象站作為綜合氣象觀測(cè)體系的重要組成部分,數(shù)量在不斷增加。由于觀測(cè)數(shù)據(jù)種類多、采集更新頻率高,再加上極端天氣對(duì)人們生產(chǎn)生活的影響越來(lái)越大,傳統(tǒng)的網(wǎng)頁(yè)報(bào)警、短信報(bào)警已經(jīng)不能滿足需求,迫切需要一種自動(dòng)化的手段實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)變化并進(jìn)行有效預(yù)警?!痉椒ā繗庀笠乇O(jiān)測(cè)預(yù)警平臺(tái)采用B/S架構(gòu),使用Django框架搭建Web服務(wù),后臺(tái)服務(wù)端采用Python語(yǔ)言編寫(xiě)。前端網(wǎng)頁(yè)可供用戶對(duì)實(shí)況氣象觀測(cè)數(shù)據(jù)進(jìn)行報(bào)警條件設(shè)置,設(shè)置完成后即可關(guān)閉。后臺(tái)服務(wù)端會(huì)定時(shí)循環(huán)讀取最新觀測(cè)數(shù)據(jù)并與報(bào)警條件進(jìn)行比對(duì),當(dāng)達(dá)到觸發(fā)條件時(shí),由后臺(tái)服務(wù)器調(diào)用阿里云語(yǔ)音服務(wù)自動(dòng)向用戶發(fā)起電話呼叫并播報(bào)實(shí)況觀測(cè)數(shù)據(jù)詳情。【結(jié)果】通過(guò)該平臺(tái),用戶可根據(jù)當(dāng)前天氣的發(fā)展情況,快速靈活地定制閾值報(bào)警策略,在實(shí)況觀測(cè)要素達(dá)到報(bào)警閾值時(shí),以電話呼叫的方式對(duì)用戶進(jìn)行強(qiáng)提醒,實(shí)現(xiàn)了自動(dòng)化、輕量化、可定制的數(shù)據(jù)監(jiān)控功能?!窘Y(jié)論】在實(shí)際業(yè)務(wù)運(yùn)行中,該平臺(tái)的應(yīng)用在中小尺度天氣系統(tǒng)監(jiān)測(cè)預(yù)警、地方氣象服務(wù)等氣象防災(zāi)減災(zāi)領(lǐng)域中發(fā)揮了重要作用。
關(guān)鍵詞:區(qū)域自動(dòng)氣象站;數(shù)據(jù)監(jiān)控;自動(dòng)語(yǔ)音呼叫
中圖分類號(hào):TP315" " "文獻(xiàn)標(biāo)志碼:A" " "文章編號(hào):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 引言
為了滿足中小尺度天氣的系統(tǒng)監(jiān)測(cè)預(yù)警和地方氣象服務(wù)需要,氣象部門(mén)建立了密集的區(qū)域自動(dòng)氣象站網(wǎng)絡(luò)。作為綜合氣象觀測(cè)體系的重要組成部分,這些區(qū)域自動(dòng)氣象站的觀測(cè)資料在氣象防災(zāi)減災(zāi)中發(fā)揮了重要作用。由于區(qū)域自動(dòng)氣象站數(shù)據(jù)種類多、采集更新頻率高,迫切需要一種自動(dòng)化的手段實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)變化并進(jìn)行有效預(yù)警。因此,本研究設(shè)計(jì)并實(shí)現(xiàn)了一種輕量化的氣象要素監(jiān)測(cè)預(yù)警平臺(tái)(以下簡(jiǎn)稱“平臺(tái)”)。當(dāng)實(shí)況觀測(cè)數(shù)值達(dá)到提前設(shè)定的閾值時(shí),將會(huì)自動(dòng)撥打電話對(duì)值班員進(jìn)行強(qiáng)提醒[1-4]。
1 總體設(shè)計(jì)
1.1 需求分析
目前,河南省已建成由2 800多個(gè)自動(dòng)氣象站組成的氣象監(jiān)測(cè)站網(wǎng)絡(luò),站點(diǎn)觀測(cè)要素種類由單雨量要素到氣溫、氣壓、雨量、風(fēng)向、風(fēng)速、相對(duì)濕度、淺層地溫七種要素不等,這些站點(diǎn)每1~5 min 會(huì)將實(shí)時(shí)觀測(cè)數(shù)據(jù)上傳至氣象觀測(cè)網(wǎng)絡(luò)。在汛期時(shí),強(qiáng)對(duì)流天氣的高發(fā)時(shí)段雖然多在午后到傍晚,但在凌晨時(shí)段仍然會(huì)出現(xiàn)突發(fā)短時(shí)強(qiáng)降水。例如:2023年9月10日03時(shí),洛陽(yáng)市新安縣正村站點(diǎn)的小時(shí)雨強(qiáng)達(dá)89.6 mm;2022年6月17日03時(shí),焦作市槐樹(shù)站點(diǎn)的小時(shí)雨強(qiáng)達(dá)88.2 mm。針對(duì)這種局部地區(qū)突發(fā)強(qiáng)降水,一線值班員需24 h不間斷地關(guān)注著數(shù)值變化情況,給基層工作帶來(lái)較大壓力。不僅耗費(fèi)大量人力,而且及時(shí)性也很難得到保證。目前應(yīng)用的業(yè)務(wù)系統(tǒng)中,針對(duì)自動(dòng)氣象站實(shí)時(shí)觀測(cè)數(shù)據(jù)的監(jiān)測(cè)預(yù)警多以網(wǎng)頁(yè)端播放聲音用來(lái)提示為主,且報(bào)警條件設(shè)置方法較為復(fù)雜,無(wú)法根據(jù)當(dāng)前天氣形勢(shì)快速靈活地設(shè)置報(bào)警條件,這種完全依賴人工監(jiān)測(cè)預(yù)警的現(xiàn)狀亟待改變。
1.2 平臺(tái)總體設(shè)計(jì)
區(qū)別于傳統(tǒng)的網(wǎng)頁(yè)報(bào)警、短信報(bào)警等形式,該平臺(tái)直接采用撥打電話的形式進(jìn)行強(qiáng)提醒,用戶針對(duì)觀測(cè)數(shù)據(jù)添加報(bào)警條件設(shè)置(稱之為“訂閱”)后即可關(guān)閉網(wǎng)頁(yè)。平臺(tái)通過(guò)阿里云語(yǔ)音服務(wù)(Voice Messaging Service)實(shí)現(xiàn)自動(dòng)撥打電話的呼叫功能,通過(guò)阿里云提供的SDK,聯(lián)合運(yùn)營(yíng)商提供穩(wěn)定、可靠、安全的云通信服務(wù),該通信方式具備高可用、高并發(fā)、高質(zhì)量的特點(diǎn)[5-8]。
平臺(tái)采用B/S架構(gòu),將復(fù)雜的邏輯隱藏在服務(wù)器端。前端網(wǎng)頁(yè)僅提供用戶登錄、添加或取消訂閱、查看歷史訂閱的功能;后臺(tái)服務(wù)端采用Python語(yǔ)言編寫(xiě),使用Django框架搭建Web服務(wù),基于多線程同步的考慮,采用MySQL搭建數(shù)據(jù)庫(kù),使用Git進(jìn)行版本管理[9-11]。系統(tǒng)總體架構(gòu),如圖1所示。
2 流程設(shè)計(jì)及功能模塊
平臺(tái)采用“極簡(jiǎn)高效”的設(shè)計(jì)理念,用戶只需要簡(jiǎn)單的幾次點(diǎn)擊,就可快速地為實(shí)況氣象觀測(cè)數(shù)據(jù)添加一條訂閱,復(fù)雜的訂閱條件觸發(fā)邏輯和語(yǔ)音呼叫消息隊(duì)列處理隱藏在后臺(tái)服務(wù)器中執(zhí)行。后臺(tái)服務(wù)器在讀取實(shí)時(shí)觀測(cè)數(shù)據(jù)后與訂閱條件進(jìn)行比對(duì),當(dāng)達(dá)到用戶設(shè)置的觸發(fā)條件時(shí),由后臺(tái)服務(wù)器調(diào)用第三方語(yǔ)音通信SDK,通過(guò)云服務(wù)自動(dòng)向訂閱賬戶的電話號(hào)碼發(fā)起呼叫,在接通后播報(bào)訂閱的觀測(cè)數(shù)據(jù)詳情。后臺(tái)服務(wù)器將根據(jù)云服務(wù)異步返回的呼叫消息狀態(tài)執(zhí)行后續(xù)操作。平臺(tái)工作流程,如圖2所示。已觸發(fā)的訂閱狀態(tài)將實(shí)時(shí)更新在平臺(tái)前端網(wǎng)頁(yè)供用戶查詢,如“嘗試通知1次”“嘗試通知2次”“用戶完整接聽(tīng)”“用戶無(wú)法接通(拒絕)”等。
2.1 用戶模塊
平臺(tái)為不同地區(qū)的用戶分配各自的賬戶,賬戶中包含默認(rèn)地區(qū)、默認(rèn)訂閱號(hào)碼、可添加的最大訂閱數(shù)等信息,用戶登錄后即可添加訂閱、查看或取消當(dāng)前訂閱及查看歷史訂閱狀態(tài)。用戶信息通過(guò)Django框架的自動(dòng)管理工具Admin模塊進(jìn)行可視化管理。
2.2 訂閱設(shè)置模塊
點(diǎn)擊“添加一條訂閱”按鈕,彈出訂閱條件設(shè)置窗口,其中監(jiān)控區(qū)域站所在地欄可選擇需要監(jiān)控的地區(qū),如各縣、市區(qū)、全區(qū)等,默認(rèn)選中當(dāng)前賬戶綁定地區(qū);監(jiān)控要素設(shè)置欄選擇要監(jiān)控的氣象要素,如雨量、10 min雨強(qiáng)、風(fēng)速、氣溫、能見(jiàn)度等;觸發(fā)條件可設(shè)置為大于、小于,并在輸入框中輸入閾值數(shù)值;接受訂閱電話號(hào)碼欄默認(rèn)填寫(xiě)當(dāng)前賬戶綁定的電話號(hào)碼,用戶可根據(jù)情況任意修改。添加訂閱過(guò)程如圖3所示。
為了方便用戶選取閾值數(shù)值,運(yùn)用AJAX技術(shù),定時(shí)異步請(qǐng)求后臺(tái)服務(wù)器,在不重新加載整個(gè)頁(yè)面的情況下,在輸入框上方提供2個(gè)實(shí)時(shí)刷新的標(biāo)簽,用于顯示所選監(jiān)控區(qū)域指定觀測(cè)要素的最大值和最小值,在更改監(jiān)控區(qū)域或監(jiān)控觀測(cè)要素時(shí),最大值和最小值的標(biāo)簽也將同步更改[12]。
訂閱條件設(shè)置完畢后,點(diǎn)擊提交訂閱,即向后臺(tái)服務(wù)器發(fā)送請(qǐng)求,服務(wù)器將此條訂閱數(shù)據(jù)完善狀態(tài)信息后寫(xiě)入數(shù)據(jù)庫(kù),在訂閱被觸發(fā)前,用戶可以在所屬賬戶的訂閱列表中查看或取消此條訂閱,如圖4所示。
當(dāng)所選區(qū)域的實(shí)況觀測(cè)數(shù)值達(dá)到訂閱條件時(shí),該條訂閱被觸發(fā),后臺(tái)服務(wù)器通過(guò)運(yùn)營(yíng)商網(wǎng)絡(luò)向指定接受訂閱的電話號(hào)碼發(fā)起電話呼叫,電話接聽(tīng)后,根據(jù)觸發(fā)的訂閱內(nèi)容播放機(jī)器合成語(yǔ)音,例如:“請(qǐng)注意:伊川縣白沙站點(diǎn)附近雨量達(dá)到10 mm”,語(yǔ)音播放3遍后自動(dòng)掛斷。若出現(xiàn)呼叫失敗,如占線、超時(shí)未接聽(tīng)、用戶掛斷、用戶不在服務(wù)區(qū)等情況,后臺(tái)會(huì)在1分鐘后再次發(fā)起呼叫,直至達(dá)到設(shè)置的最大重試呼叫次數(shù)。用戶可在平臺(tái)上查看已觸發(fā)訂閱的狀態(tài)信息,包括訂閱的觸發(fā)條件、嘗試呼叫次數(shù)、最終呼叫結(jié)果、最終呼叫時(shí)間,如圖5所示。
2.3 后臺(tái)服務(wù)模塊
后臺(tái)服務(wù)器主要處理2個(gè)任務(wù),即訂閱條件遍歷和呼叫消息隊(duì)列處理。
訂閱條件遍歷任務(wù)是從數(shù)據(jù)庫(kù)中讀取所有用戶提交的訂閱條件,與實(shí)時(shí)觀測(cè)數(shù)據(jù)進(jìn)行對(duì)比,當(dāng)條件滿足時(shí),調(diào)用云通信API來(lái)呼叫訂閱號(hào)碼,同時(shí)將訂閱條件狀態(tài)修改為已觸發(fā)。
無(wú)論呼叫是否成功,每條呼叫都將在呼叫消息隊(duì)列中異步返回一條呼叫回執(zhí),需要從消息隊(duì)列中不斷嘗試讀取。當(dāng)讀取到回執(zhí)后,將對(duì)應(yīng)的訂閱條件狀態(tài)進(jìn)行相應(yīng)修改,若呼叫成功,則狀態(tài)為已完成;若呼叫失敗且呼叫次數(shù)小于設(shè)置的重試呼叫次數(shù),則在1分鐘后再次發(fā)起呼叫,若呼叫次數(shù)達(dá)到重試呼叫次數(shù),則標(biāo)記狀態(tài)為失敗。
此外,還有一個(gè)重要的功能需要考慮。平臺(tái)的作用是當(dāng)實(shí)況觀測(cè)要素?cái)?shù)值達(dá)到用戶設(shè)置的閾值時(shí),對(duì)用戶發(fā)出強(qiáng)提醒,那么無(wú)論任何原因,出現(xiàn)無(wú)法按照訂閱條件通知用戶的情況都是無(wú)法被接受的。因此,需要一套獨(dú)立于后臺(tái)服務(wù)器運(yùn)行的守衛(wèi)機(jī)制,確保平臺(tái)本身出現(xiàn)異常時(shí),能夠立刻通知管理員進(jìn)行修復(fù)。于是選擇在云服務(wù)器上部署守衛(wèi)系統(tǒng),但平臺(tái)本身的異常包含但不限于后臺(tái)服務(wù)器死機(jī)、網(wǎng)絡(luò)異常、代碼BUG等,顯然不能由后臺(tái)服務(wù)器向守衛(wèi)系統(tǒng)報(bào)告運(yùn)行異常。應(yīng)反其道行之,守衛(wèi)系統(tǒng)初始化時(shí),即提交若干分鐘后報(bào)告管理員出現(xiàn)異常的定時(shí)器,之后若在定時(shí)器觸發(fā)前收到后臺(tái)服務(wù)器的正常報(bào)告,則重置定時(shí)器;若在定時(shí)器觸發(fā)前未收到正常報(bào)告,則定時(shí)器觸發(fā),立即通知系統(tǒng)管理員處理異常。
3 結(jié)語(yǔ)
該平臺(tái)的研發(fā)是為了探索一種自動(dòng)化、輕量化、可定制的數(shù)據(jù)監(jiān)控方法。用戶可根據(jù)當(dāng)前天氣過(guò)程的發(fā)展情況,快速地定制報(bào)警閾值。該平臺(tái)已在洛陽(yáng)市氣象部門(mén)投入業(yè)務(wù)應(yīng)用,在中小尺度天氣系統(tǒng)監(jiān)測(cè)預(yù)警、地方氣象服務(wù)等氣象防災(zāi)減災(zāi)領(lǐng)域中發(fā)揮了重要作用。在后續(xù)的開(kāi)發(fā)中,可根據(jù)《河南省強(qiáng)對(duì)流、暴雨天氣預(yù)警發(fā)布技術(shù)規(guī)范和分類強(qiáng)天氣監(jiān)測(cè)預(yù)警指標(biāo)》等預(yù)報(bào)方法,創(chuàng)建缺省的智能訂閱條件,對(duì)值班人員進(jìn)行智能預(yù)警。除了監(jiān)控觀測(cè)要素?cái)?shù)值外,也可對(duì)區(qū)域站故障及異常值進(jìn)行自動(dòng)監(jiān)控,提高數(shù)據(jù)可用性。
參考文獻(xiàn):
[1]汪瑋,趙寶義,章超,等.區(qū)域自動(dòng)氣象觀測(cè)站網(wǎng)信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)管理信息化,2019,22(17):177-180.
[2]覃豐阜,吳桂明,林益才.封開(kāi)縣區(qū)域自動(dòng)氣象站數(shù)據(jù)傳輸穩(wěn)定性研究[J].科學(xué)技術(shù)創(chuàng)新,2019(5):78-79.
[3]侯江生,鄒哲馨.賀州市區(qū)域自動(dòng)氣象站監(jiān)控平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].氣象研究與應(yīng)用,2018,39(4):74-76,94.
[4]蔣禮珍,符永興,徐一暉.市級(jí)區(qū)域自動(dòng)站信息處理系統(tǒng)的開(kāi)發(fā)和應(yīng)用[J].氣象研究與應(yīng)用,2010,31(1):77-79.
[5]馮繼東.智能語(yǔ)音分析系統(tǒng)在呼叫中心的推廣及其應(yīng)用[J].電子世界,2019(11):186-187.
[6]王宏芳.智能語(yǔ)音客服系統(tǒng)在呼叫中心領(lǐng)域的應(yīng)用及展望[J].通信企業(yè)管理,2017(6):57-59.
[7]滕慶武,朱青,謝海波.基于設(shè)計(jì)的GPS接口通信協(xié)議的語(yǔ)音呼叫系統(tǒng)方案[J].計(jì)算機(jī)應(yīng)用與軟件,2017,34(6):113-119.
[8]古雄. SOA架構(gòu)下基于云計(jì)算平臺(tái)的語(yǔ)音及短信實(shí)時(shí)報(bào)警系統(tǒng)[D].南寧:廣西大學(xué),2018.
[9]葛宇航.基于Django的留學(xué)生信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].通訊世界,2019,26(8):35-36.
[10]劉進(jìn)京.排查MySQL主從數(shù)據(jù)異常故障[J].網(wǎng)絡(luò)安全和信息化,2019(8):153-154.
[11]鄒奕軒,趙海桐,趙紫婷,等.基于Python和MySQL的醫(yī)療機(jī)構(gòu)藥品及耗材信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)醫(yī)學(xué)裝備,2019,16(9):115-119.
[12]謝春祥,葉舒暢.用AJAX解決模態(tài)對(duì)話頁(yè)面的刷新異常問(wèn)題[J].南昌師范學(xué)院學(xué)報(bào),2019,40(3):30-32.