張衛江,周 杰,杜景林
(南京信息工程大學 電子與信息工程學院,江蘇 南京210044)
傳統的氣象自動站都是屬于集中式的,其結構設計相對比較封閉,而不同廠商生產的傳感器交互性差,不利于構建異構的氣象無線傳感網。為了保證傳統氣象站觀測數據的準確性和可靠性,每進行一次維護或者更換氣象傳感器設備,氣象部門都需要重新校準標度,這樣既提高了維護費用,也浪費了人力資源。面對以上種種弊端,網絡型的自動氣象站成為一種發展趨勢[1]。本文提出的氣象無線傳感網是由多種不同類型的氣息信息傳感器節點構成的網絡,每個節點都可以自主地采集信息,數據通過多跳路由發送到匯集節點 (sink node),匯聚節點將采集到的數據通過TCP/IP網絡協議或者無線方式 (GPRS、GSM)發送到遠程中間件,中間件對數據包進行解析、融合、存儲,并實時維持與終端用戶的通信[2]。中間件的設計[3]充分保證了氣象信息獲取的準確性、及時性以及可靠性,實現了底層硬件設備和應用程序的無縫連接。
氣象無線傳感網是一個典型的異構無線傳感網[4],其內部的節點通常用于監控不同的氣象要素 (溫濕度、氣壓、光照等),以滿足不同的業務需求。這些節點可能來自不同的供應商,它們采用不同的生產標準,建立一個用于采集氣象信息的網絡。采集到的數據存放在一個集中的位置,在此之后,數據將被加密發送到相應的應用程序或等待應用請求。不同的業務應用程序可以通過不同的平臺 (如PDA、Smartphone、PC)將得到的數據進行融合,以便得到一個有意義的輸出值。一旦數據被接收和處理后,業務應用程序可以改變WSN的配置,以延長網絡的生命周期[5]。例如,可以通過減少節點的數目或者在夜間關閉部分節點,以減少節點的功耗。圖1給出了WSN系統的體系結構。

圖1 WSN系統體系結構
中間件作為平臺和應用之間的通用服務技術,其將應用集成進行簡化,增強了應用的生命力。為了更好地支持應用程序的設計、部署、執行和維護,確保系統的無縫連接,提高應用程序的適應性和擴展性,結合氣象無線傳感網的特點,本文設計的中間件滿足以下幾個要求[6]:
(1)代理模式:中間件扮演一個代理的角色,它處理來自應用程序的請求。
(2)并行處理:一個中間件必須支持多線程來處理所有來自業務應用層的請求,并實現最小延遲。
(3)數據交換模式:中間件必須要能夠處理兩種主要類型的數據交換模型,即拉和推模型。拉模型需要中間件處理來自業務應用程序的請求,這就要求中間件可以按照一個預定義的格式來收集和整合數據,然后將其發送給業務應用層。推模型需要中間件能夠支持發布/訂閱模式,以便能夠實現和業務應用層進行數據的交互。
(4)動態綁定功能:中間件必須能夠動態擴展其功能以便在運行時可以允許新的內部服務接入,在不需要時也能夠將其移除。
(5)軟件服務:這一特征定義,中間件組件必須建立一套服務以適應來自業務應用層的不同類型的請求。一個單一的中間件的基本服務應該是相互分離,并且它們的交互操作可以動態定義。每一個應用程序都可以根據相應的流程定義來訪問其指定的服務。
中間件與底層通信采用C/S模式,通過選用客戶機(Linux操作平臺)、中間件、數據庫服務器三級模式,并將應用業務邏輯定位在中間件層,從而提高了系統開發的靈活性、可靠性、安全性,維護比較容易,同時功能也易于擴展。
與Web端通信采用B/S模式,終端用戶通過瀏覽器向中間件發送請求后,瀏覽器與中間件之間通過 WebSocket[7-8]建立連接,然后客戶端將請求的信息以預定義的格式發送給中間件,中間件將對客戶端的請求做出響應處理,再將應答信息以預定義的格式返回給客戶端。
1.3.1 氣象數據的類型
氣象數據的類型繁多,內容也比較豐富。按照內容可以分為常規和特殊觀測資料,比如我們熟知的溫濕度、氣壓、光照、風速、風向、雨量等就屬于常規觀測資料,雷達、衛星云圖、全球定位系統等探測資料則屬于特殊觀測資料。本文主要是對一些常規氣象觀測資料進行解析、挖掘、存儲,同時將常規氣象資料與雷達、衛星云圖等特殊觀測資料進行融合,得出有用的決策信息。
1.3.2 氣象數據的格式
氣象數據格式的標準化有利于數據的處理[9],圖2給出了數據包的類圖關系。該格式采用16進制的字節數組存儲觀測到的數據,其優點是:字節數組便于網絡中數據的傳輸,可以直接進行解析;數據以字節為單位,如果傳輸過程中出現丟包,可以通過預定義的數據格式進行判斷,減小數據損失;該數據格式的可擴展性、靈活性較強,使用廣泛。

圖2 數據包類圖關系
根據氣象無線傳感網的業務需求,中間件的具體模塊設計如圖3所示[10]。本文所設計的中間件位于匯集節點(sink node)和終端用戶 (Web客戶端)之間,主要負責氣象無線傳感網和工作人員的交互,包括基本信息的初始化,報警閾值的設定和報警信息的確認、分析、處理,對節點的指令下達操作,以及對不同類型的氣象要素傳感器的數據進行分析和處理。各模塊的具體功能描述如下[11-12]:
(1)服務管理模塊:主要由應用服務管理和應用服務接口兩部分組成。其中應用服務管理負責處理來自Web端及底層Sink Node的服務請求信息,而應用服務接口則是負責初始化通信接口及相關配置信息。
(2)元信息模塊:主要包括 Web端用戶、Sink Node、Sensor Node的基本信息。元數據主要有兩種類型,即靜態數據和動態數據。靜態數據包括Web端用戶的編號、用戶名,節點的編號、地理位置信息以及節點的芯片類型等,而動態數據包括網絡中節點的剩余電量、節點的工作狀態、節點的存儲空間等。
(3)狀態信息模塊:主要記錄Sink Node和Sensor Node當前的工作狀態,并將相關信息存儲到數據庫中,以便實時維護整個氣象無線傳感網,延長網絡生命周期。
(4)數據解析模塊:主要負責從底層網絡采集數據,并將數據包進行解析、轉換、存儲,該模塊是整個中間件的一個核心部分。
(5)指令下達和查詢模塊:主要負責指令的下達以及處理客戶端的查詢請求。該模塊首先要判斷來自Web客戶端的數據包內容是屬于指令操作還是查詢操作,然后根據判斷結果調用相應的處理方法。
(6)路由信息模塊:主要是根據解析的數據包內容,將各節點對應的路由信息記錄到數據庫相應的數據表中。路由信息主要包括節點所經過的中繼節點的ID號、最終到達的Sink Node的ID號以及所經過的跳數。
圖4所示為中間件的工作模式,其中中間件、數據庫服務器和終端用戶之間相互通信,組成網狀模型。中間件建立氣象傳感器數據接收線程,當接收到傳感器數據包后,判斷數據包是否符合相應的協議并對其進行合法性和完整性驗證。數據包通過合法性檢驗后,再根據預先定義好的數據包格式進行解析,對實時性要求比較高的數據,例如傳感器數值超過報警閾值或者部分傳感器不能正常工作,將及時將數據包發送給各終端用戶,提示其訪問數據庫服務器進行更新操作[13]。在該工作模式中,終端用戶也可以直接訪問數據庫服務器,這樣既降低了中間件的負載,也使實時性得到了保證。

圖3 中間件總體架構

圖4 中間件的工作模式
結合氣象無線傳感網的特點及需求分析,中間件主要有兩大功能:①氣象無線傳感網節點數據的采集、解析、挖掘、融合、存儲;②通過對節點的指令操作來優化整個氣象無線傳感網,以延長網絡的生命周期。
與匯聚節點通信的具體流程如圖5所示。氣象無線傳感網對實時性的要求較高,這也是衡量整個系統
好壞的一個重要指標。氣象信息的生成可以分為定時數據包信息和即時數據包信息。其中定時數據包信息的生成周期是固定的、系統預先設置好的,而即時數據包信息的生成就比較隨機,其可能來自Web端的即時數據查詢請求或者報警信息等。

圖5 與匯聚節點通信流程
中間件作為代理人,首先需要解析接收到的數據包,以確定其類型:①如果是來自Web端的歷史數據查詢,則可以直接訪問數據庫獲取存儲記錄,這些記錄是氣象傳感器節點定時采集到的數據,屬于定時數據包;②對Web端指令的處理,中間件反饋的應答數據包均屬于即時數據包,因為指令是即時產生的。例如想查詢氣象無線傳感網中某個節點的最新狀態,則需要直接對相應的節點進行操作,此時返回的是即時數據包;③如果監測到某個類型的氣象傳感器數值超過了設定的閾值,則會生成報警數據包發送給Web端,該包也屬于即時數據包。
將數據包正確解析后,中間件將根據解析出來的內容選擇存入數據庫或者采取進一步的操作。
WebSocket是一種瀏覽器和服務器之間全雙工通信的網絡技術,它能夠實現消息的主動 “推送”和 “拉取”。本文所設計的中間件軟件與Web端的實時通信采用的就是WebSocket技術[14],瀏覽器使用的Chrome,具體實現的步驟如下:
(1)Web客戶端發送連接請求,通過創建 WebSocket對象,綁定到中間件的IP地址和端口號:ws=new Websocket ("ws://" +document.getElementById ("Connection")).value);
(2)中間件根據http header判斷是否是 WebSocket請求,如果是,則通過Connection:Upgrade將請求升級為一個WebSocket連接;
(3)握手成功后,Web客戶端和中間件將進入雙向長連接的數據傳輸階段,通過 ws.onopen、ws.onmessage、ws.onclose、ws.onerror等方法進行通信。
WebSocket的數據傳輸是基于幀的方式,以0x00表示數據開始,0xff表示數據結束,數據采用的編碼方式是UTF8。在對接收到的數據進行處理時,需要對兩個字節的幀頭數據進行按位解析,以判斷傳輸的消息類型、是否有掩碼、傳輸數據的長度等基本信息[15]。圖6給出了與 Web端通信處理的流程圖。

圖6 與Web通信處理流程
本系統采用C#語言和最新的ASP.NET技術編程,同時結合Oracle數據庫來存儲解析后的數據,便于歷史記錄的查詢。系統的運行環境為 Windows XP Professional SP3,實際的運行效果表明該系統各項性能良好,能夠滿足中間件開發設計的功能要求。圖7給出了系統運行部分效果圖。

圖7 部分運行效果
基于氣象無線傳感網的中間件平臺軟件,提高了氣象數據采集的實時性和可靠性,并大大降低了應用程序開發的復雜性。該方案:①有效地集成了中間件的各項業務需求,并充分利用現有的體系結構,設計開發了一個具有統一業務架構的中間件軟件平臺;②系統采用C/B/S混合模式進行開發,各功能進行了模塊化的設計,便于系統的擴展;③與Web端采用WebSocket的通信技術,與傳統的AJAX長輪詢相比[16],本系統為Web實時通信提供了低網絡吞吐量、低延時的解決方案,進一步保證了氣象信息獲取的實時性。在接下來的研究中,將逐步優化各模塊的設計,在保證系統高性能運行的同時不斷集成更多的功能。
[1]GAO Taichang,LIU Xichuan,LIU Lei,et al.Current and prospective development of the automatic weather station and meteorological sensor [J].Chinese Journal of Scientific Instrument,2008,29 (8):127-133 (in Chinese). [高太長,劉西川,劉磊,等.自動氣象站及氣象傳感器發展現狀和前景分析[J].儀器儀表學報,2008,29 (8):127-133.]
[2]CUI Bingjian,DONG Weihong,HUANG Yueqing,et al.Study and design of wireless meotorological sensor network[J].Environmental Science & Technology,2010,33 (6E):55-57(in Chinese).[崔炳儉,董衛紅,黃躍青,等.無線傳感網在氣象領域的應用與研究 [J].環境科學與技術,2010,33 (6E):55-57.]
[3]LI Renfa,WEI Yehua,FU Bin,et al.A review of middleware for wireless sensor networks [J].Journal of Computer Research and Development,2008,45 (3):383-391 (in Chinese).[李仁發,魏葉華,付彬,等.無線傳感網中間件研究進展 [J].計算機研究與發展,2008,45 (3):383-391.]
[4]PAN Julong,WEN Yu.A study of heterogeneity in wireless sensor networks [J].Aeronautical Computing Technique,2007:37 (2):124-130 (in Chinese). [潘巨龍,聞育.無線傳感網的異構性研究 [J].航空計算技術,2007,37 (2):124-130.]
[5]ZHAI Lifang,LI Chunyuan,SUN Liping.Research on the message-oriented middleware for wireless sensor networks [J].Journal of Computers,2011,6 (5):1040-1046.
[6]BY Alkazem,EA Felemban,AZ Abid,et al.middleware model for wireless sensor networks [C]//Tangier:Multimedia Computing and Systems,2012:67-71.
[7]Chen Lili,Liu Zhenglong.Design of rich client web architecture based on HTML5 [C]//Chongqing:Computational and Information Sciences,2012:1009-1012.
[8]Jiang Fengyan,Duan Huichuan.Application research of Web-Socket technology on web tree component [C]//Hokodate,Hokkaido:Information Technology in Medicine and Education,2012:889-892.
[9]HUA Liansheng,DING Xiansheng,LV Gang.Meteorological data sharing system based on oracle [J].Computing Application,2010,32 (2):162-164 (in Chinese). [華連生,丁憲生,呂剛.基于Oracle的氣象數據共享系統 [J].計算機應用,2010,32 (2):162-164.]
[10]YS Jeong,EH Song,GB Chae,et al.Large-scale middleware for ubiquitous sensor networks [J].Intelligent Systems(IEEE),2010,25 (2):48-59.
[11]Chu Xingchen.Open sensor Web architecture:Core services[C]//Banglore:Intelligent Sensing and Information Processing,2006:98-103.
[12]Chu Xingchen,Rajkumar Buyya.Service oriented sensor Web[J].Sensor Networks and Configuration,2007:51-74.
[13]Jeon YJ,Park SH,Park JS.Sensor node middleware to support Web-based applications over wireless sensor networks[C]//Zurich:Local Computer Networks,2009:963-970.
[14]LI Daili,CHEN Rong.The research of WebSocket based on Web real-time communication [J].Computer Knowledge and Technology,2010,6 (28):7923-7925 (in Chinese). [李代立,陳榕.WebSocket在Web實時通信領域的研究 [J].電腦知識與技術,2010,6 (28):7923-7925.]
[15]WEN Zhaosong,YI Renwei,YAO Hanbing. WebSocket based real time web application solution [J].Computer Knowledge and Technology,2010,8 (16):3026-3028 (in Chinese).[溫照松,易仁偉,姚寒冰.基于WebSocket的實時Web應用解決方案 [J].電腦知識與技術,2012,8(16):3026-3028.]
[16]Pinemtel V,Nickerson BG.Communication and displaying real-time data with WebSocket [J].Internet Computing(IEEE),2012,16 (4):45-53.