蔣天發(fā),文瑩瑩,楊 紅, 錢 凱,李珊珊,牟群剛
(中南民族大學(xué) 計算機科學(xué)學(xué)院,武漢 430074)
家居安防歷來就是人們家庭生活不可缺少的一部分,但在當(dāng)今隨著科學(xué)技術(shù)的發(fā)展,不安全因素顯著增加,新的家居安防系統(tǒng)方案的研究迫在眉睫.傳統(tǒng)的家居安防系統(tǒng)由于性價比低、安裝復(fù)雜等原因一直無法打開市場大門.物聯(lián)網(wǎng)(the Internet of things,IoT)[1]和智能技術(shù)的出現(xiàn)以及無線網(wǎng)絡(luò)技術(shù)的發(fā)展為智能家居自動安防監(jiān)控系統(tǒng)提供了很大的支撐[2],使得具有大范圍覆蓋、可遠(yuǎn)程控制、可靠性高和可實時操作等優(yōu)點的安防監(jiān)控系統(tǒng)軟件的實現(xiàn)成為可能[3].本文設(shè)計了一種基于物聯(lián)網(wǎng)智能家居安防監(jiān)控的系統(tǒng).該方案利用高魯棒性、低功耗、低成本的無線傳感網(wǎng)絡(luò)構(gòu)建的安防監(jiān)控網(wǎng)絡(luò)系統(tǒng).無論是在性能、價格、還是在可操作性方面都有著極大的優(yōu)勢[4].由于采用的是無線網(wǎng)絡(luò)技術(shù),系統(tǒng)無需重新硬件布線,使其可擴展性變得更加靈活[5].該系統(tǒng)還采用全球移動通訊系統(tǒng)(GSM)通信網(wǎng)絡(luò)跟因特網(wǎng)Internet進一步擴展家庭安防體系的覆蓋范圍,只要在網(wǎng)絡(luò)覆蓋范圍內(nèi),主人就能夠?qū)崿F(xiàn)對家內(nèi)情況監(jiān)控,從而使家居環(huán)境更為安全[6].
該系統(tǒng)的軟件設(shè)計主要包括主控中心的軟件設(shè)計、基于PC的服務(wù)端軟件設(shè)計和基于ZigBee的客戶端設(shè)計等[7,8].其中主控中心的軟件主要完成短消息的收發(fā)、與全新無線網(wǎng)絡(luò)數(shù)據(jù)通信(ZigBee)[9]模塊的數(shù)據(jù)通信和基于PC的服務(wù)器的數(shù)據(jù)傳輸;服務(wù)器端的程序主要通過無線或有線網(wǎng)絡(luò)接收來自主控中心的視頻和所有設(shè)備的狀態(tài)信息數(shù)據(jù),并將信息保存在日志文件中;ZigBee節(jié)點程序主要接收來自主控中心的控制信息,接收傳感器的采集數(shù)據(jù)和報警信息并將數(shù)據(jù)上傳到主控中心[3,10].系統(tǒng)的軟件功能如圖1所示.
家居安防監(jiān)控系統(tǒng)的主控中心首先對系統(tǒng)進行初始化處理,其次檢測硬件模塊是否連接好,包括ZigBee射頻模塊的配置[7],主控芯片I/O口的設(shè)置,GSM模塊初始化等.初始化完成后進入主程序執(zhí)行,等待中斷時間發(fā)生,具體流程圖如圖2所示.
圖1 系統(tǒng)軟件功能架構(gòu)圖 Fig.1 The architecture diagram of system software functions
圖2 主控中心軟件流程圖Fig.2 The software flow chart of main control center
系統(tǒng)流程如圖3所示,系統(tǒng)設(shè)計的硬件連接完成后,先進行各模塊和串口的初始化,然后在設(shè)計的上位機軟件上查看有無接收到特定字符串.若有,即為接收到報警信號,要及時采取相應(yīng)的處理措施;若沒有,用戶可以做相應(yīng)的操作,服務(wù)器也會發(fā)送相應(yīng)的數(shù)據(jù)串給中央控制器,控制器會發(fā)送相應(yīng)的控制信號給各模塊從而實現(xiàn)對各模塊的控制,同時各模塊做出相應(yīng)動作后也會反饋信息給控制器,再由控制器反饋特定字符串給服務(wù)器,這樣就實現(xiàn)了對各家居模塊的遠(yuǎn)程操作[3,11].
圖3 系統(tǒng)流程圖Fig.3 The system flow chart
在該系統(tǒng)報警數(shù)據(jù)格式設(shè)計中,為了確保在無線網(wǎng)絡(luò)中能安全、便捷地傳輸數(shù)據(jù),需要對傳輸?shù)臄?shù)據(jù)格式進行統(tǒng)一的設(shè)計.該系統(tǒng)對傳送參數(shù)的數(shù)據(jù)格式做了一個統(tǒng)一的規(guī)定.該系統(tǒng)中普通節(jié)點主要包括:指紋傳感節(jié)點,溫度傳感節(jié)點,煙霧傳感節(jié)點,煤氣傳感節(jié)點.其中,指紋傳感器返回0或者1,分別表示是否有非法入侵發(fā)生[12].而溫度傳感器,煙霧傳感器和煤氣傳感器向主控節(jié)點發(fā)送的數(shù)據(jù)是采集到的具體數(shù)據(jù).主控節(jié)點接受這些數(shù)據(jù),需要知道具體是哪個終端節(jié)點的報警信號,因此該系統(tǒng)設(shè)置了一個源地址,同時設(shè)置一個參數(shù)類型來判斷傳送的數(shù)據(jù)類型[13]:具體的數(shù)據(jù)值(溫度、煙霧濃度、煤氣濃度),0或1(是否有非法入侵),圖片數(shù)據(jù).參數(shù)數(shù)據(jù)格式如下所示.
#$#參數(shù)設(shè)置標(biāo)志模塊參數(shù)編號參數(shù)數(shù)據(jù)#$$
無線網(wǎng)絡(luò)數(shù)據(jù)傳輸時,需要設(shè)立起始標(biāo)志和結(jié)束標(biāo)志位來觸發(fā)接收的開始和結(jié)束.該系統(tǒng)在參數(shù)數(shù)據(jù)包開始部分設(shè)立#$#來表示參數(shù)數(shù)據(jù)的開始,設(shè)立#$$表示參數(shù)數(shù)據(jù)的結(jié)束.起始標(biāo)志#$#和結(jié)束標(biāo)志#$$區(qū)別于常用數(shù)據(jù),避免干擾數(shù)據(jù)所造成的錯誤處理.模塊參數(shù)可以從0到255,表示256個終端模塊.參數(shù)數(shù)據(jù)是一個9個字節(jié)的的數(shù)據(jù),主要包括9個參數(shù),其內(nèi)容如下所示.
123456789指紋傳感器圖片數(shù)據(jù)煙霧傳感器煙霧報警值溫度傳感器溫度報警值煤氣傳感器煤氣報警值呼叫
其中,若1,3,5,7,9參數(shù)設(shè)置標(biāo)志置為1,表示該中斷模塊已開啟,具有該功能,置為0,表示沒有這種功能.物主也可以根據(jù)個人需要,設(shè)置4,6,8項的參數(shù)報警閾值[3].
該系統(tǒng)是基于PC的服務(wù)器端,通過無線或有線網(wǎng)絡(luò)接收來自M3的圖片和傳感器采集的狀態(tài)信息數(shù)據(jù),從而將這些狀態(tài)信息存儲到日志文件中,服務(wù)端程序是基于Windows下C++Builder6.0環(huán)境下設(shè)計的.C++Builder的網(wǎng)絡(luò)組建庫中提供了許多關(guān)于網(wǎng)絡(luò)通信的組件,TServerSocket與TClientSocket就收錄了WinSock中相關(guān)API,因此,很容易地編寫網(wǎng)絡(luò)通信程序.使用組件開發(fā)WinSock程序時,最少要有一對Socket,一個客戶端,一個服務(wù)端.
編寫網(wǎng)絡(luò)程序主要依靠Socket套接字,Socket選用的是請求/應(yīng)答模式,也遵循數(shù)據(jù)分包傳送的根本規(guī)則.Socket將底層的細(xì)節(jié)差異屏蔽掉,實現(xiàn)不同計算機間的通訊[4].建立一個Socket要有4個基本要素:本地地址、本地應(yīng)用端口號、遠(yuǎn)方地址、遠(yuǎn)程應(yīng)用端口號.首先建立服務(wù)器端Socket,在事先約定的端口通過調(diào)用Open()函數(shù)開始監(jiān)聽;客戶機指定欲連接的服務(wù)器Socket地址和端口號,調(diào)用Open()函數(shù)或者將Active屬性設(shè)置為true,客戶端Socket就會向服務(wù)器端Socket申請連接服務(wù);如果服務(wù)器套接字處于偵聽狀態(tài),它將自動接受申請并創(chuàng)建通信[10].
服務(wù)端主要接收所有傳感器和攝像頭的采集數(shù)據(jù),在上文中描述接收的數(shù)據(jù)用信息頭加以區(qū)分[7].這里規(guī)定,狀態(tài)信息數(shù)據(jù)頭以“Status”開頭,視頻數(shù)據(jù)頭以“#Video#”開頭.服務(wù)器工作流程如圖4所示.
圖4 服務(wù)器工作流程Fig.4 The flow chart of server working
服務(wù)器接收的數(shù)據(jù)有兩種,狀態(tài)信息數(shù)據(jù)內(nèi)容較小,在接收的過程中不存在因為網(wǎng)絡(luò)堵塞而丟包的現(xiàn)象;但對視頻數(shù)據(jù)而言,因為視頻數(shù)據(jù)過大,在網(wǎng)絡(luò)擁塞時會丟包導(dǎo)致視頻無法恢復(fù),因此在視頻數(shù)據(jù)接收過程中,采用分塊接收的方法,把要傳輸?shù)囊曨l數(shù)據(jù)分成n個小的數(shù)據(jù)塊,每個數(shù)據(jù)塊的傳輸都采用握手的方式,當(dāng)一個數(shù)據(jù)塊在服務(wù)器端傳輸完畢后會向客戶端發(fā)送一個握手信號,客戶端緊接著傳送下一個要傳輸?shù)臄?shù)據(jù)塊,一幀數(shù)據(jù)運送結(jié)束,便把視頻圖像整合[14].具體流程如圖5所示.
視頻數(shù)據(jù)接收主要代碼如下:
datain -> tempSize -> tempTimes ->tempSend;//讀取當(dāng)前塊大小、總塊數(shù)、當(dāng)前塊數(shù)
datain.readRawBytes(tempData, Buf_Size);//讀取目前視頻數(shù)據(jù)
if ((tempSend ==1) || (getSize == tempSize && tempSend == (getSend + 1)))
{
getSend = tempSend;//更新已接收到的塊數(shù)變量
getSize = tempSize;//更新已接收到的當(dāng)前塊大小變量
char *pDEST = dataStack[getSend];//接收當(dāng)前視頻數(shù)據(jù)
}
如上述代碼所示,每一個視頻數(shù)據(jù)都包括當(dāng)前塊大小、總塊數(shù)、當(dāng)前塊數(shù).數(shù)據(jù)中只有總塊數(shù)是固定的,當(dāng)前塊大小和當(dāng)前塊號都是可能隨時更新的數(shù)據(jù),其中,握手信號函數(shù)主要用來傳送握手信號和已收到的塊數(shù)[3].只有當(dāng)前塊數(shù)等于總塊數(shù)時,視頻數(shù)據(jù)才傳輸完整.
圖5 服務(wù)端接收數(shù)據(jù)流程圖Fig.5 The flow chart of server receive the data
客戶端程序主要包括數(shù)據(jù)通信、發(fā)送控制命令和視頻采集3個方面,其中數(shù)據(jù)通信包括與GSM模塊的RS232通信和與ZigBee、服務(wù)器端的無線網(wǎng)絡(luò)通信;視頻數(shù)據(jù)采集主要包括客戶端的視頻預(yù)覽和視頻數(shù)據(jù)傳輸;傳送控制信息主要是基于消息的內(nèi)容.
在硬件和軟件的設(shè)計工作完成以后,需要對家居安防監(jiān)控系統(tǒng)的功能進行測試,以驗證系統(tǒng)是否實現(xiàn)了設(shè)計中所提出的的基本功能.對通信質(zhì)量的測試采用點到點的通信方式,分為兩個部分:一是通信距離的測試,二是障礙物的傳輸測試.
通信距離主要測試協(xié)調(diào)器節(jié)點和一個終端節(jié)點之間的直線通訊長度.具體測試方法為:如果協(xié)調(diào)器節(jié)點A固定不動,終端節(jié)點B從節(jié)點A處開始逐步沿直線向遠(yuǎn)處移動,采用定時器使節(jié)點B每隔3 s向協(xié)調(diào)器節(jié)點A發(fā)送一個test消息,并通過串口顯示出來,直到不再接收到test消息.
由于本系統(tǒng)是要應(yīng)用在普通家居環(huán)境中的,有必要對ZigBee節(jié)點在有障礙物傳輸時進行質(zhì)量測試,采取的具體方法是:ZigBee協(xié)調(diào)器節(jié)點放在實驗室里,將普通節(jié)點放在另一室內(nèi),協(xié)調(diào)器節(jié)點通過串口將普通節(jié)點發(fā)送來的消息顯示在PC機上,普通節(jié)點通過定時器定時向協(xié)調(diào)器節(jié)點發(fā)送test消息,同樣按無障礙測試時計算,測試結(jié)果如表1所示.
表1 有障礙物通信質(zhì)量測試表
由測試結(jié)果可知墻壁會對數(shù)據(jù)的傳輸造成一定的影響,但是當(dāng)節(jié)點間的距離小于10 m的時候,一般不會發(fā)生丟包的現(xiàn)象,在20m的時候,丟包率也很低,考慮普通的家居室內(nèi)環(huán)境一般是3室一廳或者4室一廳的結(jié)構(gòu),面積一般在100~140 m2左右,若把協(xié)調(diào)器節(jié)點安放在室內(nèi)的中心位置,其他節(jié)點安放在各個角落,它們的直線距離一般都在12m左右,能夠滿足家居安防監(jiān)控系統(tǒng)數(shù)據(jù)傳輸可靠性的要求.
在門禁檢測模塊測試是將實驗室模擬家庭住宅,將具有指紋識別功能的ZigBee節(jié)點設(shè)備放置在實驗室門、窗等位置.陌生人開啟房間門,測試ZigBee節(jié)點是否報警聲,綁定手機是否收到內(nèi)容為“有人強闖”的短信.在火災(zāi)檢測模塊測試時,火災(zāi)檢測模塊由溫度傳感器和煙霧傳感器共同組成,普通環(huán)境下對這個模塊的測試工作很難進行,因此這里人為給定一個容易觸發(fā)的閾值,看兩個模塊能否做出正確的報警處理.
本文介紹了基于物聯(lián)網(wǎng)智能家居安防監(jiān)控系統(tǒng)軟件開發(fā)方案.該系統(tǒng)采用模塊化的設(shè)計思想對智能家居安防監(jiān)控系統(tǒng)的軟件進行總體設(shè)計,分別從主控中心、服務(wù)端、客戶端等得以將該系統(tǒng)的各個功能予以實現(xiàn).并對系統(tǒng)功能進行了測試,測試結(jié)果表明該系統(tǒng)軟件能夠滿足普通家居環(huán)境的安防監(jiān)控要求.
參 考 文 獻
[1] 胡永利,孫艷豐,尹寶才.物聯(lián)網(wǎng)信息感知與交互技術(shù)[J].計算機學(xué)報,2012,35(6):1147-1163.
[2] Walewski J W. Initial architectural reference model for IoT.EU FP7 Project Deliverable Report: D1.2,2011.
[3] 蔣天發(fā),李珊珊.基于TD-SCDMA的實時智能家居安防系統(tǒng)的設(shè)計[J].中南民族大學(xué)學(xué)報:自然科學(xué)版,2012,31(4):108-112.
[4] Peter A.Lieberzeit,Franz L.Dichert.Sensor Technology and its Application in Environmental Analysis[J]. Analytical and Bioanalytical Chemistry,2007,387(1):237-247.
[5] 張永剛.我國智能家居現(xiàn)狀與問題[J].智能建筑與城市信息,2012,3(13):19-20.
[6] 熊 雄,陳建勇.基于GSM短消息的測試數(shù)據(jù)遠(yuǎn)程傳輸技術(shù)研究[J].國外電子測量技術(shù),2010,29(10):34-38.
[7] Sarma S.E,Weis S.A,Engels D.W.Radiofrequency identification:Secure risks and challenges[J].RSA Laboratories Cryptobytes,2003,6 (1):2-9.
[8] 帖 軍,王小榮,蔣天發(fā).移動實時環(huán)境下一種改進的廣播調(diào)度算法[J].計算機科學(xué),2012,39(5):147-150.
[9] 廖秋香.基于zigBee技術(shù)的智能家居安防系統(tǒng)設(shè)計研究[J].科技信息,2012(8):120-126.
[10] 王 鑫,蔣 巍,蔣天發(fā).基于CACTI與飛信的網(wǎng)絡(luò)實時報警平臺[J].武漢理工大學(xué)學(xué)報,2011,33(12): 131-134.
[11] George Aggelou.Wireless Mesh Networking with 802.16.802.11 and ZigBee[M].NewYork:Me Graw Hill, 2009.
[12] 劉 艮,蔣天發(fā).同態(tài)加密技術(shù)及其在物聯(lián)網(wǎng)中的應(yīng)用研究[J].信息網(wǎng)絡(luò)安全,2011,(05):61-64.
[13] Nick Hunn.Essentials of Short-Range Wireless[M].London:Cambridge University Press,2010:35-38.
[14] 王 鑫,蔣天發(fā).基于GRAILS的網(wǎng)絡(luò)運維管理系統(tǒng)的設(shè)計[J].武漢大學(xué)學(xué)報:工學(xué)版,2010,43(6):681-684.