錢崢 朱純陽 張晶晶 林宏偉
(1.寧波市氣象服務中心,浙江 寧波 315012;2.寧波市鎮(zhèn)海區(qū)氣象局,浙江 寧波 315194;3.寧波市北侖區(qū)氣象局,浙江 寧波 315826;4.寧波市慈溪市氣象局,浙江 寧波 315300)
物聯(lián)網(wǎng)被稱為繼計算機、互聯(lián)網(wǎng)后,信息產(chǎn)業(yè)的第三次浪潮[1]。物聯(lián)網(wǎng)技術(shù)在氣象行業(yè)中主要應用于氣象數(shù)據(jù)采集和氣象服務發(fā)布領(lǐng)域,對于提升氣象行業(yè)的信息化、智能化水平有著非常重要的意義。
智能機頂盒是指內(nèi)置CPU處理器和操作系統(tǒng),用戶可以方便地獲取定制化應用軟件的機頂盒終端[2]。智能機頂盒在配置上具有硬件開源、功能模塊化、網(wǎng)絡接口豐富、二次開發(fā)容易等特點。智能機頂盒能在內(nèi)容表現(xiàn)形式、互動性和擴展性等方面給用戶帶來全新的體驗[3]。
智能網(wǎng)格預報利用云計算、互聯(lián)網(wǎng)+、人工智能等現(xiàn)代信息技術(shù)和氣象大數(shù)據(jù)應用技術(shù)來改造傳統(tǒng)預報業(yè)務,從而實現(xiàn)業(yè)務技術(shù)客觀智能,業(yè)務流程扁平高效,滾動制作、實時同步、協(xié)同一致的網(wǎng)格預報制作[4]。這種統(tǒng)一數(shù)據(jù)源的“一張網(wǎng)”網(wǎng)格預報業(yè)務是中國氣象部門未來業(yè)務發(fā)展方向。這種網(wǎng)格空間分辨率5 km,逐3 h發(fā)布的未來10 d預報產(chǎn)品是實現(xiàn)基于位置的精細化氣象服務的基礎(chǔ)[5]。
我國自然災害多發(fā)、頻發(fā),是世界上受自然災害影響最為嚴重的國家之一,自然災害嚴重危害了人民群眾生命財產(chǎn)安全和生產(chǎn)生活秩序。氣象信息的準確、及時發(fā)布是降低自然災害對社會公眾造成損失的基礎(chǔ)條件,也是氣象部門面臨的重要而且急迫的任務[6]。近年來國內(nèi)氣象部門在利用新技術(shù)進行預警信息分發(fā)方面做了許多嘗試[7-9]。周捷等研究了基于多媒體技術(shù)的氣象災害預警信息發(fā)布系統(tǒng)[10];陳往溪等通過采用無線廣域廣播系統(tǒng)和預警電話機組建高集成的突發(fā)災害預警平臺[11];李娜等研究了短信小區(qū)廣播技術(shù)在解決高時效信息發(fā)布的應用問題[12]。
目前寧波氣象部門已經(jīng)建設了一套涵蓋短信、電視、電話、廣播、網(wǎng)絡、顯示屏等多渠道的突發(fā)預警信息發(fā)布平臺。該平臺渠道豐富、用戶覆蓋面廣,但仍存在一些不足:1)信息的分發(fā)高度依賴服務提供商,發(fā)布渠道煙囪式,發(fā)布時效性不高;2)信息分發(fā)的智能化程度不高,難以做到靶向式發(fā)布,無法支撐基于位置的精細化氣象服務需求;3)信息單向發(fā)布,缺乏交互式反饋。
本文介紹的氣象智能機頂盒服務系統(tǒng),是依托寧波氣象部門現(xiàn)有的業(yè)務環(huán)境,在網(wǎng)格預報預警產(chǎn)品發(fā)布技術(shù)和物聯(lián)網(wǎng)技術(shù)的基礎(chǔ)上研發(fā)的智能化、扁平化、可視化的多媒體氣象信息發(fā)布系統(tǒng)。
氣象智能機頂盒設備可以通過物聯(lián)網(wǎng)通信技術(shù)和服務端進行通訊。設備硬件以當前迅速興起的開源硬件為基礎(chǔ),其中主要用到的是樹莓派微電腦系統(tǒng)。它具有與計算機相同的功能和接口,具有多媒體處理能力,具有體積小巧、可擴展性強等特點。使用通用端口(GPIO)來控制外部設備,通過針腳賦值高低電平以實現(xiàn)對外部設備的交互。硬件功能見圖1。
圖1 樹莓派硬件功能圖
系統(tǒng)采用Java語言開發(fā),開發(fā)環(huán)境為Eclipse 3.8、Spring Boot 1.5.3、VUE 2.0、NODE JS 7.9.0 ,運行環(huán)境為UBUNTU LIUNX 14.04。
系統(tǒng)通過研發(fā)一款氣象智能機頂盒客戶端設備并以此為基礎(chǔ)建立氣象信息發(fā)布系統(tǒng),系統(tǒng)不僅能以文字、圖片、圖表、聲音和高清視頻等多媒體形式將基于位置的天氣實況、天氣預報、應急預警信息快速發(fā)布到客戶端,并通過高清晰度多媒體接口(High Definition Multimedia Interface,HDMI)展示到4K高清電視、觸摸屏、戶外LED大屏等展示設備上。而且能通過無線物聯(lián)網(wǎng)絡技術(shù)與周邊的傳感器設備通訊,實現(xiàn)數(shù)據(jù)采集功能。
圖2 系統(tǒng)架構(gòu)圖
系統(tǒng)架構(gòu)圖如圖2所示,系統(tǒng)由服務端和客戶端兩部分組成。服務端包括數(shù)據(jù)中心、數(shù)據(jù)接口服務和系統(tǒng)管理平臺??蛻舳擞蓺庀笾悄軝C頂盒、高清顯示設備組成,機頂盒與顯示設備通過HDMI接口連接。
系統(tǒng)為了提升系統(tǒng)性能,提高可靠性。系統(tǒng)改進了服務器端架構(gòu),通過引入微服務架構(gòu)(Microservices Architecture Pattern)技術(shù)優(yōu)化服務效率。系統(tǒng)主要由以下3部分組成:
1)數(shù)據(jù)接口服務
負責響應客戶端設備發(fā)起的數(shù)據(jù)請求,通過WebService數(shù)據(jù)接口的方式實現(xiàn)數(shù)據(jù)和指令的交互。
2)系統(tǒng)管理平臺
負責管理客戶端設備以安全的通訊方式接入系統(tǒng),實現(xiàn)用戶管理和權(quán)限管理,以微服務架構(gòu)的方式發(fā)布氣象信息。
3)客戶端設備
負責將來自服務端的數(shù)據(jù)展示在顯示設備上,通過用戶交互方式收集服務反饋并上傳服務端。
這種設計有如下優(yōu)點:
首先服務端采用微服務架構(gòu),微服務是去中心化的分布式軟件架構(gòu),它可以將大型的、復雜的、長期運行的應用程序構(gòu)建為一組相互配合的服務,提高開發(fā)效率;服務之間可以獨立部署,微服務架構(gòu)讓持續(xù)部署成為可能;每個服務可以各自進行擴展;每個服務可以根據(jù)自身的需要部署到合適的硬件上,提高了系統(tǒng)可靠性和靈活度。
其次使用數(shù)據(jù)接口服務來實現(xiàn)跨平臺的數(shù)據(jù)交換,數(shù)據(jù)接口是目前比較流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。它結(jié)構(gòu)清晰、符合標準、擴展方便,這種機制可以實現(xiàn)松耦合、應用擴展性和異構(gòu)系統(tǒng)間的互操作性。
再次數(shù)據(jù)計算與產(chǎn)品生成任務交給分布式的管理平臺。客戶端不需要大量的計算處理與存儲需求,降低了客戶端的實現(xiàn)難度和硬件要求。
軟件系統(tǒng)采用了基于B/S(Browser/Server)架構(gòu)的3層設計模式。業(yè)務層采用Web服務技術(shù)完成與數(shù)據(jù)層的交互,表現(xiàn)層使用JavaScript技術(shù)提高人機交互體驗,而數(shù)據(jù)層由數(shù)據(jù)接口和消息隊列實現(xiàn)松耦合。在系統(tǒng)實現(xiàn)過程中,采用了多種開源軟件包,如Tomcat、Apache、ActiveMQ等。
服務端軟件負責將精細化觀測、預報、預警數(shù)據(jù)以RESTful Web Services數(shù)據(jù)接口的形式發(fā)布到客戶端。通過服務端軟件,系統(tǒng)管理員能實現(xiàn)對客戶端設備和服務內(nèi)容的高效管理。實現(xiàn)了通過數(shù)據(jù)接口與客戶端交換信息和通過消息隊列實時推送應急信息到客戶端的功能。軟件流程圖見圖3,服務端軟件主要由以下5個模塊組成。
圖3 服務端軟件流程圖
1)消息隊列模塊
負責服務端與客戶端之間的高效通信,實現(xiàn)數(shù)據(jù)和指令的交互。采用消息隊列技術(shù)來解決異構(gòu)系統(tǒng)間的解耦與異步通信問題,降低了開發(fā)難度,并提供了功能上的擴展性。
2)設備管理模塊
具有客戶端設備的定位功能,能確保服務的靶向性發(fā)布。并以GIS(Geographic Information System)的形式為用戶提供終端管理功能。能夠?qū)崿F(xiàn)客戶端內(nèi)容展示策略配置的功能,當配置發(fā)生變化時,能夠及時存儲并發(fā)送內(nèi)容展示策略到客戶端。此外還具備客戶端設備訪問權(quán)限、版本管理等設備配置功能。
3)數(shù)據(jù)加工模塊
不同的展示內(nèi)容需要不同的內(nèi)容幀來支撐,數(shù)據(jù)加工模塊負責內(nèi)容幀的生成。模塊需要定時從數(shù)據(jù)接口獲取數(shù)據(jù)并按預設的規(guī)則生成內(nèi)容幀,并按幀/時間的格式記錄到數(shù)據(jù)中心。
4)數(shù)據(jù)服務模塊
以Web Services數(shù)據(jù)接口的形式與客戶端通訊,提供調(diào)用數(shù)據(jù)中心的內(nèi)容幀來響應來自客戶端的請求,以及將客戶端上傳的數(shù)據(jù)存儲到數(shù)據(jù)中心的功能。該模塊實現(xiàn)對接口的標準化管理,向管理人員提供包括接口管理、權(quán)限管理等功能。
5)應急信息發(fā)布模塊
模塊以網(wǎng)頁提交的方式提供手動發(fā)布應急信息的功能。用戶可以在GIS地圖上圈選產(chǎn)品發(fā)布的范圍,發(fā)布的產(chǎn)品根據(jù)需要可以存儲到數(shù)據(jù)中心以供數(shù)據(jù)服務模塊調(diào)用,也可以通過消息隊列直接推送到客戶端。
終端軟件負責定時獲取來自服務端的內(nèi)容幀,并根據(jù)管理平臺定義的內(nèi)容展示策略將各種內(nèi)容幀以文字、圖片、音頻、視頻以瀏覽器的形式輸出到顯示器,并實現(xiàn)軟件自動管理。軟件流程圖見圖4。
客戶端和服務端軟件通過建立消息隊列,實現(xiàn)客戶端訂閱服務端廣播的顯示事件和升級事件的功能。當顯示事件到達時,客戶端軟件將調(diào)用命令以全屏模式(kiosk)打開一個網(wǎng)頁瀏覽器來展示內(nèi)容幀。
圖4 客戶端軟件流程圖
每個顯示事件代表需要展示的一個內(nèi)容幀,幀包括顯示的界面元素配置、展示內(nèi)容組織和展示時長等信息。幀數(shù)據(jù)優(yōu)先從本地緩存文件中獲取,如果不存在則從服務端獲取。如果網(wǎng)絡故障則使用本地存儲的數(shù)據(jù)。當展示時間超過定義時長,狀態(tài)監(jiān)測機制自動創(chuàng)建下一個展示事件并發(fā)送給瀏覽器。視頻播放幀由于視頻的時長不定且有可能被用戶暫?;蛘呖爝M,因此狀態(tài)監(jiān)測機制通過捕捉視頻結(jié)束事件,并以該事件來觸發(fā)下一個顯示事件的創(chuàng)建。
軟件升級也是通過事件來實現(xiàn),升級事件中含有升級包的URL地址,當收到升級事件推送后,客戶端將根據(jù)URL地址下載并暫存升級包,然后觸發(fā)客戶端軟件重啟,客戶端軟件的啟動過程中如果識別到存在新的升級包,將執(zhí)行自動升級指令。
系統(tǒng)提供的服務是依托現(xiàn)有數(shù)據(jù)業(yè)務環(huán)境,應用精細化氣象服務產(chǎn)品和物聯(lián)網(wǎng)軟硬件技術(shù)為基礎(chǔ)研發(fā)的,有以下幾個核心功能。
在客戶端的安全設計方面系統(tǒng)采用了定制化人機交互界面、數(shù)據(jù)接口權(quán)限控制和終端位置審核機制來實現(xiàn)。在人機交互界面系統(tǒng)采用全屏式多媒體瀏覽器技術(shù)Kiosk,它通過事件接口接收用戶的交互指令,并通過網(wǎng)絡連接提供特定的服務功能。它能通過鎖定應用程序來阻止用戶惡意攻擊或入侵信息系統(tǒng),能有效解決客戶端系統(tǒng)安全問題。其核心代碼如下:
String[] omxCommand = {"chromium-browser--kiosk http://localhost:7070"};
//客戶端軟件以kiosk模式打開一個瀏覽器頁面,訪問URL為http://localhost:7070。
process= new ProcessBuilder(omxCommand).start();
//啟動瀏覽器子進程
由于客戶端設備通過HDMI接口連接顯示屏,因此顯示屏實際顯示的是http://localhost:7070對應的web頁面。進程啟動時,將自動為當前客戶端軟件建立一個websocket連接和一個顯示狀態(tài)監(jiān)測線程,該線程負責創(chuàng)建展示事件??蛻舳说娘@示數(shù)據(jù)及其顯示配置通過websocket消息(展示事件)推送到瀏覽器,瀏覽器將動態(tài)展示渲染的數(shù)據(jù)內(nèi)容。websocket消息能有效保障數(shù)據(jù)分發(fā)的實時性和一致性。
人機交互界面使用Kiosk不僅可以實現(xiàn)遠程更新終端的內(nèi)容和上傳用戶反饋信息的功能,而且它還是保護面向公眾服務的設備免遭黑客攻擊,阻止未經(jīng)授權(quán)訪問的關(guān)鍵組件。
此外,系統(tǒng)還通過數(shù)據(jù)接口權(quán)限控制策略配置了每個終端的訪問口令和權(quán)限,只有符合權(quán)限要求的訪問請求才會被響應,避免了數(shù)據(jù)泄露的安全風險。
系統(tǒng)具備終端位置審核機制,該機制是根據(jù)每次設備向服務端提交數(shù)據(jù)請求時校驗設備位置是否與數(shù)據(jù)中心存儲的預設位置相匹配,當位置不匹配時停止響應數(shù)據(jù)請求并觸發(fā)信息通知系統(tǒng)管理員。該機制能確??蛻舳嗽O備在預設位置被合規(guī)使用。
隨著互聯(lián)網(wǎng)和軟件技術(shù)的發(fā)展,軟件系統(tǒng)架構(gòu)從單體式架構(gòu)到面向服務架構(gòu)一直在不斷演進。但是傳統(tǒng)的面向服務的模塊化架構(gòu)也存在集中化、成本高、維護難等問題,即使開發(fā)一個簡單的功能,也需要進行大量的配置聲明,以及大量繁瑣的注解。使得開發(fā)一個氣象業(yè)務系統(tǒng)的技術(shù)門檻比較高,而且業(yè)務可靠性難以保障。
面對這些問題,本系統(tǒng)通過采用Spring Boot微服務架構(gòu)方式,優(yōu)化系統(tǒng)服務的構(gòu)建和管理。Spring Boot能夠快速的搭建 RESTful風格的后臺服務,通過默認配置以及注解,使得開發(fā)者不用面對大量繁瑣的配置文件。Spring Boot能將一個大而全的軟件開發(fā)需求拆分為若干獨立開發(fā)、獨立部署的軟件,并使之協(xié)同工作來完成同樣的軟件功能。模塊化架構(gòu)中功能模塊的故障還是會導致整個服務停止。采用微服務框架開發(fā),即使一個微服務發(fā)生故障也不影響整個服務的正常運行。服務可以在不影響全局情況下進行改變或替換,能有效提升系統(tǒng)的可靠性。由于Spring Boot提供極其快速和簡化的操作,使用者能夠快速掌握該框架,從而專注于氣象服務核心業(yè)務,提高研發(fā)效率。
系統(tǒng)自2018年7月起在寧波地區(qū)投入業(yè)務運行以來,系統(tǒng)業(yè)務化成果已經(jīng)應用于寧波市突發(fā)公共事件預警信息發(fā)布平臺、寧波半邊山旅游度假區(qū)氣象服務平臺、臺州市黃巖區(qū)氣象局暴雨精細化監(jiān)測預報預警系統(tǒng)。本著邊應用、邊開發(fā)、邊改進的理念,根據(jù)不同的應用場景和不同的服務對象,定制開發(fā)針對性的服務功能和展示界面,使得這種靈活的服務方式能快速被用戶接受。
客戶端效果圖如圖5。
圖5 客戶端效果圖
在功能方面,以寧波半邊山旅游度假區(qū)氣象服務平臺為例,不僅為其提供了基于度假區(qū)位置的精細化氣象服務,而且通過程序開發(fā)增加了二維碼功能實現(xiàn)了用戶反饋的收集與引流至微信公眾號的功能。從應用反饋來看,這種扁平化的信息分發(fā)手段,比較適合在人流密集的公共場所使用。
系統(tǒng)把智能機頂盒終端與氣象信息服務結(jié)合在一起。通過資源整合與功能開發(fā)實現(xiàn)了基于位置的氣象服務產(chǎn)品以文字、圖片、動畫、視頻等形式在智能機頂盒端發(fā)布。通過設備定位技術(shù)實現(xiàn)了氣象服務產(chǎn)品的靶向性分發(fā)。系統(tǒng)支持高清顯示器、觸摸屏和LED戶外大屏,具有多媒體交互界面,能充分發(fā)揮智能機頂盒設備特性,靈活通過遙控器、觸控操作與二維碼實現(xiàn)與用戶的互動,及時獲取服務反饋。系統(tǒng)通過各種技術(shù)手段、訪問策略和審核機制提升了安全性。
系統(tǒng)的建設豐富了氣象信息尤其是災害預警信息的傳播渠道,增強了氣象部門在氣象災害預警信息和智能網(wǎng)格預報產(chǎn)品的分發(fā)能力,發(fā)揮地方氣象部門在短時臨近氣象服務中的本地化優(yōu)勢,為用戶提供更加精細的多媒體氣象服務產(chǎn)品。下一步將繼續(xù)加大系統(tǒng)的推廣應用力度,使之在氣象災害防御、專業(yè)服務、公眾服務領(lǐng)域為用戶提供更加深入的應用。