張衛(wèi)江,周 杰,杜景林
(南京信息工程大學(xué) 電子與信息工程學(xué)院,江蘇 南京210044)
傳統(tǒng)的氣象自動站都是屬于集中式的,其結(jié)構(gòu)設(shè)計(jì)相對比較封閉,而不同廠商生產(chǎn)的傳感器交互性差,不利于構(gòu)建異構(gòu)的氣象無線傳感網(wǎng)。為了保證傳統(tǒng)氣象站觀測數(shù)據(jù)的準(zhǔn)確性和可靠性,每進(jìn)行一次維護(hù)或者更換氣象傳感器設(shè)備,氣象部門都需要重新校準(zhǔn)標(biāo)度,這樣既提高了維護(hù)費(fèi)用,也浪費(fèi)了人力資源。面對以上種種弊端,網(wǎng)絡(luò)型的自動氣象站成為一種發(fā)展趨勢[1]。本文提出的氣象無線傳感網(wǎng)是由多種不同類型的氣息信息傳感器節(jié)點(diǎn)構(gòu)成的網(wǎng)絡(luò),每個(gè)節(jié)點(diǎn)都可以自主地采集信息,數(shù)據(jù)通過多跳路由發(fā)送到匯集節(jié)點(diǎn) (sink node),匯聚節(jié)點(diǎn)將采集到的數(shù)據(jù)通過TCP/IP網(wǎng)絡(luò)協(xié)議或者無線方式 (GPRS、GSM)發(fā)送到遠(yuǎn)程中間件,中間件對數(shù)據(jù)包進(jìn)行解析、融合、存儲,并實(shí)時(shí)維持與終端用戶的通信[2]。中間件的設(shè)計(jì)[3]充分保證了氣象信息獲取的準(zhǔn)確性、及時(shí)性以及可靠性,實(shí)現(xiàn)了底層硬件設(shè)備和應(yīng)用程序的無縫連接。
氣象無線傳感網(wǎng)是一個(gè)典型的異構(gòu)無線傳感網(wǎng)[4],其內(nèi)部的節(jié)點(diǎn)通常用于監(jiān)控不同的氣象要素 (溫濕度、氣壓、光照等),以滿足不同的業(yè)務(wù)需求。這些節(jié)點(diǎn)可能來自不同的供應(yīng)商,它們采用不同的生產(chǎn)標(biāo)準(zhǔn),建立一個(gè)用于采集氣象信息的網(wǎng)絡(luò)。采集到的數(shù)據(jù)存放在一個(gè)集中的位置,在此之后,數(shù)據(jù)將被加密發(fā)送到相應(yīng)的應(yīng)用程序或等待應(yīng)用請求。不同的業(yè)務(wù)應(yīng)用程序可以通過不同的平臺 (如PDA、Smartphone、PC)將得到的數(shù)據(jù)進(jìn)行融合,以便得到一個(gè)有意義的輸出值。一旦數(shù)據(jù)被接收和處理后,業(yè)務(wù)應(yīng)用程序可以改變WSN的配置,以延長網(wǎng)絡(luò)的生命周期[5]。例如,可以通過減少節(jié)點(diǎn)的數(shù)目或者在夜間關(guān)閉部分節(jié)點(diǎn),以減少節(jié)點(diǎn)的功耗。圖1給出了WSN系統(tǒng)的體系結(jié)構(gòu)。
圖1 WSN系統(tǒng)體系結(jié)構(gòu)
中間件作為平臺和應(yīng)用之間的通用服務(wù)技術(shù),其將應(yīng)用集成進(jìn)行簡化,增強(qiáng)了應(yīng)用的生命力。為了更好地支持應(yīng)用程序的設(shè)計(jì)、部署、執(zhí)行和維護(hù),確保系統(tǒng)的無縫連接,提高應(yīng)用程序的適應(yīng)性和擴(kuò)展性,結(jié)合氣象無線傳感網(wǎng)的特點(diǎn),本文設(shè)計(jì)的中間件滿足以下幾個(gè)要求[6]:
(1)代理模式:中間件扮演一個(gè)代理的角色,它處理來自應(yīng)用程序的請求。
(2)并行處理:一個(gè)中間件必須支持多線程來處理所有來自業(yè)務(wù)應(yīng)用層的請求,并實(shí)現(xiàn)最小延遲。
(3)數(shù)據(jù)交換模式:中間件必須要能夠處理兩種主要類型的數(shù)據(jù)交換模型,即拉和推模型。拉模型需要中間件處理來自業(yè)務(wù)應(yīng)用程序的請求,這就要求中間件可以按照一個(gè)預(yù)定義的格式來收集和整合數(shù)據(jù),然后將其發(fā)送給業(yè)務(wù)應(yīng)用層。推模型需要中間件能夠支持發(fā)布/訂閱模式,以便能夠?qū)崿F(xiàn)和業(yè)務(wù)應(yīng)用層進(jìn)行數(shù)據(jù)的交互。
(4)動態(tài)綁定功能:中間件必須能夠動態(tài)擴(kuò)展其功能以便在運(yùn)行時(shí)可以允許新的內(nèi)部服務(wù)接入,在不需要時(shí)也能夠?qū)⑵湟瞥?/p>
(5)軟件服務(wù):這一特征定義,中間件組件必須建立一套服務(wù)以適應(yīng)來自業(yè)務(wù)應(yīng)用層的不同類型的請求。一個(gè)單一的中間件的基本服務(wù)應(yīng)該是相互分離,并且它們的交互操作可以動態(tài)定義。每一個(gè)應(yīng)用程序都可以根據(jù)相應(yīng)的流程定義來訪問其指定的服務(wù)。
中間件與底層通信采用C/S模式,通過選用客戶機(jī)(Linux操作平臺)、中間件、數(shù)據(jù)庫服務(wù)器三級模式,并將應(yīng)用業(yè)務(wù)邏輯定位在中間件層,從而提高了系統(tǒng)開發(fā)的靈活性、可靠性、安全性,維護(hù)比較容易,同時(shí)功能也易于擴(kuò)展。
與Web端通信采用B/S模式,終端用戶通過瀏覽器向中間件發(fā)送請求后,瀏覽器與中間件之間通過 WebSocket[7-8]建立連接,然后客戶端將請求的信息以預(yù)定義的格式發(fā)送給中間件,中間件將對客戶端的請求做出響應(yīng)處理,再將應(yīng)答信息以預(yù)定義的格式返回給客戶端。
1.3.1 氣象數(shù)據(jù)的類型
氣象數(shù)據(jù)的類型繁多,內(nèi)容也比較豐富。按照內(nèi)容可以分為常規(guī)和特殊觀測資料,比如我們熟知的溫濕度、氣壓、光照、風(fēng)速、風(fēng)向、雨量等就屬于常規(guī)觀測資料,雷達(dá)、衛(wèi)星云圖、全球定位系統(tǒng)等探測資料則屬于特殊觀測資料。本文主要是對一些常規(guī)氣象觀測資料進(jìn)行解析、挖掘、存儲,同時(shí)將常規(guī)氣象資料與雷達(dá)、衛(wèi)星云圖等特殊觀測資料進(jìn)行融合,得出有用的決策信息。
1.3.2 氣象數(shù)據(jù)的格式
氣象數(shù)據(jù)格式的標(biāo)準(zhǔn)化有利于數(shù)據(jù)的處理[9],圖2給出了數(shù)據(jù)包的類圖關(guān)系。該格式采用16進(jìn)制的字節(jié)數(shù)組存儲觀測到的數(shù)據(jù),其優(yōu)點(diǎn)是:字節(jié)數(shù)組便于網(wǎng)絡(luò)中數(shù)據(jù)的傳輸,可以直接進(jìn)行解析;數(shù)據(jù)以字節(jié)為單位,如果傳輸過程中出現(xiàn)丟包,可以通過預(yù)定義的數(shù)據(jù)格式進(jìn)行判斷,減小數(shù)據(jù)損失;該數(shù)據(jù)格式的可擴(kuò)展性、靈活性較強(qiáng),使用廣泛。
圖2 數(shù)據(jù)包類圖關(guān)系
根據(jù)氣象無線傳感網(wǎng)的業(yè)務(wù)需求,中間件的具體模塊設(shè)計(jì)如圖3所示[10]。本文所設(shè)計(jì)的中間件位于匯集節(jié)點(diǎn)(sink node)和終端用戶 (Web客戶端)之間,主要負(fù)責(zé)氣象無線傳感網(wǎng)和工作人員的交互,包括基本信息的初始化,報(bào)警閾值的設(shè)定和報(bào)警信息的確認(rèn)、分析、處理,對節(jié)點(diǎn)的指令下達(dá)操作,以及對不同類型的氣象要素傳感器的數(shù)據(jù)進(jìn)行分析和處理。各模塊的具體功能描述如下[11-12]:
(1)服務(wù)管理模塊:主要由應(yīng)用服務(wù)管理和應(yīng)用服務(wù)接口兩部分組成。其中應(yīng)用服務(wù)管理負(fù)責(zé)處理來自Web端及底層Sink Node的服務(wù)請求信息,而應(yīng)用服務(wù)接口則是負(fù)責(zé)初始化通信接口及相關(guān)配置信息。
(2)元信息模塊:主要包括 Web端用戶、Sink Node、Sensor Node的基本信息。元數(shù)據(jù)主要有兩種類型,即靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)。靜態(tài)數(shù)據(jù)包括Web端用戶的編號、用戶名,節(jié)點(diǎn)的編號、地理位置信息以及節(jié)點(diǎn)的芯片類型等,而動態(tài)數(shù)據(jù)包括網(wǎng)絡(luò)中節(jié)點(diǎn)的剩余電量、節(jié)點(diǎn)的工作狀態(tài)、節(jié)點(diǎn)的存儲空間等。
(3)狀態(tài)信息模塊:主要記錄Sink Node和Sensor Node當(dāng)前的工作狀態(tài),并將相關(guān)信息存儲到數(shù)據(jù)庫中,以便實(shí)時(shí)維護(hù)整個(gè)氣象無線傳感網(wǎng),延長網(wǎng)絡(luò)生命周期。
(4)數(shù)據(jù)解析模塊:主要負(fù)責(zé)從底層網(wǎng)絡(luò)采集數(shù)據(jù),并將數(shù)據(jù)包進(jìn)行解析、轉(zhuǎn)換、存儲,該模塊是整個(gè)中間件的一個(gè)核心部分。
(5)指令下達(dá)和查詢模塊:主要負(fù)責(zé)指令的下達(dá)以及處理客戶端的查詢請求。該模塊首先要判斷來自Web客戶端的數(shù)據(jù)包內(nèi)容是屬于指令操作還是查詢操作,然后根據(jù)判斷結(jié)果調(diào)用相應(yīng)的處理方法。
(6)路由信息模塊:主要是根據(jù)解析的數(shù)據(jù)包內(nèi)容,將各節(jié)點(diǎn)對應(yīng)的路由信息記錄到數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)表中。路由信息主要包括節(jié)點(diǎn)所經(jīng)過的中繼節(jié)點(diǎn)的ID號、最終到達(dá)的Sink Node的ID號以及所經(jīng)過的跳數(shù)。
圖4所示為中間件的工作模式,其中中間件、數(shù)據(jù)庫服務(wù)器和終端用戶之間相互通信,組成網(wǎng)狀模型。中間件建立氣象傳感器數(shù)據(jù)接收線程,當(dāng)接收到傳感器數(shù)據(jù)包后,判斷數(shù)據(jù)包是否符合相應(yīng)的協(xié)議并對其進(jìn)行合法性和完整性驗(yàn)證。數(shù)據(jù)包通過合法性檢驗(yàn)后,再根據(jù)預(yù)先定義好的數(shù)據(jù)包格式進(jìn)行解析,對實(shí)時(shí)性要求比較高的數(shù)據(jù),例如傳感器數(shù)值超過報(bào)警閾值或者部分傳感器不能正常工作,將及時(shí)將數(shù)據(jù)包發(fā)送給各終端用戶,提示其訪問數(shù)據(jù)庫服務(wù)器進(jìn)行更新操作[13]。在該工作模式中,終端用戶也可以直接訪問數(shù)據(jù)庫服務(wù)器,這樣既降低了中間件的負(fù)載,也使實(shí)時(shí)性得到了保證。
圖3 中間件總體架構(gòu)
圖4 中間件的工作模式
結(jié)合氣象無線傳感網(wǎng)的特點(diǎn)及需求分析,中間件主要有兩大功能:①氣象無線傳感網(wǎng)節(jié)點(diǎn)數(shù)據(jù)的采集、解析、挖掘、融合、存儲;②通過對節(jié)點(diǎn)的指令操作來優(yōu)化整個(gè)氣象無線傳感網(wǎng),以延長網(wǎng)絡(luò)的生命周期。
與匯聚節(jié)點(diǎn)通信的具體流程如圖5所示。氣象無線傳感網(wǎng)對實(shí)時(shí)性的要求較高,這也是衡量整個(gè)系統(tǒng)
好壞的一個(gè)重要指標(biāo)。氣象信息的生成可以分為定時(shí)數(shù)據(jù)包信息和即時(shí)數(shù)據(jù)包信息。其中定時(shí)數(shù)據(jù)包信息的生成周期是固定的、系統(tǒng)預(yù)先設(shè)置好的,而即時(shí)數(shù)據(jù)包信息的生成就比較隨機(jī),其可能來自Web端的即時(shí)數(shù)據(jù)查詢請求或者報(bào)警信息等。
圖5 與匯聚節(jié)點(diǎn)通信流程
中間件作為代理人,首先需要解析接收到的數(shù)據(jù)包,以確定其類型:①如果是來自Web端的歷史數(shù)據(jù)查詢,則可以直接訪問數(shù)據(jù)庫獲取存儲記錄,這些記錄是氣象傳感器節(jié)點(diǎn)定時(shí)采集到的數(shù)據(jù),屬于定時(shí)數(shù)據(jù)包;②對Web端指令的處理,中間件反饋的應(yīng)答數(shù)據(jù)包均屬于即時(shí)數(shù)據(jù)包,因?yàn)橹噶钍羌磿r(shí)產(chǎn)生的。例如想查詢氣象無線傳感網(wǎng)中某個(gè)節(jié)點(diǎn)的最新狀態(tài),則需要直接對相應(yīng)的節(jié)點(diǎn)進(jìn)行操作,此時(shí)返回的是即時(shí)數(shù)據(jù)包;③如果監(jiān)測到某個(gè)類型的氣象傳感器數(shù)值超過了設(shè)定的閾值,則會生成報(bào)警數(shù)據(jù)包發(fā)送給Web端,該包也屬于即時(shí)數(shù)據(jù)包。
將數(shù)據(jù)包正確解析后,中間件將根據(jù)解析出來的內(nèi)容選擇存入數(shù)據(jù)庫或者采取進(jìn)一步的操作。
WebSocket是一種瀏覽器和服務(wù)器之間全雙工通信的網(wǎng)絡(luò)技術(shù),它能夠?qū)崿F(xiàn)消息的主動 “推送”和 “拉取”。本文所設(shè)計(jì)的中間件軟件與Web端的實(shí)時(shí)通信采用的就是WebSocket技術(shù)[14],瀏覽器使用的Chrome,具體實(shí)現(xiàn)的步驟如下:
(1)Web客戶端發(fā)送連接請求,通過創(chuàng)建 WebSocket對象,綁定到中間件的IP地址和端口號:ws=new Websocket ("ws://" +document.getElementById ("Connection")).value);
(2)中間件根據(jù)http header判斷是否是 WebSocket請求,如果是,則通過Connection:Upgrade將請求升級為一個(gè)WebSocket連接;
(3)握手成功后,Web客戶端和中間件將進(jìn)入雙向長連接的數(shù)據(jù)傳輸階段,通過 ws.onopen、ws.onmessage、ws.onclose、ws.onerror等方法進(jìn)行通信。
WebSocket的數(shù)據(jù)傳輸是基于幀的方式,以0x00表示數(shù)據(jù)開始,0xff表示數(shù)據(jù)結(jié)束,數(shù)據(jù)采用的編碼方式是UTF8。在對接收到的數(shù)據(jù)進(jìn)行處理時(shí),需要對兩個(gè)字節(jié)的幀頭數(shù)據(jù)進(jìn)行按位解析,以判斷傳輸?shù)南㈩愋汀⑹欠裼醒诖a、傳輸數(shù)據(jù)的長度等基本信息[15]。圖6給出了與 Web端通信處理的流程圖。
圖6 與Web通信處理流程
本系統(tǒng)采用C#語言和最新的ASP.NET技術(shù)編程,同時(shí)結(jié)合Oracle數(shù)據(jù)庫來存儲解析后的數(shù)據(jù),便于歷史記錄的查詢。系統(tǒng)的運(yùn)行環(huán)境為 Windows XP Professional SP3,實(shí)際的運(yùn)行效果表明該系統(tǒng)各項(xiàng)性能良好,能夠滿足中間件開發(fā)設(shè)計(jì)的功能要求。圖7給出了系統(tǒng)運(yùn)行部分效果圖。
圖7 部分運(yùn)行效果
基于氣象無線傳感網(wǎng)的中間件平臺軟件,提高了氣象數(shù)據(jù)采集的實(shí)時(shí)性和可靠性,并大大降低了應(yīng)用程序開發(fā)的復(fù)雜性。該方案:①有效地集成了中間件的各項(xiàng)業(yè)務(wù)需求,并充分利用現(xiàn)有的體系結(jié)構(gòu),設(shè)計(jì)開發(fā)了一個(gè)具有統(tǒng)一業(yè)務(wù)架構(gòu)的中間件軟件平臺;②系統(tǒng)采用C/B/S混合模式進(jìn)行開發(fā),各功能進(jìn)行了模塊化的設(shè)計(jì),便于系統(tǒng)的擴(kuò)展;③與Web端采用WebSocket的通信技術(shù),與傳統(tǒng)的AJAX長輪詢相比[16],本系統(tǒng)為Web實(shí)時(shí)通信提供了低網(wǎng)絡(luò)吞吐量、低延時(shí)的解決方案,進(jìn)一步保證了氣象信息獲取的實(shí)時(shí)性。在接下來的研究中,將逐步優(yōu)化各模塊的設(shè)計(jì),在保證系統(tǒng)高性能運(yùn)行的同時(shí)不斷集成更多的功能。
[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). [高太長,劉西川,劉磊,等.自動氣象站及氣象傳感器發(fā)展現(xiàn)狀和前景分析[J].儀器儀表學(xué)報(bào),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).[崔炳儉,董衛(wèi)紅,黃躍青,等.無線傳感網(wǎng)在氣象領(lǐng)域的應(yīng)用與研究 [J].環(huán)境科學(xué)與技術(shù),2010,33 (6E):55-57.]
[3]LI Renfa,WEI Yehua,F(xiàn)U 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).[李仁發(fā),魏葉華,付彬,等.無線傳感網(wǎng)中間件研究進(jìn)展 [J].計(jì)算機(jī)研究與發(fā)展,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). [潘巨龍,聞育.無線傳感網(wǎng)的異構(gòu)性研究 [J].航空計(jì)算技術(shù),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的氣象數(shù)據(jù)共享系統(tǒng) [J].計(jì)算機(jī)應(yīng)用,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實(shí)時(shí)通信領(lǐng)域的研究 [J].電腦知識與技術(shù),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的實(shí)時(shí)Web應(yīng)用解決方案 [J].電腦知識與技術(shù),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.