方國棟,張育釗
(華僑大學(xué)工學(xué)院,泉州 362021)
隨著信息化時代的高速發(fā)展,無線通信技術(shù)成為了數(shù)據(jù)傳遞過程中不可或缺的部分,例如藍(lán)牙、Wi-Fi、ZigBee和Lora等人們熟悉的通訊方式,它們利用自己的優(yōu)勢在各個領(lǐng)域發(fā)揮著各自的作用。目前很多現(xiàn)場都是用有線的傳輸數(shù)據(jù),但是在一些特定場景不允許有線的存在,所以新興的無線傳感器網(wǎng)技術(shù)ZigBee正好解決了這個問題。
現(xiàn)階段,在環(huán)境監(jiān)測方面,甘玫玉[3]等人利用大數(shù)據(jù)的方式對環(huán)境數(shù)據(jù)進(jìn)行分析并作出預(yù)測,即采用大數(shù)據(jù)挖掘、分析技術(shù)將監(jiān)測點(diǎn)的環(huán)境表征等復(fù)雜信息與指標(biāo)數(shù)據(jù)結(jié)合起來進(jìn)行關(guān)聯(lián)分析、整合,建立環(huán)境大數(shù)據(jù)系統(tǒng),全面分析環(huán)境的基本狀況和預(yù)測緊急狀態(tài)的趨勢;盛平[4]等提出基于ZigBee技術(shù)與3G技術(shù)結(jié)合的方式來實(shí)現(xiàn)特定場景的監(jiān)控,該方案的結(jié)構(gòu)是,現(xiàn)場部署ZigBee無線網(wǎng)絡(luò),將數(shù)據(jù)集中在嵌入式服務(wù)器中處理,使用3G網(wǎng)絡(luò)實(shí)現(xiàn)與Internet無縫連接;王驥[5]等人通過無線傳感網(wǎng)絡(luò)和ZigBee相結(jié)合,也是基于Zig?Bee作為通信模塊,網(wǎng)關(guān)采用GPRS作為系統(tǒng)與3G網(wǎng)絡(luò)的通信模式。本文總結(jié)和歸納了上述檢測系統(tǒng),并此基礎(chǔ)提出了自己的ZigBee搭建本地?zé)o線局域網(wǎng),通過嵌入式網(wǎng)關(guān)(4G)與Internet連接,實(shí)現(xiàn)現(xiàn)場和服務(wù)器交互數(shù)據(jù)的方式來監(jiān)測環(huán)境。服務(wù)器端增加了異常檢測方法,對異常數(shù)據(jù)進(jìn)行檢查并上報(bào)異常問題,同時開發(fā)了后臺管理界面,管理人員通過Web網(wǎng)頁實(shí)時查看現(xiàn)場環(huán)境參數(shù),管理人員通過網(wǎng)頁前端數(shù)據(jù)和異常模塊,及時了解現(xiàn)場情況,以便做出進(jìn)一步的判斷和決策。
本系統(tǒng)由ZigBee無線網(wǎng)絡(luò)、嵌入式網(wǎng)關(guān)、后臺管理系統(tǒng)和服務(wù)器四部分組成,系統(tǒng)框架如圖1所示。
ZigBee技術(shù)[6-9]是一種近距離、低復(fù)雜度、低功耗、低速率、低成本的雙向無線通訊技術(shù),具有以下特點(diǎn):①低功耗:傳輸速率低,發(fā)射功率為1mW,采用了休眠模式;②成本低:協(xié)議棧免專利費(fèi),工作于ISM頻段868MHz(歐洲)、915NH 在(北美)和 2.4GHz(全球);③網(wǎng)絡(luò)容量大:可支持節(jié)點(diǎn)達(dá)65000個;④可靠:采用了CSMA-CA機(jī)制,具有自動動態(tài)組網(wǎng)功能;⑤安全:采用CRC校驗(yàn),使用了AES-128加密算法。
ZigBee無線網(wǎng)絡(luò)包括多個ZigBee節(jié)點(diǎn)及ZigBee協(xié)調(diào)器,系統(tǒng)底層通訊協(xié)議為Z-Stack,實(shí)現(xiàn)自組網(wǎng),ZigBee協(xié)調(diào)器組建并維護(hù)ZigBee網(wǎng)絡(luò),各ZigBee節(jié)點(diǎn)通過外接電路與傳感器交互數(shù)據(jù),并向ZigBee協(xié)調(diào)器上報(bào)該數(shù)據(jù),考慮到工地實(shí)際環(huán)境影響,部分ZigBee節(jié)點(diǎn)中有添加路由器,用于數(shù)據(jù)中繼。路由器節(jié)點(diǎn)通常放置在離終端節(jié)點(diǎn)較近、距協(xié)調(diào)器節(jié)點(diǎn)較遠(yuǎn)的位置,多數(shù)時候需要路由器節(jié)點(diǎn)作為數(shù)據(jù)傳輸?shù)闹修D(zhuǎn)站。在終端節(jié)點(diǎn)數(shù)據(jù)傳輸?shù)絽f(xié)調(diào)器的過程中,如果距離太遠(yuǎn)不能直接傳輸。理論上可以采用經(jīng)過足夠多個路由器中繼跳轉(zhuǎn)的辦法。但實(shí)際應(yīng)用中,第一,路由器層數(shù)過多會造成硬件上的資源浪費(fèi);第二,對于實(shí)時性敏感Zig?Bee網(wǎng)絡(luò)來說,數(shù)據(jù)傳輸過程中多次路由中轉(zhuǎn)產(chǎn)生的延時是不可輕視的,通常,一次中轉(zhuǎn)會產(chǎn)生l0ms延時,所以要盡量避免多層路由。因此,本系統(tǒng)只設(shè)計(jì)了一層路由,把重點(diǎn)放在了如何增加路由節(jié)點(diǎn)和協(xié)調(diào)器節(jié)點(diǎn)之間的有效通信距離,以擴(kuò)大網(wǎng)絡(luò)范圍。本系統(tǒng)的具體解決方法是在路由節(jié)點(diǎn)上增加功率放大器芯片CC2591,該芯片上集成了高性能的功率放大器和低噪聲放大器。ZigBee協(xié)調(diào)器接收到環(huán)境參數(shù)數(shù)據(jù)后,進(jìn)行校驗(yàn),在數(shù)據(jù)正確的情況下將數(shù)據(jù)進(jìn)一步打包,否則要求ZigBee節(jié)點(diǎn)重發(fā),環(huán)境數(shù)據(jù)打包完成后,ZigBee協(xié)調(diào)器將打包的結(jié)果數(shù)據(jù)發(fā)送給路由器。
圖1 系統(tǒng)技術(shù)框架圖
網(wǎng)關(guān)部分的作用是建立前端和后臺服務(wù)器之間的網(wǎng)絡(luò)通信,將前端傳感器節(jié)點(diǎn)在現(xiàn)場采集的環(huán)境數(shù)據(jù)參數(shù)上傳到后臺服務(wù)器。嵌入式OpenWrt路由器基于Linux系統(tǒng),繼承了Linux的TCP/IP協(xié)議棧,程序開發(fā)時可以直接使用系統(tǒng)提供的TCP/IP協(xié)議棧API創(chuàng)建Socket網(wǎng)絡(luò)套接字,同時該版本Linux系統(tǒng)穩(wěn)定,精簡。綜上所述,采用嵌入式OpenWrt路由器將會使得本系統(tǒng)開發(fā)更為簡單,效率更高,成本更低。在本系統(tǒng)中,該網(wǎng)關(guān)主要負(fù)責(zé)兩個功能:其一是拆分、檢查和校驗(yàn)ZigBee協(xié)調(diào)器打包的現(xiàn)場實(shí)時環(huán)境參數(shù),在數(shù)據(jù)正確的情況下,該路由器繼續(xù)本功能部分的打包;其二是采用TCP/IP協(xié)議,通過Socket套接字,將第一部分打包后的數(shù)據(jù)轉(zhuǎn)發(fā)至后臺服務(wù)器。
本系統(tǒng)服務(wù)器部分采用LAMP架構(gòu),LAMP指的Linux(開源操作系統(tǒng))、Apache(HTTP服務(wù)器),MySQL(數(shù)據(jù)庫軟件)和PHP(有時也是指Perl或Python),一般用來建立Web應(yīng)用平臺。這些開放源代碼程序本身并不是專門設(shè)計(jì)成同另幾個程序一起工作的,但由于它們的免費(fèi)和開源,這個組合開始流行(大多數(shù)Linux發(fā)行版本捆綁了這些軟件)。當(dāng)一起使用的時候,它們表現(xiàn)地像一個具有活力的解決方案包。其他的方案包有蘋果的WebObjects(最初是應(yīng)用服務(wù)器),Java/J2EE和微軟的.NET架構(gòu)。
LAMP包的腳本組件中包括了CGIweb接口,它在90年代初期變得流行。這個技術(shù)允許網(wǎng)頁瀏覽器的用戶在服務(wù)器上執(zhí)行一個程序,并且和接受靜態(tài)的內(nèi)容一樣接受動態(tài)的內(nèi)容。程序員使用腳本語言來創(chuàng)建這些程序因?yàn)樗鼈兡芎苋菀子行У牟僮魑谋玖?,甚至?dāng)這些文本流并非源自程序自身時也是。正是由于這個原因系統(tǒng)設(shè)計(jì)者經(jīng)常稱這些腳本語言為膠水語言。
在本系統(tǒng)中,MySQL用于環(huán)境數(shù)據(jù)的保存,前端將現(xiàn)場環(huán)境的數(shù)據(jù)傳送到后臺服務(wù)器,服務(wù)器端DAO層將數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中;PHP用作為服務(wù)器端軟件開發(fā)語言,服務(wù)器端軟件用于監(jiān)聽路由器的TCP連接,在和路由器建立了TCP連接之后,交互傳感器所采集到的現(xiàn)場環(huán)境數(shù)據(jù)并保存,以便于后臺管理系統(tǒng)對現(xiàn)場環(huán)境數(shù)據(jù)的查詢和管理人員的進(jìn)一步?jīng)Q策,同時后臺服務(wù)器有獨(dú)自開啟一進(jìn)程用于數(shù)據(jù)異常檢查,并保存數(shù)據(jù)異常信息記錄。
后臺管理系統(tǒng)提供了一個管理人員查看現(xiàn)場環(huán)境參數(shù)的平臺。網(wǎng)頁前端采用HTML及JavaScript腳本語言編寫,任何一臺能上網(wǎng)的設(shè)備在瀏覽器輸入網(wǎng)址后即可查看現(xiàn)場環(huán)境的實(shí)時參數(shù)。本系統(tǒng)中,后臺管理系統(tǒng)有做一些專門的設(shè)計(jì),瀏覽器接收到環(huán)境參數(shù)后,將數(shù)據(jù)以圖表和曲線圖的方式顯示在網(wǎng)頁上,這種直觀的方式便于管理人員判斷現(xiàn)場環(huán)境的情況。
本系統(tǒng)ZigBee軟件的設(shè)計(jì)基礎(chǔ)是TI公司推出的與CC2530配套的ZigBee 2006協(xié)議棧(Z-Stack)以及IAR集成開發(fā)環(huán)境。Z-Stack協(xié)議棧運(yùn)行在一個基于任務(wù)調(diào)度機(jī)制的OSAL操作系統(tǒng)上,OSAL通過觸發(fā)任務(wù)的事件來實(shí)現(xiàn)任務(wù)調(diào)度,OSAL中的任務(wù)可通過任務(wù)API函數(shù)將其添加到系統(tǒng)中,實(shí)現(xiàn)多任務(wù)機(jī)制[1-2]。
圖2 路由器軟件流程圖
該部分軟件處理的過程是:ZigBee節(jié)點(diǎn)每40s采集一次傳感器數(shù)據(jù),校驗(yàn)后將數(shù)據(jù)發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器接收到數(shù)據(jù)后,先進(jìn)行校驗(yàn),然后把節(jié)點(diǎn)的編號打包到數(shù)據(jù)中,進(jìn)一步轉(zhuǎn)發(fā)至openWrt路由器。
本系統(tǒng)OpenWrt軟件的流程圖如圖2所示,首先是系統(tǒng)初始化,包括Socket套接字的API初始化和讀取協(xié)調(diào)器數(shù)據(jù)緩存區(qū)的初始化,下面的工作主要分為兩個部分。
(1)監(jiān)聽協(xié)調(diào)器數(shù)據(jù)。當(dāng)收到協(xié)調(diào)器數(shù)據(jù)后,路由器首先對數(shù)據(jù)格式進(jìn)行檢查,在數(shù)據(jù)格式正確的情況下,拆分?jǐn)?shù)據(jù)以獲取環(huán)境參數(shù),然后對環(huán)境參數(shù)進(jìn)行CRC檢驗(yàn)。否則丟棄數(shù)據(jù),在數(shù)據(jù)校驗(yàn)正確的情況下,則繼續(xù)本部分打包,在環(huán)境參數(shù)的原始數(shù)據(jù)上添加節(jié)點(diǎn)信息,以便于異常檢測中正確標(biāo)定節(jié)點(diǎn)信息,否則丟棄原始數(shù)據(jù)并重新繼續(xù)等待協(xié)調(diào)器上報(bào)的現(xiàn)場環(huán)境數(shù)據(jù)參數(shù)。
(2)發(fā)送數(shù)據(jù)到服務(wù)器。在上一步完成數(shù)據(jù)打包后,路由器創(chuàng)建Socket套接字,Socket套接字將數(shù)據(jù)寫出到后臺服務(wù)器,為了保證發(fā)送到服務(wù)器的數(shù)據(jù)的可靠性和正確性,設(shè)計(jì)了”三次機(jī)制”,如果數(shù)據(jù)發(fā)送失敗,則重復(fù)發(fā)送,如果三次數(shù)據(jù)依然發(fā)送失敗,則重新等待打包好的數(shù)據(jù),并報(bào)告異常。
服務(wù)器端劃分為兩個部分,異常檢測進(jìn)程和通信進(jìn)程。
(1)通信進(jìn)程。包括有兩個部分功能,網(wǎng)絡(luò)通信和數(shù)據(jù)本地保存。如圖3所示。
圖3 服務(wù)器端軟件流程圖
①網(wǎng)絡(luò)通信。初始化后,調(diào)用PHP Socket API綁定、監(jiān)聽客戶端連接,并獲取客戶端數(shù)據(jù),獲取到數(shù)據(jù)后,本部分也進(jìn)行數(shù)據(jù)拆分和校驗(yàn)檢查,剝離原始的現(xiàn)場環(huán)境數(shù)據(jù)參數(shù),采用CRC校驗(yàn)數(shù)據(jù),在數(shù)據(jù)正確的情況下,通知本地保存剝離的環(huán)境參數(shù)數(shù)據(jù),否則,丟棄數(shù)據(jù)并報(bào)告錯誤。
②數(shù)據(jù)本地保存。接收到網(wǎng)絡(luò)通信模塊的保存數(shù)據(jù)通知后,本部分操作PHP MySQL API,分兩種情況,一、數(shù)據(jù)庫存在:直接打開表,將數(shù)據(jù)保存到相應(yīng)的數(shù)據(jù)表中。二、數(shù)據(jù)庫不存在:則創(chuàng)建數(shù)據(jù)庫,打開數(shù)據(jù)表,將數(shù)據(jù)保存到相應(yīng)的數(shù)據(jù)表中。
(2)異常檢測進(jìn)程
本系統(tǒng)傳感器每隔40s(?T)進(jìn)行一次采樣,按照如下公式[11]進(jìn)行判定:
Rt h(t)表示閾值的取值,Expn(t)表示正常的傳感器在正常區(qū)域讀數(shù)的期望值,一般穩(wěn)定環(huán)境可認(rèn)為起始一個常數(shù);Expn(t)表示正常的傳感器在異常區(qū)域讀數(shù)的期望函數(shù),t為傳感器采樣時刻。本系統(tǒng)在式(1)的基礎(chǔ)上增加了一個判定,即如果采集的數(shù)據(jù)長時間與Expn差值為0,則可認(rèn)為數(shù)據(jù)發(fā)生重復(fù)異常。否則,繼續(xù)按照數(shù)據(jù)異常判定。
Web前端如圖4所示,管理人員登錄之后,即可通過地圖查看工地現(xiàn)場位置信息及架設(shè)的監(jiān)測點(diǎn)位置信息,圖中紅、綠色的圖標(biāo)均是監(jiān)測點(diǎn),點(diǎn)擊檢測點(diǎn)圖標(biāo),即可實(shí)時查看監(jiān)測點(diǎn)的環(huán)境參數(shù)數(shù)據(jù)及異常情況,如圖4,5所示,從網(wǎng)頁中可以看出1號節(jié)點(diǎn)出現(xiàn)數(shù)據(jù)重復(fù)異常。
為了驗(yàn)證該系統(tǒng)的可行性和實(shí)用性,選取了泉州市在建的文化中心工程作為本系統(tǒng)試驗(yàn)工地,從網(wǎng)頁中可以看出共部署有5個點(diǎn),其中1和2部署在文化中心,3-6是為項(xiàng)目預(yù)留的節(jié)點(diǎn),7和8部署在另一個工程,本部分不予展示。試驗(yàn)時間從8月開始,目前還在運(yùn)行中。這里展示部分?jǐn)?shù)據(jù)情況。如圖6所示,顯示的是1月7日至17的PM2.5參數(shù)信息。圖7顯示的是1月7日至17日的溫度參數(shù)信息。
從試驗(yàn)結(jié)果可以看出,系統(tǒng)運(yùn)行基本穩(wěn)定,并且異常檢測的目標(biāo)也基本達(dá)成,同時通過后臺和現(xiàn)場數(shù)據(jù)的對比,溫度、PM2.5數(shù)據(jù)誤差均在誤差允許范圍內(nèi)。
本系統(tǒng)由ZigBee無線網(wǎng)絡(luò),嵌入式網(wǎng)關(guān)、后臺管理系統(tǒng)和服務(wù)器四部分共同完成了現(xiàn)場環(huán)境數(shù)據(jù)的采集和異常檢測。采用了4G實(shí)現(xiàn)數(shù)據(jù)上傳,這種方式速率更高,結(jié)合ZigBee無線技術(shù)的低功耗、低成本、組網(wǎng)簡單靈活、穩(wěn)定等特點(diǎn),使得系統(tǒng)具有更好的應(yīng)用價(jià)值,并且服務(wù)器后臺添加了數(shù)據(jù)異常檢測,從而可以對異常數(shù)據(jù)節(jié)點(diǎn)做出及時的處理,同時提供了后臺管理界面,使得管理人員可以更加方便地查看節(jié)點(diǎn)數(shù)據(jù)及狀態(tài)。
圖4 Web前端管理界面
圖5 異常數(shù)據(jù)顯示信息
圖6 PM2.5實(shí)時圖
圖7 溫度實(shí)時圖
在實(shí)際應(yīng)用中,本系統(tǒng)也存在一些瑕疵,如異常檢測偶爾出現(xiàn)誤報(bào),異常檢測速度較慢。在今后的研究中,將往異常檢測誤報(bào)及速度的發(fā)展,例如提高計(jì)算機(jī)硬件性能,采用大數(shù)據(jù)方式進(jìn)行異常數(shù)據(jù)檢測,提高速度,改進(jìn)檢測算法以降低數(shù)據(jù)的誤報(bào)率。
[1]王瑋,樊則賓.基于CC2430的無線溫度檢測終端的設(shè)計(jì)[J].電子工程師,2007,33(8):78-80.
[2]程越巍,羅建,戴善溪,等.基于ZigBee網(wǎng)絡(luò)的分布式無線溫濕度測量系統(tǒng)[J].電子測量技術(shù),2009,32(12):144-146.
[3]甘玫玉.基于大數(shù)據(jù)的環(huán)境監(jiān)測與治理研究[D].廣西大學(xué),2017.
[4]盛平,郭洋洋,李萍萍.基于ZigBee和3G技術(shù)的設(shè)施農(nóng)業(yè)智能測控系統(tǒng)[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2012,43(12):229-233.
[5]王驥,林杰華,謝仕義.基于無線傳感網(wǎng)絡(luò)的環(huán)境監(jiān)測系統(tǒng)[J].傳感技術(shù)學(xué)報(bào),2015,24(11):1732-1740.
[6]周嶺松,余春暄.基于ZigBee技術(shù)的溫、濕度控制系統(tǒng)[J].電子測量技術(shù),2011,34(6):47-50.
[7]馮軍,寧志剛,陽璞瓊.基于ZigBee的無線抄表系統(tǒng)設(shè)計(jì)[J].電力自動化設(shè)備,2010,30(8):108-111.
[8]姜鈞嚴(yán),郭艷玲,楊冬霞,等.基于ZigBee技術(shù)的溫室溫濕度檢測系統(tǒng)[J].森林工程,2014,30(2):105-108.
[9]王鑫,潘賀,楊簡.基于CC2530的ZigBee無線溫濕度監(jiān)測系統(tǒng)設(shè)計(jì)[J].中國農(nóng)機(jī)化學(xué)報(bào),2014,35(3):217-220.
[10]毛嘉莉,金澈清,章志剛,等.軌跡大數(shù)據(jù)異常檢測:研究進(jìn)展及系統(tǒng)框架[J].軟件學(xué)報(bào),2017,28(1):17-34.
[11]曹冬磊,曹建農(nóng),金蓓弘.一種無線傳感器網(wǎng)絡(luò)中事件區(qū)域檢測的容錯算法[J].計(jì)算機(jī)學(xué)報(bào),2007,30(10):1770-1776.