孔英會(huì),高育棟
(華北電力大學(xué) 電子與通信工程系,河北 保定 071000)
基于Watir的物聯(lián)網(wǎng)數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)
孔英會(huì),高育棟
(華北電力大學(xué) 電子與通信工程系,河北 保定 071000)
設(shè)計(jì)了一種基于Watir的物聯(lián)網(wǎng)Web事件處理系統(tǒng)框架。首先搭建ZigBee無(wú)線傳感器網(wǎng)絡(luò),把終端節(jié)點(diǎn)的屬性描述到網(wǎng)頁(yè)并進(jìn)行服務(wù)器部署,其中用微數(shù)據(jù)來(lái)描述每一個(gè)實(shí)體的靜態(tài)屬性,用JS文件描述動(dòng)態(tài)屬性。然后采用Web自動(dòng)化測(cè)試框架Watir,通過(guò)Css Selector定位技術(shù)實(shí)現(xiàn)對(duì)動(dòng)態(tài)頁(yè)面數(shù)據(jù)的實(shí)時(shí)采集,將實(shí)時(shí)采集的數(shù)據(jù)通過(guò)預(yù)處理后添加事件處理,提取關(guān)鍵和有效的事件數(shù)據(jù)并保存。最后基于不同的客戶端對(duì)事件條件下不同平臺(tái)和不同結(jié)構(gòu)的物聯(lián)網(wǎng)網(wǎng)頁(yè)進(jìn)行測(cè)試,結(jié)果表明基于Watir的物聯(lián)網(wǎng)Web事件處理系統(tǒng)能準(zhǔn)確和高效地獲取事件數(shù)據(jù)。
物聯(lián)網(wǎng);動(dòng)態(tài)網(wǎng)頁(yè);事件; ZigBee網(wǎng)絡(luò)
物聯(lián)網(wǎng)(Internet of Things,IOT)是當(dāng)前各國(guó)政府都寄予很大希望的未來(lái)增長(zhǎng)領(lǐng)域。在物聯(lián)網(wǎng)的系統(tǒng)中,對(duì)傳感器的數(shù)據(jù)管理和查詢是十分重要的。在現(xiàn)階段的物聯(lián)網(wǎng)傳感器的數(shù)據(jù)獲取和處理上,基于Web的物聯(lián)網(wǎng)數(shù)據(jù)管理獲得了廣泛應(yīng)用?;赪eb的物聯(lián)網(wǎng)系統(tǒng)可以通過(guò)嵌入式設(shè)備將各種智能物體相關(guān)的信息全部集成到Web實(shí)現(xiàn)事物的互聯(lián),對(duì)智能物體的訪問(wèn),可以通過(guò)現(xiàn)有的已經(jīng)被很好地理解和接受的標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn),例如URI、HTTP、REST等。
事件是指在一個(gè)流程中,當(dāng)達(dá)到某種狀況或條件而觸發(fā)某種行為的消息或請(qǐng)求,通??衫斫鉃楝F(xiàn)實(shí)世界中某種狀態(tài)的改變。物聯(lián)網(wǎng)事件處理的主要工作是根據(jù)已知給定的規(guī)則和模式,從基于分散信息系統(tǒng)的大量信息中檢測(cè)并提取被定義好的事件。對(duì)物聯(lián)網(wǎng)海量數(shù)據(jù),找出用戶感興趣的數(shù)據(jù)、過(guò)濾掉其他的冗余數(shù)據(jù)尤為關(guān)鍵,用戶不關(guān)心傳感器產(chǎn)生的所有數(shù)據(jù),只關(guān)心對(duì)他們有用的數(shù)據(jù),比如在“所有溫度傳感器產(chǎn)生的溫度數(shù)值中,用戶只對(duì)最高的溫度值產(chǎn)生興趣,看有沒(méi)有超過(guò)設(shè)定的閾值”。文獻(xiàn)[1]主要是針對(duì)網(wǎng)頁(yè)信息定位的數(shù)據(jù)抽取系統(tǒng)的研究,利用樹結(jié)點(diǎn)的Xpath位置路徑定位到待抽取信息的位置,但是沒(méi)有實(shí)現(xiàn)按照設(shè)定的目標(biāo)來(lái)實(shí)現(xiàn)信息抽取的任務(wù)。文獻(xiàn)[2]介紹了事件技術(shù)在Web中的應(yīng)用,而且應(yīng)用背景主要是靜態(tài)網(wǎng)頁(yè),對(duì)實(shí)時(shí)變化的物聯(lián)網(wǎng)Web網(wǎng)頁(yè)并不適用。文獻(xiàn)[3]中的基于JSSh的方案一次HTTP請(qǐng)求僅獲取一次DOM信息,請(qǐng)求和回應(yīng)耗時(shí)長(zhǎng),無(wú)法滿足實(shí)時(shí)獲取頁(yè)面動(dòng)態(tài)變化的數(shù)據(jù)。文獻(xiàn)[4]提出一種描述物聯(lián)網(wǎng)實(shí)體靜態(tài)屬性的方法并將描述的網(wǎng)頁(yè)保存到Apache服務(wù)器上,但是通過(guò)鏈接將動(dòng)態(tài)內(nèi)容保存到本地的文檔,這就限制了對(duì)動(dòng)態(tài)內(nèi)容的訪問(wèn)。
針對(duì)以上問(wèn)題,本文面向物聯(lián)網(wǎng)Web網(wǎng)頁(yè),設(shè)計(jì)了基于Watir的物聯(lián)網(wǎng)Web事件處理系統(tǒng)框架,首先創(chuàng)建物聯(lián)網(wǎng)頁(yè)面,將實(shí)體的靜態(tài)屬性保存到Apache服務(wù)器,動(dòng)態(tài)屬性保存到Jetty服務(wù)器上,采用自動(dòng)化測(cè)試框架Watir方法加載到物聯(lián)網(wǎng)實(shí)時(shí)動(dòng)態(tài)頁(yè)面,結(jié)合Web頁(yè)面的結(jié)構(gòu)和內(nèi)容對(duì)HTML文檔進(jìn)行解析并添加事件,將某種條件下的事件數(shù)據(jù)保存以滿足應(yīng)用需要。最后針對(duì)不同平臺(tái)多網(wǎng)頁(yè)實(shí)時(shí)抓取,結(jié)果表明該系統(tǒng)實(shí)時(shí)性高,響應(yīng)時(shí)間短,可擴(kuò)展性好,能滿足物聯(lián)網(wǎng)網(wǎng)頁(yè)實(shí)時(shí)數(shù)據(jù)的需求。
本文系統(tǒng)設(shè)計(jì)工作包括基于Web的物聯(lián)網(wǎng)頁(yè)面創(chuàng)建、服務(wù)器部署和Watir加載與事件獲取3個(gè)方面,具體過(guò)程為:將物聯(lián)網(wǎng)Web頁(yè)面放到服務(wù)器上,對(duì)于任何一個(gè)能連網(wǎng)的客戶端,通過(guò)基于Watir的自動(dòng)化測(cè)試框架,獲取事件條件下的物聯(lián)網(wǎng)頁(yè)面實(shí)時(shí)信息并存儲(chǔ)。系統(tǒng)的總體框圖如圖1所示。
圖1 系統(tǒng)總體框架
基于Web的物聯(lián)網(wǎng)頁(yè)面創(chuàng)建又包括感知層、網(wǎng)絡(luò)層和應(yīng)用層3個(gè)部分。
1.1 感知層和網(wǎng)絡(luò)層
感知層主要實(shí)現(xiàn)對(duì)物理世界的智能感知識(shí)別、信息采集處理和自動(dòng)控制,并由通信模塊將物理實(shí)體連接到網(wǎng)絡(luò)層和應(yīng)用層。其中,ZigBee[5]技術(shù)是常用的一種連接物理實(shí)體的通信技術(shù),它基于IEEE802.15.4無(wú)線標(biāo)準(zhǔn)研制開發(fā),用于短距離、低速率無(wú)線網(wǎng)絡(luò)通信。其突出優(yōu)點(diǎn)是應(yīng)用簡(jiǎn)單,工作頻段靈活,功耗低,成本低,可靠性高,具有自組網(wǎng)和自恢復(fù)能力等。本文采用TI公司的第二代芯片CC2530,設(shè)計(jì)了基于ZigBee的無(wú)線溫度監(jiān)測(cè)系統(tǒng)作為感知層實(shí)現(xiàn)數(shù)據(jù)的讀取,溫度傳感器采用DS18B20[6]。用兩個(gè)溫度傳感器DS18B20與兩個(gè)CC2530模塊相接作為終端節(jié)點(diǎn),另外一個(gè)CC2530模塊充當(dāng)協(xié)調(diào)器,在MSSTATE_LRWPAN協(xié)議棧的基礎(chǔ)上進(jìn)行應(yīng)用開發(fā),組建一個(gè)ZigBee網(wǎng)絡(luò),實(shí)現(xiàn)無(wú)線組網(wǎng),終端節(jié)點(diǎn)采集溫度信息,協(xié)調(diào)器接收到信息后將溫度信息通過(guò)串口發(fā)送給PC計(jì)算機(jī),然后通過(guò)網(wǎng)頁(yè)顯示。
1.2 應(yīng)用層
應(yīng)用網(wǎng)絡(luò)層即終端處理層,它是輸入輸出控制終端,包括計(jì)算機(jī)、手機(jī)等服務(wù)器終端,實(shí)現(xiàn)對(duì)傳輸層發(fā)送的信息的分析、存儲(chǔ)、挖掘處理等應(yīng)用。本文將監(jiān)測(cè)的溫度數(shù)據(jù)實(shí)時(shí)顯示到Web網(wǎng)頁(yè),并將動(dòng)態(tài)網(wǎng)頁(yè)部署到Jetty服務(wù)器上,發(fā)布到局域網(wǎng)。
本文對(duì)實(shí)體的描述分為兩類,對(duì)靜態(tài)屬性的描述和動(dòng)態(tài)屬性的描述。靜態(tài)屬性包括傳感器的自然屬性、空間屬性、時(shí)間屬性,動(dòng)態(tài)屬性包括傳感器的動(dòng)態(tài)數(shù)據(jù)。將兩種屬性描述到Web網(wǎng)頁(yè)并部署到服務(wù)器上,靜態(tài)數(shù)據(jù)發(fā)布到Apache服務(wù)器上,動(dòng)態(tài)數(shù)據(jù)發(fā)布到Jetty服務(wù)器上。通過(guò)靜態(tài)網(wǎng)頁(yè)上的鏈接地址,鏈接到動(dòng)態(tài)頁(yè)面。本文用于測(cè)試的兩個(gè)服務(wù)器部署在一臺(tái)計(jì)算機(jī)上,所以兩個(gè)網(wǎng)址的端口號(hào)不同,Jetty服務(wù)器的設(shè)定端口號(hào)為80,Apache服務(wù)器的端口號(hào)為8080,訪問(wèn)地址均為本地IP。
2.1 靜態(tài)頁(yè)面的描述
本文靜態(tài)網(wǎng)頁(yè)采用微數(shù)據(jù)描述。微數(shù)據(jù)是標(biāo)記信息內(nèi)容的一種方式。微數(shù)據(jù)表現(xiàn)為可被嵌套的名值對(duì)(Name-Value Pairs)。這些名值對(duì)的組合被稱為條目,每個(gè)名值對(duì)被稱為一個(gè)成員屬性[7]。在本文中,通過(guò)微數(shù)據(jù)描述傳感器的靜態(tài)頁(yè)面,Itemid描述條目的全局標(biāo)識(shí)符,Itemprop描述條目的對(duì)象屬性定義,Itemref擁有一個(gè)Itemscope屬性,Itemscope屬性主要描述一個(gè)布爾型的屬性,可以創(chuàng)建一組名為條目的名值對(duì)。靜態(tài)屬性包括傳感器的名稱、類型、時(shí)間特性、地理特性。在對(duì)協(xié)調(diào)器地理特性的描述中,本文使用瀏覽器自帶的地理位置獲取方式,由于協(xié)調(diào)器與計(jì)算機(jī)串口相連,使用HTML5的GEolocation API調(diào)用瀏覽器來(lái)確定協(xié)調(diào)器的位置信息,從而能確定該ZigBee網(wǎng)絡(luò)的地理位置。本文將微數(shù)據(jù)描述的網(wǎng)頁(yè)利用Google的Live Microdata和Testing Tool來(lái)確定微數(shù)據(jù)描述的正確性,將編寫的網(wǎng)頁(yè)源代碼放入編輯區(qū)間,查看兩者顯示的數(shù)據(jù)結(jié)構(gòu)。Live Microdata通過(guò)將數(shù)據(jù)結(jié)構(gòu)變?yōu)镴son格式,將每個(gè)實(shí)體的全部靜態(tài)屬性在Items項(xiàng)中顯示出來(lái),微數(shù)據(jù)將包含在區(qū)間的名值對(duì)屬性全部顯示到一個(gè)Items中。Testing Tool將每個(gè)實(shí)體靜態(tài)屬性按照名值對(duì)顯示出來(lái),根據(jù)以上的兩種方式測(cè)試,證明微數(shù)據(jù)網(wǎng)頁(yè)結(jié)構(gòu)的語(yǔ)義性和方便性。
本文使用Apache2.2版本將靜態(tài)網(wǎng)頁(yè)部署到服務(wù)器上,通過(guò)Serverroot命令設(shè)置保存服務(wù)器文件的目錄,配置文件所在位置為D:Apache Software FoundationApache2.2conf,主要的配置修改如下:1)修改Listen為211.82.237.78:8080,其中211.82.237.78為本地IP地址,服務(wù)端口號(hào)為8080;2)修改默認(rèn)的自動(dòng)運(yùn)行文件名稱,修改dir_module模塊,將微數(shù)據(jù)編寫的靜態(tài)網(wǎng)頁(yè)index.html保存到dir_module模塊中。通過(guò)對(duì)Apache的部署,實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)的訪問(wèn)。
2.2 動(dòng)態(tài)頁(yè)面的描述
本文使用JFinal作為開發(fā)動(dòng)態(tài)頁(yè)面的框架,JFinal框架的架構(gòu)由空間建構(gòu)和邏輯架構(gòu)組成。其中,空間架構(gòu)采用微內(nèi)核全方位擴(kuò)展架構(gòu),它由Handler、Interceptor、Controller、Render和Plugin五大部分組成。每個(gè)部分都基于接口實(shí)現(xiàn),支持完整的自定義,擴(kuò)展性強(qiáng),使用靈活,設(shè)計(jì)精巧且使用簡(jiǎn)單[8]。本文使用JFinal框架調(diào)用和啟動(dòng)Jetty服務(wù)器。Jetty是一個(gè)完全由Java實(shí)現(xiàn)的、開源的HTTP服務(wù)器和 Servlet容器,其運(yùn)行速度快。Jetty更靈活,體現(xiàn)在其可插拔性和可擴(kuò)展性,更易于開發(fā)者對(duì)Jetty本身進(jìn)行二次開發(fā),定制一個(gè)適合自身需求的Web Server,并且Jetty可以非常容易地嵌入到Java應(yīng)用程序當(dāng)中。
對(duì)動(dòng)態(tài)頁(yè)面的處理使用JSP實(shí)現(xiàn),腳本語(yǔ)言和頁(yè)面布局采用的是Extjs進(jìn)行操作,Extjs是一種主要用于創(chuàng)建前端用戶界面。在對(duì)腳本代碼的編寫中,具體內(nèi)容如下:首先設(shè)置頁(yè)面的布局,頁(yè)面的布局包括Panel,Button和Label等。通過(guò)在Items組件中添加Button和Label來(lái)顯示傳感器數(shù)據(jù)。其中,Items包含了所有的子組件,若需要再添加傳感器,直接可在Items里邊添加,這個(gè)可以在后續(xù)的擴(kuò)展中方便添加其他的傳感器。在Button按鈕的設(shè)置中,主要是添加Button的點(diǎn)擊事件,用來(lái)獲取數(shù)值。在Handler的處理上,添加自定義的Task事件,利用SetText方法將數(shù)據(jù)顯示到Label上。在對(duì)串口數(shù)據(jù)的獲取過(guò)程中,通過(guò)定義SerialPort類來(lái)確定串口設(shè)置,包括數(shù)據(jù)位、校驗(yàn)位和停止位等,通過(guò)對(duì)每個(gè)字節(jié)的數(shù)據(jù)處理,顯示出原來(lái)的數(shù)值。
在數(shù)值的計(jì)算和處理中,將處理后的數(shù)據(jù)用RenderJson對(duì)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,Render系列方法將渲染不同類型的視圖并返回給客戶端,Json是一種將數(shù)據(jù)從服務(wù)器傳遞到客戶端的更為有效的辦法,轉(zhuǎn)換成Json格式的,傳遞給各自的Label標(biāo)簽,變?yōu)橐子贘S文件讀出的數(shù)據(jù)。在JSP文件中,調(diào)用JS文件,將Json變量的數(shù)據(jù)顯示出來(lái)。其中,在Task的事件中,時(shí)間的處理用了Interval方法,設(shè)定Interval:3000,每3 s刷新一次數(shù)據(jù)。顯示部分結(jié)果如圖2所示。
圖2 部分顯示效果(截圖)
Watir是一個(gè)用于網(wǎng)頁(yè)自動(dòng)化測(cè)試的開源工具,主要是通過(guò)使用Watir::IE的一個(gè)實(shí)例化對(duì)象@IE來(lái)獲得頁(yè)面上的各種元素,Watir::IE封裝的是一個(gè)當(dāng)前頁(yè)面的DOM Tree,而不是頁(yè)面源代碼,比如頁(yè)面如果用JS動(dòng)態(tài)產(chǎn)生一個(gè)元素,在Watir中仍然可以訪問(wèn)。Watir是用Ruby語(yǔ)言實(shí)現(xiàn)的,Ruby語(yǔ)言自然簡(jiǎn)潔,卻依然擁有強(qiáng)大的數(shù)據(jù)分析和處理能力,主要應(yīng)用于網(wǎng)絡(luò)開發(fā)語(yǔ)言、數(shù)據(jù)處理和數(shù)據(jù)挖掘等方面。Ruby的插件Nokogiri是一種HTML、XML、SAX閱讀解析器,Nokogiri的速度比應(yīng)用廣泛的Hpricot要快許多。Ruby的另一種插件Rufus-scheduler 是一種可以定時(shí)的插件,可以讓程序在指定的時(shí)間內(nèi)運(yùn)行。
本文用Watir來(lái)加載傳感器頁(yè)面并獲取數(shù)值,根據(jù)需要可實(shí)現(xiàn)按一定時(shí)間間隔連續(xù)獲取,如每10 s完成一次獲取。該方法實(shí)時(shí)性高,連續(xù)性好,能滿足各個(gè)領(lǐng)域?qū)ξ锫?lián)網(wǎng)實(shí)時(shí)數(shù)據(jù)的需求。基于Watir的物聯(lián)網(wǎng)Web事件處理的流程圖如圖3所示。
圖3 基于Watir的物聯(lián)網(wǎng)Web事件處理流程
3.1 加載、獲取并解析HTML文檔
本文首先通過(guò)“ie = Watir::Browser.new”創(chuàng)建一個(gè)瀏覽器對(duì)象實(shí)例,通過(guò)“ie.goto (‘http://211.82.237.78/’)”,采用跳轉(zhuǎn)方式打開預(yù)期的頁(yè)面,同時(shí)用Span標(biāo)簽下的Button按鈕利用Click方法來(lái)模擬點(diǎn)擊按鈕,讓其顯示動(dòng)態(tài)的數(shù)據(jù),在完成Watir加載定位之后,通過(guò)“ie.html”方法獲取框架下的HTML文檔。網(wǎng)頁(yè)的部分HTML文檔如圖4所示。
圖4 部分HTML文檔(截圖)
Nokogiri通過(guò)“Nokogiri::HTML.parse”方法獲得HTML文檔,并進(jìn)行解析。Nokogiri提供了XPath及CSS Selector方式來(lái)定位文檔里的節(jié)點(diǎn),但是CSS locator比XPath locator速度快,并且CSS Selector能非常精準(zhǔn)地定位到測(cè)試的Elements。CSS Selector可以粗略分成幾類基本的類型:ID選擇器(#id)、Class選擇器(.class)、類型(type)選擇器(p)等。這些都是單一的選擇器,可以在應(yīng)用中把它們組合起來(lái),如:div#id,div#p等。本文采用CSS Selector來(lái)查找頁(yè)面上所需內(nèi)容的節(jié)點(diǎn),用ID選擇器(#id)實(shí)時(shí)定位該時(shí)刻的頁(yè)面文本信息。
3.2 基于Watir的事件處理的方法
本文首先將解析后的數(shù)據(jù)進(jìn)行預(yù)處理,利用Ruby的Araay類來(lái)創(chuàng)建數(shù)組,以其中一個(gè)網(wǎng)頁(yè)內(nèi)容進(jìn)行實(shí)時(shí)解析為例,解析內(nèi)容如表1所示。
表1 實(shí)時(shí)解析網(wǎng)頁(yè)
解析時(shí)間解析內(nèi)容處理方法保存方式實(shí)時(shí)解析標(biāo)簽light逐位解析doccss(‘#light’)text[i]保存到數(shù)組shu?zi 實(shí)時(shí)解析標(biāo)簽light1逐位解析doccss(‘#light1’)text[j]保存到數(shù)組shu?zi1實(shí)時(shí)解析標(biāo)簽內(nèi)容doccss(‘#light’)text保存到數(shù)組或者數(shù)據(jù)庫(kù)實(shí)時(shí)解析標(biāo)簽數(shù)字wendu[0].split(“:”)[1]保存到數(shù)組或者數(shù)據(jù)庫(kù)
最后給預(yù)處理后的數(shù)據(jù)添加事件,事件方法包括閾值的添加,其中閾值添加包括上下限閾值和區(qū)間閾值。本文以其中一個(gè)傳感器為例說(shuō)明。
在上下限閾值的處理上,本文使用逐位算法與閾值作比較。通過(guò)閾值和實(shí)時(shí)解析的逐位判斷。當(dāng)在閾值范圍內(nèi)時(shí),將數(shù)據(jù)實(shí)時(shí)上傳并保存,否則用“超出閾值“來(lái)表示,下限的處理過(guò)程類似于上限閾值。對(duì)區(qū)間閾值的處理上,通過(guò)Ruby的區(qū)間Range方法來(lái)添加區(qū)間范圍,使用區(qū)間表示方法表示一個(gè)半閉半開的區(qū)間。當(dāng)數(shù)值在此范圍時(shí)實(shí)時(shí)上傳數(shù)據(jù),不在此范圍時(shí)顯示“超出閾值”字樣。在后續(xù)的擴(kuò)展中,當(dāng)網(wǎng)頁(yè)上有多個(gè)傳感器的數(shù)據(jù)時(shí),可以給每個(gè)傳感器都設(shè)定相應(yīng)的閾值,實(shí)時(shí)比較傳感器之間的大小,將最大或者最小值輸出。當(dāng)傳感器有其他的事件時(shí),可以實(shí)時(shí)添加,擴(kuò)展性得到了很大的提高。
3.3 事件結(jié)果數(shù)據(jù)的存儲(chǔ)
本文通過(guò)Ruby中的文件操作來(lái)存儲(chǔ)數(shù)據(jù),F(xiàn)ile類是IO類的子類,通過(guò)File.new(“d.txt”,“w”)方法實(shí)現(xiàn)創(chuàng)建txt文檔,其中“w”意思是表示以寫入的方式打開文件,“d”為文檔名稱。在本文中,文檔名稱為“filewendu”,通過(guò)file.puts方法將獲取的數(shù)據(jù)保存到filewendu.txt中。同樣可以創(chuàng)建幾個(gè)文件實(shí)例,經(jīng)過(guò)數(shù)據(jù)處理后的數(shù)據(jù),可以分開保存并呈現(xiàn)給用戶。
3.4 事件數(shù)據(jù)的顯示
本文使用JS文件調(diào)用已經(jīng)保存的文本內(nèi)容,通過(guò)網(wǎng)頁(yè)顯示事件檢測(cè)結(jié)果。首先通過(guò)JavaScript的ActiveXObject來(lái)創(chuàng)建FileSystemObject對(duì)象實(shí)例,利用OpenTextFile方法通過(guò)地址打開文件,通過(guò)循環(huán)將讀取的文件內(nèi)容顯示到TxtArea標(biāo)簽內(nèi),將文本內(nèi)容顯示到網(wǎng)頁(yè)上。
本文選取幾個(gè)典型的物聯(lián)網(wǎng)系統(tǒng)進(jìn)行實(shí)驗(yàn),選取的3個(gè)物聯(lián)網(wǎng)網(wǎng)頁(yè)結(jié)構(gòu)都不一樣。實(shí)驗(yàn)系統(tǒng)包括:1)XX大學(xué)現(xiàn)代無(wú)線通信實(shí)驗(yàn)室(物聯(lián)網(wǎng)實(shí)驗(yàn)平臺(tái))的智能家居系統(tǒng);2)XX大學(xué)現(xiàn)代無(wú)線通信實(shí)驗(yàn)室(物聯(lián)網(wǎng)實(shí)驗(yàn)平臺(tái))的用電信息采集系統(tǒng);3)本文自行搭建的物聯(lián)網(wǎng)實(shí)驗(yàn)系統(tǒng)。其中系統(tǒng)1)顯示的內(nèi)容包括窗戶和門口兩個(gè)實(shí)體,每個(gè)實(shí)體的監(jiān)測(cè)內(nèi)容包括溫度、濕度和光照,6個(gè)傳感器采用Push的方式將感知到的信息實(shí)時(shí)推送到網(wǎng)頁(yè)上,且6個(gè)傳感器異步更新,各個(gè)位置的數(shù)據(jù)更新周期均為5 s,并實(shí)時(shí)動(dòng)態(tài)地顯示每個(gè)實(shí)體的數(shù)據(jù)至網(wǎng)頁(yè)上,平臺(tái)鏈接地址為http://211.82.236.83/sh/。系統(tǒng)2)的用電信息采集系統(tǒng)主要匯總各房間的用電數(shù)據(jù)至網(wǎng)頁(yè),包括8個(gè)房間的用電數(shù)據(jù)采集-電壓、電流、功率、電能量采集等,每5 min刷新一次。平臺(tái)的鏈接地址為http://211.82.236.83/dianli/system/。系統(tǒng)3)的內(nèi)容為兩個(gè)溫度傳感器上傳數(shù)據(jù)至網(wǎng)頁(yè),鏈接地址為http://211.82.237.78/。其中系統(tǒng)1)和系統(tǒng)2)在同一個(gè)平臺(tái)的服務(wù)器上,系統(tǒng)3)在另外一個(gè)平臺(tái)的服務(wù)器上。
對(duì)3個(gè)系統(tǒng)處理的內(nèi)容分別為:系統(tǒng)1)處理的內(nèi)容為對(duì)6個(gè)傳感器分別添加上下限閾值和區(qū)間閾值。系統(tǒng)2)處理的內(nèi)容為以其中8個(gè)房間的三相電壓和總電量為例,給每個(gè)房間的電壓和總電量添加區(qū)間閾值,當(dāng)超過(guò)閾值時(shí),顯示警告信息。系統(tǒng)3)處理的內(nèi)容為前文介紹的事件處理。
實(shí)驗(yàn)用兩臺(tái)計(jì)算機(jī)作為客戶端遠(yuǎn)程訪問(wèn)并抓取和解析數(shù)據(jù),研究抓取并解析的準(zhǔn)確度。實(shí)驗(yàn)中使用Ruby的Time類,在程序的開始和結(jié)束加上時(shí)間戳,通過(guò)兩個(gè)時(shí)間的差值來(lái)確定加載并解析的時(shí)間和響應(yīng)時(shí)間,其中,響應(yīng)時(shí)間為開始加載到進(jìn)入網(wǎng)頁(yè)完成所需的時(shí)間。通過(guò)Time類的to_f方法,該方法可以精確到毫秒,在數(shù)據(jù)解析前后加上時(shí)間戳,確定解析的時(shí)間。周期模式采用連續(xù)抓取的方法,時(shí)間間隔為10/15/20 s, 本文連續(xù)30次抓取頁(yè)面數(shù)據(jù),確定實(shí)驗(yàn)結(jié)果參數(shù)。其中,查準(zhǔn)率是根據(jù)多次的循環(huán)求出的平均數(shù)。實(shí)驗(yàn)中的相關(guān)應(yīng)用軟件如表2所示,實(shí)驗(yàn)結(jié)果如表3所示。
表2 實(shí)驗(yàn)環(huán)境和相關(guān)配置
用途客戶端1客戶端2PC硬件配置IntelICorei5-3210M(250GHz),內(nèi)存4Gbyte,硬盤500GbyteIntel(R)Core(TM)i5-3230M(260GHz),內(nèi)存4Gbyte,硬盤1TbytePC操作系統(tǒng)Windows7旗艦版32位操作系統(tǒng)Windows7旗艦版64位操作系統(tǒng)PC網(wǎng)絡(luò)環(huán)境某大學(xué)校園網(wǎng)某大學(xué)校園網(wǎng)應(yīng)用軟件WatirGemNokogiriRubyWatirGemNokogiriRuby
表3 客戶端的訪問(wèn)實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)項(xiàng)客戶端1實(shí)時(shí)獲取客戶端2實(shí)時(shí)獲取客戶端1實(shí)時(shí)獲取客戶端2實(shí)時(shí)獲取客戶端1實(shí)時(shí)獲取客戶端2實(shí)時(shí)獲取加載頁(yè)面數(shù)1個(gè)1個(gè)2個(gè)2個(gè)3個(gè)3個(gè)循環(huán)時(shí)間/s10/15/2010/15/2010/15/2010/15/2010/15/2010/15/20測(cè)試系統(tǒng)系統(tǒng)1)系統(tǒng)1)系統(tǒng)1),3)系統(tǒng)1),3)系統(tǒng)2)系統(tǒng)2)系統(tǒng)2),3)系統(tǒng)2),3)系統(tǒng)3)系統(tǒng)3)系統(tǒng)1),2)系統(tǒng)1),2)系統(tǒng)1),2),3)系統(tǒng)1),2),3)響應(yīng)時(shí)間/s1/1/11/1/12/2/22/2/31/1/11/1/12/2/32/3/21/1/11/1/11/1/12/1/12/2/33/2/2加載并解析的時(shí)間/s3/2/33/2/23/3/33/2/32/3/33/2/33/3/43/4/32/2/22/2/24/3/33/4/46/7/65/6/6解析的時(shí)間/ms3/2/33/2/24/5/44/5/43/2/23/2/25/5/65/5/62/1/22/1/26/7/66/7/610/10/1210/9/12查準(zhǔn)率/%100100100100100100100100100100100100100100CPU占用(前/后)/%3/325/303/405/343/305/283/425/363/295/263/465/403/525/48
由以上實(shí)驗(yàn)看出,基于Watir的物聯(lián)網(wǎng)事件獲取方法能按照預(yù)先設(shè)定的時(shí)間連續(xù)抓取以保證獲取最新的數(shù)據(jù)。在同一客戶端對(duì)3個(gè)系統(tǒng)的由少到多逐次測(cè)試,隨著同時(shí)加載網(wǎng)頁(yè)數(shù)量增加,加載并解析的時(shí)間也會(huì)有小幅上升,但是所需總時(shí)間很短且響應(yīng)時(shí)間快,查準(zhǔn)率一直保持得很穩(wěn)定,可以100%完成。隨著事件數(shù)量的增多,解析的時(shí)間也會(huì)有所上升,但是毫秒級(jí)的時(shí)間就可以完成實(shí)時(shí)解析。不同的循環(huán)時(shí)間對(duì)應(yīng)的結(jié)果對(duì)比差值很小,說(shuō)明不同的循環(huán)時(shí)間均可以實(shí)時(shí)高效地獲取數(shù)據(jù),可以滿足對(duì)物聯(lián)網(wǎng)Web網(wǎng)頁(yè)實(shí)時(shí)性的事件處理。同時(shí)可以看出,當(dāng)Watir處理不同平臺(tái)的網(wǎng)頁(yè)時(shí),與處理同一平臺(tái)相同網(wǎng)頁(yè)時(shí)間對(duì)比相差不大,隨著網(wǎng)頁(yè)數(shù)量的增加,也可以實(shí)時(shí)高效地處理網(wǎng)頁(yè)內(nèi)容。
在實(shí)驗(yàn)中,用了不同配置的計(jì)算機(jī)完成對(duì)3個(gè)系統(tǒng)由少到多的逐次測(cè)試,不同循環(huán)時(shí)間CPU的前后占有率幾乎差不多。隨著加載頁(yè)面數(shù)量的增多,CPU的占有率會(huì)有所上升,但是不同配置的計(jì)算機(jī)上升的幅度會(huì)有所不同,配置較高的計(jì)算機(jī)在CPU的占有率和網(wǎng)頁(yè)加載并解析的時(shí)間稍好于另外一臺(tái)配置較低的計(jì)算機(jī),但是兩臺(tái)計(jì)算機(jī)都能準(zhǔn)確地完成數(shù)據(jù)的加載和解析。
本文利用設(shè)計(jì)的Web自動(dòng)化測(cè)試框架,通過(guò)Nokogiri提供的CSS Selector進(jìn)行實(shí)時(shí)定位,結(jié)合Ruby的Araay類預(yù)處理數(shù)據(jù),給預(yù)處理的數(shù)據(jù)添加事件,實(shí)現(xiàn)了針對(duì)物聯(lián)網(wǎng)網(wǎng)頁(yè)在滿足某種條件下事件數(shù)據(jù)的實(shí)時(shí)獲取,不同的用戶可以自定義事件來(lái)獲取數(shù)據(jù)。通過(guò)兩個(gè)客戶端在安裝Watir框架后對(duì)3種系統(tǒng)進(jìn)行不同組合的測(cè)試,結(jié)果表明該方法獲取的速度快,響應(yīng)時(shí)間短,準(zhǔn)確率高,滿足物聯(lián)網(wǎng)的實(shí)時(shí)性應(yīng)用需求。
[1] 侯明燕.基于網(wǎng)頁(yè)信息定位的數(shù)據(jù)抽取技術(shù)的研究[D].廣州:暨南大學(xué),2011.
[2] 仲兆滿,李存華,劉宗田,等.面向Web新聞的事件多要素檢索方法[J].軟件學(xué)報(bào),2013,24(10):2366-2378.
[3] 萬(wàn)久士,李翔,林祥.基于JSSh的動(dòng)態(tài)網(wǎng)頁(yè)獲取研究與實(shí)現(xiàn)[J].信息安全與通信密,2010(4):93-95.
[4] 魏欣.基于微數(shù)據(jù)的物聯(lián)網(wǎng)實(shí)體表示與搜索[D].哈爾濱:哈爾濱工業(yè)大學(xué),2013.
[5] 高永清,商丹. 基于ZigBee智慧實(shí)驗(yàn)室系統(tǒng)的設(shè)計(jì)[J].電視技術(shù),2015,39(8):17-21.
[6] 趙小峰,張曉東,袁會(huì)靈.一種輪胎內(nèi)部溫度無(wú)線監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].中國(guó)農(nóng)機(jī)化學(xué)報(bào),2015(1):279-281.
[7] MAVRODY S. HTML5和CSS3快速參考[M]. 姚皓,淩杰,譯.北京:人民郵電出版社,2013.
[8] 楊寧,劉丹軍.基于JFinal框架的Java Web應(yīng)用開發(fā)研究[J].電腦知識(shí)與技術(shù),2014,10(7):1440-1443.
System Design for Internet of Things Data Processing Based on Watir
KONG Yinghui, GAO Yudong
(Electronics and Communication Engineering, North China Electric Power University, Hebei Baoding 071000, China)
Web event processing system framework for Internet of Things based on Watir is designed. Firstly, a ZigBee wireless sensor networks is set up, the property of terminal nodes are described with the Web page and deployed them to the server, where the static properties of each entity are described by microdata and the dynamic properties are described based on JS. Then the Web automated testing framework Watir is used to acquire the information of dynamic pages by real-time through CSS Selector locating technology, the real-time data acquired will be add an event handler after pretreatment and then the key data is extracted with event to save. Finally,Mutiple Web pages for different platforms and different structure are tested with event condition based on different client, the results show that Internet of Things Web event processing system based on Watir can accurately and efficiently acquire event data.
Internrt of Things; dynamic pages; event; ZigBee network
TP391.1
B
10.16280/j.videoe.2015.20.013
孔英會(huì)(1965— ),博士,教授,主要研究方向?yàn)橹悄苄畔⑻幚?、物?lián)網(wǎng)技術(shù);
2015-06-05
【本文獻(xiàn)信息】孔英會(huì),高育棟.基于Watir的物聯(lián)網(wǎng)數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2015,39(20).
高育棟(1989— ),碩士生,主研物聯(lián)網(wǎng)技術(shù)。
責(zé)任編輯:許 盈