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