龐中強(qiáng)鄭州大學(xué)信息工程學(xué)院
?
面向智能家居的數(shù)據(jù)庫(kù)中間件軟件設(shè)計(jì)
龐中強(qiáng)
鄭州大學(xué)信息工程學(xué)院
文章旨在將不同無(wú)線網(wǎng)絡(luò)、不同通信格式的設(shè)備結(jié)合起來(lái),從而構(gòu)建一個(gè)面向智能家居的異構(gòu)網(wǎng)絡(luò)控制系統(tǒng)。針對(duì)不同協(xié)議、不同廠家的無(wú)線設(shè)備難以互通互聯(lián)、統(tǒng)一控制的問(wèn)題,本文提出了一種基于Web的中間件軟件架構(gòu)。該中間件進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換的同時(shí)還能結(jié)合Web界面控制設(shè)備呈現(xiàn)給用戶。上層控制端通過(guò)對(duì)數(shù)據(jù)庫(kù)的操作來(lái)實(shí)現(xiàn)對(duì)不同通信網(wǎng)絡(luò)智能家居設(shè)備的控制和聯(lián)動(dòng)。異構(gòu)無(wú)線網(wǎng)絡(luò)-ARM網(wǎng)關(guān)-數(shù)據(jù)庫(kù)中間件-控制端的架構(gòu)能夠使用戶在避免接觸底層硬件系統(tǒng)和軟件編程的情況下,快速組網(wǎng)靈活控制智能家居設(shè)備,增強(qiáng)了智能家居的系統(tǒng)的易用性。
中間件 數(shù)據(jù)庫(kù) 無(wú)線傳感器網(wǎng)絡(luò) 網(wǎng)關(guān)
隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,對(duì)家居的智能控制成為時(shí)下人們對(duì)生活質(zhì)量提高的一種新的需求。智能家居控制系統(tǒng)是將整個(gè)家庭中的家居設(shè)備有機(jī)的整合到一起,并對(duì)這些設(shè)備進(jìn)行有效的控制,形成功能完善的系統(tǒng)?,F(xiàn)階段智能家居系統(tǒng)尚處在起步階段,市場(chǎng)上沒(méi)有一種統(tǒng)一的智能家居控制系統(tǒng)。由于不同廠家的設(shè)備種類眾多,通信協(xié)議不同,并有各種不同的通信數(shù)據(jù)格式,難以實(shí)現(xiàn)對(duì)設(shè)備的統(tǒng)一控制。因此,現(xiàn)階段的智能家居控制系統(tǒng)兼容性差、用戶使用不便。針對(duì)上述問(wèn)題本文設(shè)計(jì)了一種面向智能家居的數(shù)據(jù)庫(kù)中間件。結(jié)合Web界面構(gòu)成的智能家居控制系統(tǒng)可以使通信協(xié)議不同、數(shù)據(jù)格式不同的各種智能家居設(shè)備連接在一起,實(shí)現(xiàn)遠(yuǎn)程的智能監(jiān)控。整個(gè)智能家居控制系統(tǒng)分為網(wǎng)關(guān)、數(shù)據(jù)庫(kù)中間 件和Web控制界面,本文將重點(diǎn)介紹第二部分。
網(wǎng)關(guān)可以與三種不同協(xié)議的智能家居設(shè)備進(jìn)行通信;數(shù)據(jù)上行:網(wǎng)關(guān)把設(shè)備通過(guò)Zigbee、 Bluetooth、RS232上傳的數(shù)據(jù)加上設(shè)備編號(hào),再通過(guò)WiFi上傳給服務(wù)器;數(shù)據(jù)下行:網(wǎng)關(guān)把上層控制界面通過(guò)WiFi下達(dá)的指令按編號(hào)發(fā)給相應(yīng)的設(shè)備(以 該設(shè)備的通信方式)。系統(tǒng)結(jié)構(gòu)可分為四個(gè)部分:(1)Zigbee控制模塊及拓?fù)浣Y(jié)構(gòu)。(2)Bluetooth控制模塊及拓?fù)浣Y(jié)構(gòu)。 (3)WiFi控制模塊。(4)基于ARM的異構(gòu)網(wǎng)絡(luò)嵌入式網(wǎng)關(guān)。
數(shù)據(jù)庫(kù)中間件是上層控制界面(組態(tài)軟件或者web界面)與下層智能家居設(shè)備(節(jié)點(diǎn)與網(wǎng)關(guān)所組成的網(wǎng)絡(luò))之間相互通信、交換數(shù)據(jù)的橋梁。其旨在為各種不同的上層界面和下層設(shè)備提供一個(gè)通用的驅(qū)動(dòng)程序。網(wǎng)關(guān)和數(shù)據(jù)庫(kù)中間件能夠使來(lái)自于不同生產(chǎn)廠家、通信方式不同的多個(gè)設(shè)備節(jié)點(diǎn)都能連接到本課題設(shè)計(jì)的系統(tǒng)上,并進(jìn)行統(tǒng)一監(jiān)控。用戶可以通過(guò)web頁(yè)面監(jiān)視設(shè)備的狀態(tài),也可以通過(guò)改變數(shù)據(jù)庫(kù)中的數(shù)據(jù)來(lái)實(shí)現(xiàn)對(duì)節(jié)點(diǎn)的控制。
數(shù)據(jù)庫(kù)中間件主要任務(wù)包括:將網(wǎng)關(guān)上傳的各節(jié)點(diǎn)采集到的狀態(tài)數(shù)據(jù)按編號(hào)存入數(shù)據(jù)庫(kù);把用戶發(fā)送的目標(biāo)狀態(tài)存入數(shù)據(jù)庫(kù),通過(guò)對(duì)比當(dāng)前狀態(tài)與目標(biāo)狀態(tài)查詢相應(yīng)的控制指令;把指令加上節(jié)點(diǎn)編號(hào)發(fā)送給網(wǎng)關(guān),由網(wǎng)關(guān)按編號(hào)發(fā)給相應(yīng)的設(shè)備,從而完成用戶對(duì)節(jié)點(diǎn)的控制。
2.1通信模塊
通信模塊主要包含兩個(gè)功能:接收網(wǎng)關(guān)上傳的各設(shè)備節(jié)點(diǎn)數(shù)據(jù),存入數(shù)據(jù)庫(kù);把數(shù)據(jù)庫(kù)中的指令取出并發(fā)送給網(wǎng)關(guān)。包含TCP以及UDP兩種通信協(xié)議,主要任務(wù):接收網(wǎng)關(guān)發(fā)送的數(shù)據(jù)存入數(shù)據(jù)庫(kù); 合成指令發(fā)送給網(wǎng)關(guān)。
上傳數(shù)據(jù):網(wǎng)關(guān)將設(shè)備節(jié)點(diǎn)采集的信息加上分配的編號(hào),通過(guò)WiFi發(fā)送給服務(wù)器,PC上的通信模 塊與網(wǎng)關(guān)建立socket通信,通信模塊接收到數(shù)據(jù)以后 將數(shù)據(jù)存入數(shù)據(jù)庫(kù)中。
下達(dá)指令:通信模塊從指令表中查詢指令,按數(shù)據(jù)格式表中的格式合并,然后加上網(wǎng)關(guān)預(yù)先分配的設(shè)備節(jié)點(diǎn)編號(hào)發(fā)送給網(wǎng)關(guān),再由網(wǎng)關(guān)指令下達(dá)給相應(yīng)的節(jié)點(diǎn)。
2.2數(shù)據(jù)庫(kù)
本課題采用在windows環(huán)境下運(yùn)行的Mysql數(shù)據(jù)庫(kù)。Mysql是一款自由軟件,由瑞士的Mysql Lab公司開(kāi)發(fā),是一款真正快速、多用戶、多線程的SQL 數(shù)據(jù)庫(kù)服務(wù)器。相對(duì)于Oracle等其他數(shù)據(jù)庫(kù)來(lái)說(shuō),Mysql的使用非常簡(jiǎn)單,整個(gè)數(shù)據(jù)庫(kù)小巧、簡(jiǎn)單、快速,符合智能家居系統(tǒng)數(shù)據(jù)量小、結(jié)構(gòu)簡(jiǎn)單、要求快速和實(shí)時(shí)性以及對(duì)設(shè)備配置需求低的特點(diǎn)。整個(gè)數(shù)據(jù)庫(kù)共包含9個(gè)表:目標(biāo)狀態(tài)表、目標(biāo)表、發(fā)送指令表、接收數(shù)據(jù)表、數(shù)據(jù)格式表、設(shè)備信息表、接收信號(hào)表、閾值表和邏輯表。
目標(biāo)狀態(tài)表是用來(lái)儲(chǔ)存各個(gè)設(shè)備節(jié)點(diǎn)的當(dāng)前狀態(tài)信息和上層界面發(fā)送的目標(biāo)指令,存儲(chǔ)的數(shù)據(jù)類型包括布爾值、浮點(diǎn)數(shù);設(shè)備編號(hào)列由網(wǎng)關(guān)進(jìn)行分配;對(duì)于控制設(shè)備(可以進(jìn)行操控的設(shè)備)狀態(tài)列存儲(chǔ)每個(gè)節(jié)點(diǎn)的當(dāng)前狀態(tài)如:燈的亮滅、窗簾的開(kāi)關(guān)等,目標(biāo)列存儲(chǔ)節(jié)點(diǎn)的目標(biāo)狀態(tài),即將要達(dá)到的狀 態(tài);對(duì)于監(jiān)視設(shè)備(只負(fù)責(zé)采集數(shù)據(jù)的設(shè)備)狀態(tài)列存儲(chǔ)變化前的設(shè)備初狀態(tài)如:座墊下壓力傳感器的壓力值,設(shè)置閾值做判斷的將判斷后的結(jié)果(布爾 值)存儲(chǔ)在本列,目標(biāo)列存儲(chǔ)變化后設(shè)備的末狀態(tài)。
設(shè)備信息表用來(lái)存儲(chǔ)控制設(shè)備由當(dāng)前狀態(tài)轉(zhuǎn)變到目標(biāo)狀態(tài)需要下達(dá)的機(jī)器指令(節(jié)點(diǎn)收到的控制指令)。該表共有六列:當(dāng)前狀態(tài)列、目標(biāo)列、指令列、設(shè)備號(hào)列、序號(hào)列和設(shè)備名稱列。其中目標(biāo)列、狀態(tài)列和設(shè)備號(hào)列與目標(biāo)狀態(tài)表中對(duì)應(yīng)的列存儲(chǔ)的內(nèi)容相同。指令列存儲(chǔ)控制設(shè)備所需的指令,對(duì)應(yīng)該行的目標(biāo)和狀態(tài),指令的數(shù)據(jù)格式為字符串。設(shè)備名稱列存儲(chǔ)設(shè)備的中文名稱。
數(shù)據(jù)格式表用來(lái)存儲(chǔ)與每個(gè)節(jié)點(diǎn)通信的數(shù)據(jù)格式,網(wǎng)關(guān)上傳數(shù)據(jù)時(shí)查詢數(shù)據(jù)格式表,按該節(jié)點(diǎn)的數(shù)據(jù)格式拆分?jǐn)?shù)據(jù)存入狀態(tài)表,下達(dá)指令時(shí)也要先查詢數(shù)據(jù)格式表,按格式發(fā)送指令。網(wǎng)關(guān)上傳的數(shù)據(jù)存儲(chǔ)在接收數(shù)據(jù)表中,上層控制界面下達(dá)的指令存儲(chǔ)在發(fā)送指令表中。由觸發(fā)器生成指令,觸發(fā)事件:改變目標(biāo)表的數(shù)據(jù);執(zhí)行語(yǔ)句:生成指令,執(zhí)行預(yù)先設(shè)定了邏輯。邏輯表存儲(chǔ)預(yù)想設(shè)定的控制邏輯。
2.3控制流程
首先,上層界面把用戶發(fā)出的控制指令即目標(biāo)狀態(tài)存入目標(biāo)狀態(tài)表中,如打開(kāi)電燈則在目標(biāo)表中對(duì)應(yīng)的電燈節(jié)點(diǎn)一行存入1(代表電燈亮),并置反目 標(biāo)表中的布爾數(shù)。其次,目標(biāo)表發(fā)生更改時(shí)數(shù)據(jù)庫(kù)觸發(fā)器觸發(fā), 執(zhí)行如下操作:找出目標(biāo)狀態(tài)表中狀態(tài)列與目標(biāo)列不同的行,此行的數(shù)據(jù)與設(shè)備信息表中相應(yīng)節(jié)點(diǎn)的當(dāng)前狀態(tài)和目標(biāo)狀態(tài)比較,找出對(duì)應(yīng)的指令,將生成
的指令存入發(fā)送指令表;將指令發(fā)送給控制節(jié)點(diǎn),控制成功將返回新的狀態(tài)存入狀態(tài)表,控制失敗程序?qū)⒔?jīng)過(guò)設(shè)定延時(shí)后再次發(fā)送指令,發(fā)送設(shè)定次數(shù)后仍失敗將控制失敗信息返回給上層界面;
最后,進(jìn)行事件的邏輯判斷,在邏輯表中查詢當(dāng)前的事件是否屬于邏輯事件,如果是邏輯事件且邏輯未結(jié)束則跳回第二步繼續(xù)循環(huán),如果不是邏輯事件或者邏輯事件結(jié)束則跳出循環(huán)。
本課題使用Apache服務(wù)器,通過(guò)Thinkphp框架搭建Web控制頁(yè)面。通過(guò)網(wǎng)頁(yè)用戶可以:實(shí)時(shí)監(jiān)視設(shè)備狀態(tài)、手動(dòng)控制設(shè)備、以及設(shè)置邏輯控制實(shí)現(xiàn)設(shè)備聯(lián)動(dòng)。網(wǎng)頁(yè)主要分為三個(gè)頁(yè)面,分別為:監(jiān)控頁(yè)面、設(shè)備添加頁(yè)面和邏輯設(shè)置頁(yè)面。其中邏輯設(shè)置頁(yè)面可通過(guò)拖拽事件元素實(shí)現(xiàn)設(shè)置功能。這樣的設(shè)計(jì)保證了軟件的易用性,降低了對(duì)設(shè)備的依賴性。
本文簡(jiǎn)要分析了現(xiàn)階段智能家居控制系統(tǒng)的缺陷,在此基礎(chǔ)上提出了一種面向智能家居控制的數(shù)據(jù)庫(kù)中間件。該中間件改變了上層應(yīng)用程序的控制方式,把直接向節(jié)點(diǎn)發(fā)送指令轉(zhuǎn)變成對(duì)數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)進(jìn)行操作再由中間件合成指令控制節(jié)點(diǎn)的方式。解決了不同協(xié)議、不同廠家、不同數(shù)據(jù)格式的無(wú)線設(shè)備難以互通互聯(lián)、統(tǒng)一控制的問(wèn)題。對(duì)于網(wǎng)頁(yè)訪問(wèn)數(shù)據(jù)庫(kù)實(shí)現(xiàn)智能家居控制有很大的應(yīng)用優(yōu)勢(shì),基于此中間件的架構(gòu)使得網(wǎng)頁(yè)控制界面易于操作,只需在中間件的數(shù)據(jù)庫(kù)基礎(chǔ)上搭建服務(wù)器,在動(dòng)態(tài)網(wǎng)頁(yè)頁(yè)面上拖拽設(shè)備元素和事件元素設(shè)置控制邏輯,極大地簡(jiǎn)化了操作過(guò)程。綜上所述本課題研究的中間件在智能家居的開(kāi)發(fā)上具有一定的應(yīng)用價(jià)值。
[1]俞文俊,凌志浩.一種物聯(lián)網(wǎng)智能家居系統(tǒng)的研究[J].自動(dòng)化儀表,2011,08:56-59.
[2]沈玉龍,王琨.智能家居控制系統(tǒng)設(shè)計(jì)[J].電子科技,2004,05:47-50+54.
[3]劉俊杰.新型DCS組態(tài)軟件框架和數(shù)據(jù)庫(kù)的研究與開(kāi)發(fā)[D].山東大學(xué),2008.
[4]周歡,莫軍,李代生,梁文錚.基于LabSQL的LabVIEW數(shù)據(jù)庫(kù)訪問(wèn)功能研究[A].中國(guó)儀器儀表學(xué)會(huì).2009中國(guó)儀器儀表與測(cè)控技術(shù)大會(huì)論文集[C].中國(guó)儀器儀表學(xué)會(huì):,2009:4.
[5]李榮國(guó),王見(jiàn).MySQL數(shù)據(jù)庫(kù)在自動(dòng)測(cè)試系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2011,S2:169-171+175.
[6]趙建華,師振偉.嵌入式Web服務(wù)器在智能家居控制系統(tǒng)的實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013, 03:164-167.
[7]毛明毅,蔣元恒,陳志成.智能家居遠(yuǎn)程Web管理控制平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī), 2013,05:121- 124.
[8]侯維巖,許靜,費(fèi)敏銳,王海寬.工業(yè)現(xiàn)場(chǎng)總線與無(wú)線通信的集成模式.自動(dòng)化儀表.2003, 24(12):10-13.
[9]王成光.流程工業(yè)大型實(shí)時(shí)數(shù)據(jù)庫(kù)理論、技術(shù)與應(yīng)用[D].浙江大學(xué),2003.