摘 要:為了完成Internet與WSN之間的互聯,擴展WSN數據服務,提出一種基于XML技術的WSN網關系統的設計和實現方案。基于S3C2440低功耗嵌入式處理器設計并實現了具有以太網,USB等擴展接口的網關硬件平臺。利用XML技術和XML-RPC技術,設計了“用戶配置,按需解析”的網關中間件。利用Flash動態網頁和Web Service服務提供實時動態數據表現。網關系統有效地將數據解析與應用表現分離,實現了“一網關多用途”的功能,大大地簡化了網關系統的配置、部署,提高了網關系統的重復利用性。
關鍵詞:WSN; XML; XML-RPC; 嵌入式網關
中圖分類號:TN915; TP311 文獻標識碼:A
文章編號:1004-373X(2010)14-0014-04
Design and Implementation of XML-based Gateway System in WSN
QIN Wei-jian ,WANG Fu-bao, DUAN Wei-jun
(Institute of Broadband Network, Northwest Polytechnical University, Xi’an 710072, China)
Abstract: The XML-based embedded WSN gateway system was designed for converting the data between Internet and WSN. The software design and implementation of the gateway are included. The paper presents how to make full use of XML and XML-RPC to improve the WSN gateway system. The gateway system has great flexibility to decode the data from WSN according to user's configuration, which depends on the advantages of XML technique. It is easy and friendly for users to configure, deploy and reuse this gateway through the middleware.
Keywords: WSN; XML; XML-RPC; embedded gateway
0 引 言
無線傳感器網絡(wireless sensor networks,WSN)是20世紀90年代末興起的一種用于感知、采集和處理所覆蓋區域物理信息的網絡技術[1]。通過在監測區域內部署大量的自治節點,形成多跳的自組織網絡,無線傳感器網絡作為一種全新的網絡模型和計算模式,延伸了人類信息采集的能力[2-3]。
Internet是當今世界上規模最大,范圍最廣的計算機網絡,為人們提供資源共享,信息傳輸等多種便捷服務。但是,Internet網絡缺乏與物理世界直接打交道的能力。要實現“無處不在的計算”理念,形成“無處不在的網絡”,就必須解決WSN接入Internet的問題,使Internet中的用戶可以選擇和使用WSN的實時數據監測服務[4-7].
可擴展標記語言(extensible makeup language,XML)主要用來規范地傳送和攜帶數據信息。XML-RPC(XML remote procedure call)是使用HTTP作為傳輸協議,XML作為傳送信息編碼格式的遠程調用方式。
本文的目的就是使用XML語言和XML-RPC技術,實現WSN與Internet網絡之間的互聯。系統的主要特色有:
(1) XML語言作為配置文件的基本格式。用戶依據規定的格式編寫XML文件,完成對網關的配置工作。
(2) XML語言作為消息的基本格式。網關系統將解析完成的數據,以XML文件格式返回給用戶。XML-RPC傳輸協議,支持用戶與WSN節點之間的雙向操作。
1 系統概述
該網關系統由硬件層、OS層、中間件和應用層4部分組成(如圖1所示)。其中硬件層描述了網關的硬件實現,主要包括核心處理器、存儲設備等;OS層是操作系統,主要負責硬件驅動、網絡協議轉換和任務調度等,并封裝關鍵的API函數供上層模塊調用;中間件是該系統的核心,實現了WSN與Internet之間的互聯;應用層是可選的模塊,可以集成在網關系統上,或配置在用戶端,例如Web服務器和數據庫技術等。
圖1 網關系統的總體結構
系統功能描述:WSN將實時采集到的環境信息傳送給Sink節點,再由Sink節點傳送至網關系統。網關系統利用用戶配置文件對數據進行處理、解析,最后封裝成XML格式的文件,通過Socket服務將最終數據發送至Internet用戶。同時,網關系統監聽來自用戶的XML格式命 令,通過XML-RPC遠程調用對WSN節點進行查詢和監測。
2 硬件設計與實現
三星公司的S3C2440是一款優秀的ARM9核心處理器,具有400 MHz的主頻,內部集成了多個功能模塊。該系統基本硬件框架如圖2所示。64 MB的NAND FLASH主要用于存放Bootloader和Linux內核文件,主要的文件系統和應用程序是擴展存儲SD卡中的。提供RJ45網絡接口標準的USB和RS 232接口。
圖2 網關系統硬件結構
操作系統層采用嵌入式Linux 2.6.24,為下層的硬件提供完善的驅動,并為上層的應用軟件提供API函數。Bootloarder采用Redboot。NAND FLASH采用的YAFFS文件系統,是日志結構文件系統,提供了損耗平衡和掉電保護。SD卡采用的EXT3文件系統是使用索引節點來記錄文件信息。
3 軟件設計與實現
3.1 總體設計方案
如圖3所示,網關中間件啟動4個線程:
(1) 創建SerialCom實例[8]。監聽串口數據并讀入數據Buffer中;監聽串口發送任務隊列并執行。
(2) 創建XMLParser實例。監聽數據Buffer,解析數據,將 XML文件存入Socket發送任務隊列。
(3) 創建SocketCom實例。監聽Socket發送任務隊列和等待用戶接入。
(4) 創建XMLSocketServer實例。監聽XML-RPC遠程調用指令,解析指令,將WSN命令送入串口發送任務隊列。
SerialCom是一個串口操作類,封裝了讀取串口和發送數據等操作,用于監聽來自WSN中的數據,發送各種操作指令。XMLParser是一個XML解析和生成類,用于讀取和解析XML配置文件,將WSN數據解析成XML文件。SocketCom類提供基本的套接字服務器功能,負責為應用層返回XML格式的數據。XMLRPCServer類支持XML-RPC服務。
圖3 網關系統中間件流程圖
分層設計使得網關系統的部署更加靈活和自由。網關系統的應用層服務,可以與中間件架設在同一個硬件平臺之上,也可以架設在與網關系統中間件在同一個網段中的其他的硬件平臺。主要有兩點優勢:一是減輕網關系統的負擔,減小單網關故障發生率;二是使一種應用可以使用多種WSN服務。
3.2 XML配置文件解析
網關系統采用統一的XML配置文件,實現不同傳感器數據的解析,以下為土壤濕度傳感器的XML配置文件:
…
…
Fields標簽指示數據包中數據的含義,包括名稱(name),位置(byteoffset)和長度(length)。Conversions標簽中包含數據處理函數(functions),以及對應參數(ConvParam variablename)和結果(result name)。Filer標簽中的參數是數據
定義存儲傳感器配置的信息的結構體HandlerNode。其中,包括存儲Fields標簽信息的結構體FeildsNode,存儲Conversions標簽信息的結構體FunctionNode以及存儲Filer標簽信息的FilerNode。
網關系統啟動后,會讀入配置文件夾下的所有XML配置文件,并生成HandlerNode用于數據解析。當WSN中數據傳送至網關系統時,依據Filer中的標志參數,判斷并選擇對應傳感器的HandlerNode節點。讀取HandlerNode節點,使用FeildsNode對原始數據進行分類,數據依存儲在DataNode結構體中的rowdata。系統遍歷FunctionNode,讀取傳感器函數信息。系統調用ExpressToFu()對這些函數進行解析,并從rowdata中讀取參數,計算并將結果返回,最后存儲到covdata中。詳細流程如圖4所示。
系統根據DataNode鏈表中的數據,生成以下所示XML格式的數據,最后通過Scoket服務器發送給用戶。
3.3 XML-RPC的遠程調用
XML-RPC 是一個輕量級消息傳遞協議,可支持基于XML的跨異類平臺的通信。該系統采用開源的XML-RPC庫。
圖5所示為XML-RPC庫的各個組件的類關系圖[9]。xmlRpcServer類用于創建服務器對象,綁定并偵聽特定的端口,以及啟動服務器。myXmlRpcServer類包括2個重要的私有變量:用于指向服務器中注冊的myXmlRpcServerMethod的指針列表——pm_serverMethords和用于設置服務器參數的pm_xmlRpcServer。所有實現方法,必須繼承于 myXmlRpcServerMethod 類,定義自己的 execute(…)方法,并在pm_serverMethords中注冊。服務器收到 XML-RPC 調用時,將會直接觸發該方法的 execute(…)執行。如要實現兩整數的相加的方法Add:首先定義該方法實現的自定義類Operations,并向服務器注冊該方法。當客戶端調用Add方法時,服務器調用其exectue(…)實現該操作。
圖4 網關讀入XML配置文件及數據解析的流程圖
圖5 XML-RPC 庫和示例應用程序的類關系圖
如下所示為網關系統所使用的XML的命令調用格式,該命令實現是對指定節點進行休眠操作。
網關系統還支持對某一節點或某類節點進行實時監測和查詢等命令。
3.4 應用層
該網關系統的應用層是Web Services服務[10],采用Apache服務器,ActionScript3語言進行Web開發。Web Services服務與中間件之間使用XML文件進行通信。
ActionScript3中支持Socket服務,使用Socket.con-net()與網關中間件建立連接并監聽連接是否成功。建立連接后,調用write方法向服務發送驗證信息。通過驗證后,就可以使用read方法從網關中間件中讀取數據。ActionScript3進行Socket通信是必須解決安全沙箱問題,即ActionScript3在進行Socket連接之前會從網關系統的843端口請求一個安全權限。其解決方法是在網關系統843端口配置安全驗證服務[11]。
Flash播放器將從網關系統中間件獲取數據繪制動態曲線 (如圖6所示)。圖形化的界面提供XML-RPC控制服務,用戶可以自己編寫或交由后臺程序生成用于XML-RPC遠程調用的XML命令文件。
圖6 Flash頁面演示
4 結 語
該設計的網關系統有著廣泛的應用前景和使用價 值,并在實際的應用中取得了良好的效果。XML文件和XML-RPC協議的引入,使得WSN的網關系統的部署和配置更加靈活和便捷。網關系統支持二次開發,用戶可以直接在中間件的基礎上開發各種不同的應用服務,如Web Services或是數據庫服務。網關中間件與應用服務之間采用XML文件作為通信媒介,大大簡化了開發的復雜度,提高了開發效率。隨著無線傳感器網絡技術的發展和應用,設計智能化和低成本的網關系統是解決WSN異構互聯的關鍵技術。本文設計的網關系統正是依據這樣的原則,因此具有很強的實用性。
參考文獻
[1]任豐原,黃海寧,林闖.無線傳感器網絡[J].軟件學報,2003,14(7):1287-1291.
[2]孫利民,李建中,陳瑜,等.無線傳感器網絡[M].北京:清華大學出版社,2005.
[3]倪明選,李明祿,薛廣濤.無線傳感器的基礎理論及關鍵技術研究[M].北京:清華大學出版社,2008.
[4]SHU L, WANG J, XU H, et al. Connecting sensor networks with TCP/IP network[C]//International Workshop on Sensor Networks (IWSN06) in Conjunction with AP Web. Harbin:[ s.n.] , 2006.
[5]匡興紅, 邵惠鶴.無線傳感器網絡網關研究[J].計算機工程,2007,33(6):228-230.
[6]孫紀敏,沈玉龍,孫玉,等.傳感器網絡接入Internet體系結構和服務提供方法[J].通訊學報,2008(4):17-20.
[7]ZUNIGA Z. Integrating future large-scale wireless sensor networks with the Internet,CS 03-792[R].[ S.l.] : USC Computer Science, 2003.
[8]冼進,許振山,劉崢嶸,等.嵌入式Linux應用開發與詳解[M].北京:電子工業出版社,2006.
[9]SUBBIAN Karthik, KANNAN Ramakrishnan. Enable C++ applications for Web service using XML-RPC[EB/OL].[ 2008-07-11] .http://www.ibm.com/.
[10]呂海蓮,賈振堂,呂曉麗.基于Web服務的傳感器網絡和Internet集成[J].計算機工程與設計,2008,29(5):33-35.
[11]WINNIE Doug. Learning ActionScript one-on-one[EB/OL].[ 2002-11-12] .http://www.adobe.com/devnet/actionscript.
[12]劉樂群.無線傳感網絡MAC層的節能協議S-MAC性能研究[ J] .現代電子技術,2008,31(1):33-35.