譚英奇,邢志強(qiáng)
(北方工業(yè)大學(xué) 電子信息工程學(xué)院,北京 100144)
隨著物聯(lián)網(wǎng)和科學(xué)技術(shù)的快速發(fā)展,人們對(duì)于生活質(zhì)量的要求也與日俱增,智能家居是物聯(lián)網(wǎng)高速發(fā)展的直觀體現(xiàn)。人們已經(jīng)不再滿足于家居用品的分立化、單一化,而是更加關(guān)注居住環(huán)境中設(shè)備的智能化、高效化、節(jié)能化,舒適性與安全性[1]。物聯(lián)網(wǎng)帶動(dòng)了智能家庭網(wǎng)絡(luò)化、信息化、數(shù)字化發(fā)展。越來(lái)越多的智能化家居用品走進(jìn)人們的生活。但是,現(xiàn)有的很多智能產(chǎn)品,往往是在出廠前就已經(jīng)設(shè)計(jì)好了工作模式,用戶不能根據(jù)自己的個(gè)人需求進(jìn)行改變,通用性較低,無(wú)法滿足廣大用戶的需求。
因此,本文提出了智能家居功能可重構(gòu)系統(tǒng)設(shè)計(jì)方案,利用圖形化編程的可重構(gòu)特點(diǎn),結(jié)合人體舒適度理論[2],讓用戶自己打造個(gè)性化的智能家居工作方式,彌補(bǔ)了現(xiàn)有的智能家居任務(wù)單一的缺點(diǎn)。
本系統(tǒng)使用Microsoft Visual Studio為開(kāi)發(fā)工具,涵蓋了MySQL數(shù)據(jù)庫(kù)和編譯環(huán)境。系統(tǒng)操作簡(jiǎn)單,人機(jī)交互界面簡(jiǎn)潔易懂。
整套系統(tǒng)主要分為客戶端智能家居圖形化編程系統(tǒng)和服務(wù)器處理系統(tǒng)兩個(gè)部分。智能家居圖形化編程系統(tǒng)的主要功能是從模塊庫(kù)拖拽圖形模塊并按邏輯連接,在屬性框中輸入屬性參數(shù),從而生成類C語(yǔ)言文件,在服務(wù)器允許連接的狀態(tài)下與服務(wù)器進(jìn)行WiFi通信,并上傳類C語(yǔ)言文件。其中每個(gè)圖形模塊都代表了一個(gè)功能模塊,不同的功能模塊對(duì)應(yīng)不同的功能函數(shù)。服務(wù)器負(fù)責(zé)接收客戶端上傳的文件,并對(duì)其進(jìn)行保存和編譯,編譯后保存到本地,等待硬件控制盒下載。系統(tǒng)整體框架如圖1所示。
圖1 系統(tǒng)整體框架Fig.1 Overall framework of the system
圖2 智能家居圖形化編程系統(tǒng)界面Fig.2 Intelligent home graphical programming system interface
圖3 窗簾開(kāi)關(guān)舉例Fig.3 Curtain switch examples
智能家居圖形化編程軟件在含有Windows系統(tǒng)的平板電腦上運(yùn)行,主要功能是通過(guò)拖拽圖標(biāo),并按邏輯連接,實(shí)現(xiàn)一鍵生成代碼,最后通過(guò)WiFi向服務(wù)器傳遞文件。
智能家居圖形化編程系統(tǒng)界面如圖2所示,主要包括菜單欄、模塊庫(kù)、流程圖繪制區(qū)、代碼顯示窗口和通信窗口。界面分為3個(gè)部分,最左側(cè)是模塊庫(kù),包含流程控制模塊、執(zhí)行模塊、傳感器模塊、智能家居模塊4大類,每一個(gè)圖標(biāo)都代表了一個(gè)相應(yīng)的函數(shù);中央為流程圖繪制區(qū),從模塊庫(kù)選擇圖標(biāo),拖拽到中間的流程圖繪制區(qū),并按邏輯彼此相連,雙擊圖標(biāo),可以彈出屬性框,通過(guò)輸入或選擇兩種方式進(jìn)行參數(shù)設(shè)置,最右側(cè)為菜單欄,從上到下依次為退出、新建、打開(kāi)、保存、另存、刪除、對(duì)齊、生成代碼、通信、模塊和更新;退出、新建、打開(kāi)和保存是針對(duì)流程圖文件的操作;刪除和對(duì)齊是針對(duì)流程圖繪制區(qū)的圖標(biāo)進(jìn)行的操作;點(diǎn)擊生成代碼,會(huì)在流程圖繪制區(qū)中央彈出代碼窗口,將流程圖語(yǔ)言轉(zhuǎn)化為類C語(yǔ)言并顯示;點(diǎn)擊通信會(huì)彈出通信窗口,如圖3所示,顯示與服務(wù)器連接狀態(tài)和文件傳輸狀態(tài)。
針對(duì)智能家居,專門(mén)設(shè)計(jì)了智能家居模塊。智能家居模塊可用于調(diào)控智能家居產(chǎn)品,如窗簾開(kāi)關(guān)、門(mén)窗開(kāi)關(guān)、背景墻燈光開(kāi)關(guān)等。本文為每個(gè)智能家居模塊寫(xiě)一個(gè)專門(mén)的函數(shù),將函數(shù)屬性封裝在每個(gè)智能家居模塊中,用xml文件保存[3],如圖3所示,以窗簾開(kāi)關(guān)為例,窗簾開(kāi)關(guān)屬于模塊庫(kù)的“SmartHomeItem”(智能家居模塊)組,名稱是“窗簾開(kāi)關(guān)”,當(dāng)鼠標(biāo)懸停在圖標(biāo)上時(shí)顯示的說(shuō)明為“void Set_Curtain_Switch(int ID, int val); 設(shè)置窗簾開(kāi)關(guān)”,顯示圖標(biāo)為“CurSwitch.png”,對(duì)應(yīng)的函數(shù)代碼為“Set_Curtain_Switch(%Att0%, %Att1%);”,這表示窗簾開(kāi)關(guān)有兩個(gè)參數(shù),初始的屬性為“1,無(wú)”,分別代表了窗簾開(kāi)關(guān)的端口號(hào)為“1”和初始狀態(tài)“無(wú)”,狀態(tài)分為3種:暫停、開(kāi)、關(guān),在代碼顯示窗口分別由0、1、2表示。用戶可以雙擊窗簾開(kāi)關(guān)圖標(biāo)進(jìn)行端口號(hào)和3種狀態(tài)的選擇。
圖4 無(wú)線通信界面Fig.4 Wireless communication interface
圖5 服務(wù)器界面Fig.5 Server interface
在繪制流程圖完畢之后,按照代碼自動(dòng)生成機(jī)制,生成類C代碼之后,通過(guò)WIFI方式上傳給服務(wù)器端。
如圖4所示,在上傳界面ServerIP和ServerPort兩處分別填寫(xiě)服務(wù)器端的IP地址和端口號(hào),以便確定服務(wù)器。在targetIP處填入文件要保存的文件夾名稱,這里是以硬件控制盒的IP命名。在服務(wù)器允許連接的狀態(tài)下點(diǎn)擊連接按鈕,智能家居軟件與服務(wù)器建立連接,右側(cè)小窗口顯示“------連接成功------”。連接建立成功后,點(diǎn)擊上傳按鈕,生成的類C文件會(huì)上傳至服務(wù)器,并保存在命名為“192.168.2.100”文件夾中,方便之后編譯及下載;若沒(méi)有以“192.168.2.100”命名的文件夾,則新建一個(gè)。上傳完成后,右側(cè)窗口顯示控制盒IP,文件的最后一次修改時(shí)間和文件大小,并提示文件發(fā)送成功。
圖6 下載過(guò)程界面Fig.6 Download process interface
智能家居服務(wù)端界面如圖5所示,包括一個(gè)狀態(tài)顯示窗口和一個(gè)下載進(jìn)度顯示窗口。狀態(tài)顯示窗口左上角顯示本服務(wù)器的IP地址和端口號(hào),方便智能家居圖形化編程系統(tǒng)進(jìn)行連接。點(diǎn)擊開(kāi)始監(jiān)聽(tīng)按鈕,服務(wù)器即在允許連接狀態(tài)。開(kāi)始監(jiān)聽(tīng)按鈕的下方是ListOnLine窗口,負(fù)責(zé)顯示正處在連接狀態(tài)的所有客戶端名稱。右側(cè)是線程顯示,顯示已經(jīng)連接上的客戶端,客戶端的下載狀態(tài),以及完成下載并切斷連接的客戶端。
服務(wù)器接收到智能家居圖形化編程軟件上傳上來(lái)的類C文件后,需要對(duì)其進(jìn)行編譯,轉(zhuǎn)化為硬件控制盒可以識(shí)別的二進(jìn)制文件。在接收到sub.c(類C文件)文件后,服務(wù)器將其保存到192.168.2.100文件夾中。然后,復(fù)制bin/Debug/Robot文件夾下的文件,到192.168.2.100文件夾中。最后執(zhí)行編譯命令,生成硬件控制盒可識(shí)別的Robot.hex文件,并等待硬件控制盒下載。
當(dāng)從智能家居系統(tǒng)上傳到服務(wù)器的文件編譯完成后,可以下載到硬件控制盒。在下載過(guò)程中運(yùn)用分塊下載法,按照文件大小,將文件分割成數(shù)量不等的數(shù)據(jù)包,依次下載到硬件控制盒中。下載過(guò)程如圖6所示。
在下載的過(guò)程中以“ACK”為標(biāo)識(shí),代表該數(shù)據(jù)包下載成功;以“NAK”為標(biāo)識(shí),代表該數(shù)據(jù)包下載失敗。同時(shí),可以看到目前正在下載的數(shù)據(jù)包進(jìn)程。
在系統(tǒng)工作期間,會(huì)有多個(gè)客戶端同時(shí)連接服務(wù)器的情況。為此,選擇的是基于TCP/IP的socket通信方式。在監(jiān)聽(tīng)線程開(kāi)啟的條件下等待客戶端連接。每當(dāng)有客戶端連接上,便單獨(dú)開(kāi)一個(gè)線程,為其提供上傳或下載等工作。當(dāng)上傳或下載結(jié)束,即關(guān)閉此線程;當(dāng)多個(gè)客戶端連接服務(wù)器時(shí),每個(gè)客戶端都有自己的線程,彼此互不干擾,以此實(shí)現(xiàn)多任務(wù)工作。
本文開(kāi)發(fā)的智能家居功能可重構(gòu)系統(tǒng)研究,將圖形化編程、智能家居以及人體舒適度相結(jié)合。解決了現(xiàn)存的智能家居工作模式單一化,無(wú)法更改的問(wèn)題,用戶可以自由組合智能家居,為智能家居添加了個(gè)性化,并且系統(tǒng)界面簡(jiǎn)潔,操作簡(jiǎn)單,應(yīng)用穩(wěn)定。