薛冰, 溫克歡, 張之涵, 魏恩偉, 劉仲夏
(1. 深圳供電局有限公司, 深圳 518001; 2. 深圳市康拓普信息技術有限公司, 深圳 518034)
智能家居控制平臺是一種應用趨勢,即利用先進的網絡、計算機和無線通信等技術,通過特定的程序和平臺將其聯系成一個統一的整體,并能夠遠程控制家居中的各種家用電氣設備[1]。該平臺可以實現對設備的統一管理、遠程監控和資源共享,極大地方便了生活、改善了的生活環境。
工業自動化水平的提高,遠程控制成了應用越來越多的手段;通過遠程控制系統可以訪問家庭管理服務入口,并且家庭中的網站可以由計算機登錄,并且可以通過Web瀏覽器容易地查詢和控制家庭設備[2]。無論是從社會的角度來看,技術還是經濟方面的考慮,設計一個基于Web方式的智能家居遠程管理系統都將具有一定的意義。
智能家居指的是利用家庭網絡連接設備,保持這些設備和住宅的協調,從而營造舒適和信息化的生活空間。智能家居可以將家庭內部所有的電氣設備和信息設備連接起來,繼而組成網絡,科學管理家居生活的各個方面[3]。
智能家居優化人們的生活和環境,幫助人們有效地安排時間,節約各種資源,實現家電、照明等功能。具有定時控制和遠程監控的功能。
智能家居系統大致可分為三個部分:家庭外部網絡、家庭網關和家庭內部網絡。智能家居的遠程管理系統是指家庭內部各種信息設備通過家庭網關與家庭外部網絡連接,在家庭網關中添加嵌入式Web服務器后,用戶便可以通過瀏覽器端的界面實現對遠方家庭的信息設備的查看和管理[4]。
家庭外網是指家庭對外能夠通過網關與外部網絡(如以太網、因特網、廣域網)互聯進行信息交換的一種嶄新的組網和應用技術,從而實現對所有的家庭網絡上的家電和設備進行使用、訪問、控制和管理[5]。
家庭控制內部網絡是指通過家庭內部網絡連接的所有控制設備并負責所有與信息設備、住宅環境的查看和管理有關的服務平臺,采用統一的通信協議,實現所有信息的傳輸[6]。智能家居組成如圖1所示。

圖1 智能家居示意圖
CQRS(命令查詢職責分離)由Greg Young提出,目前在領域驅動開發領域中被廣泛使用。領域驅動開發則認為軟件分析設計與實現應當從業務出發,使用同時包含數據和行為的充血模型,且僅僅視數據庫為普通的持久化手段之一,而非系統的中心[7]。CQRS,在客戶端就將數據的新增修改刪除等動作和查詢進行分離,前者稱為命令(Command),調用命令服務(Command Service)對領域模型進行操作,而查詢則會調用查詢服務(Query Service)直接對數據進行查詢。CQRS工作原理如圖2所示。

圖2 CQRS工作原理
2.2 JavaFX技術
JavaFx平臺是一個富客戶端平臺解決方案,它能夠使用應用程序開發人員輕松地創建跨平臺的富客戶端應用程序。在Java技術的基礎之上,JavaFX平臺提供了一組豐富的圖形和媒體API與高性能硬件加速圖形和媒體引擎,簡化了開發數據驅動的企業客戶端應用程序[8]。
JavaFX技術具有下列優點。
(1) 由于JavaFX平臺是用Java編寫的,Java開發人員可以使用現有的技術和工具來開發JavaFX應用程序。
(2) 因為Java是廣泛使用的,所以很容易找到將JavaFX應用變成產品的開發人員。
(3) 因為JavaFX跟Java技術使用的是相同的服務端和客戶端的平臺,所以降低了應用企業解決方案所帶來的風險。
(4) 因為上述優點,所以開發成本也會降低。
(5) JavaFX為開發者提供了一個創建跨平臺企業級業務應用的開發框架和運行環境。
openHAB是系統所依賴的開源軟件項目,提供了對虛擬設備進行控制的功能。它將物理硬件設備統一抽象為虛擬設備,然后在此基礎上提供對虛擬設備進行控制的功能[9]。
在實際控制物理設備時,openHAB可以向事件總線發送對虛擬設備的控制命令、或者接收虛擬設備的狀態更新;物理設備驅動則可以從事件總線接收虛擬設備控制命令,然后根據虛擬設備和物理設備之間的映射關系,對物理設備作出控制,然后再根據控制結果將虛擬設備狀態更新發布到事件總線上[10]。openHAB這樣的體系結構,理論上可以支持任何已有的智能家居解決方案或者任何硬件平臺。
(1) 家庭內網組網方式選擇
家庭的內部網絡用于連接家庭內的家用電器、設備和傳感器。目前,家庭中使用的網絡技術有很多,如有線技術、無線技術(包括802.11、UWB、藍牙、Zigbee等)和家庭網絡(包括家庭數據網絡和家庭)[11]。
(2) 遠程管理方式選擇
家庭外部網絡可以是無線寬帶網絡、有線電視網絡、電話網絡和因特網。大多數采用比較成熟的聯網技術[12]。家庭外部網絡實現了本地上網工具接入網絡,上網工具登錄到家庭網關后可以管理家庭內部所有信息設備。
目前,遠程管理的常用方法有遙控家用電器、撥撥固定電話、控制手機短信、控制家用電器、手機遠程控制家用電器、PC遙控家用電器等[13]。
(3) 智能家居遠程管理系統結構
上網工具和互聯網的迅速發展,遠程上網工具通過互聯網與家庭網關互聯,進一步實現基于Web方式的遠程查看、操作、管理以及系統設備的添加和配置等功能的遠程管理系統[14]。瀏覽器端的設備主要有3G智能手機、筆記本、臺式機以及現在用戶常用的iPad等上網工具。家庭網關具備TCP/IP網絡通信能力,它提供網口與交換機連接,實現網口的擴展,再連接家庭中的路由器等網端設備,這樣就可以實現家庭網關連接到互聯網中。因此,家庭局域網上的任何上網工具都可以與其傳遞信息,進而家居中的信息設備可以得到控制。
(4) 智能家居遠程管理系統的各個子系統
設計基于Web方式的智能家居的管理與控制系統,要實現家電的管理與控制、家庭設備的配置與控制以及實時音視頻的管理等功能。通過這些功能的劃分,智能化家庭系統可以分為以下幾個子系統:智能照明控制系統、家庭電器控制系統、安全防盜系統和情景模式等[15]。
智能家居系統分成三部分:家庭外網、家庭網關和家庭內網。家庭網關用雙核高性能開發板來實現,并在家庭網關上實現外網需要的服務器、數據庫[16]。數據庫里儲存的數據即家庭內網的實時數據,通過三者的聯合實現智能家居的遠程管理系統,軟件架構如下圖3所示。

圖3 軟件架構圖
(1) 嵌入式Linux操作系統的概述
微電子技術的發展以及人們對電子產品需求的增加,嵌入式設備也發展飛速,上也可以有LCD、鍵盤或者觸摸屏,加載了嵌入式操作系統后,能實現網站的瀏覽、視頻的觀看以及郵件的轉發等功能[7]。
(2) 嵌入式Linux系統開發流程
嵌入式系統的開發,需要將相應的終端設備連接到主設備中,這主要是通過開發相應的軟件通過端口嵌入到主程序中以此來實現相應設備的互相通信。此外,僅僅依靠嵌入式設備的資源還不具有開發嵌入式軟件的條件。在此前提下,可以通過以下方式實現嵌入式軟件的開發:首先交叉開發模式;然后,編輯在主機設備上開發的程序;最后,編譯并生成主程序可執行文件。嵌入式程序編譯完成后復制到目標板OMAP3530上運行、驗證程序。
嵌入式系統的開發過程主要有:安裝主機LINUXOS、建立交叉編譯環境、建立引導和加載程序、編譯和移植Linux內核以及構建Linux根文件系統等。
智能家居遠程管理系統的主要部分是家庭網關,選用OMAP3530處理器,并加入FPGA模塊、以太網模塊、Zigbee模塊以及WCDMA模塊等,構建了一個可以融合不同網絡、處理家庭數據信息和控制信息的家庭網關。家庭網關中還擴展了另外幾個功能模塊,它們的功能分別是:FPGA模塊和以太網模塊:、Zigbee模塊、WCDMA模塊等。
以上模塊的組合構成了功能豐富的家庭網關,實現了家庭內外網的互聯,對于智能家居遠程管理系統的建立創造了必要的條件,遠程用戶通過外網訪問家庭網關,并通過內網實現控制家居生活,
隨著網絡的飛速發展,Web是嵌入式設備管理和交互應用的主要終端之一。
總體來說,嵌入式設備的資源有限,程序處理比較簡單,因此不需要使用較大型服務器,如Boa、TTTPD、MIYNETHTPD、SHTTPD、LoTTDPD、GoaHand等。選擇具有體積小、功能齊全、內存占用少、支持Linux作為嵌入式Linux Web服務器的Boa。然而,Boa服務器也是有缺陷的,它未提供CGI的分析頭處理。
首先,移植嵌入式Boa服務器的環境為:PC機安裝了Ubuntu8.04操作系統,交叉編譯工具是arm-nong-linux-guneabi,目標板為OMAP3530Mini板。數據移植和配置Boa服務器步驟如下所示:Boa源碼下載、安裝需要工具bison和flex、修改文件、修改src/log.c、修改src/Boa.c、生成Makefile文件、修改Makefile、編譯后生成Boa、Boa的配置、測試并運行Boa。
(1) 嵌入式數據庫的選擇和特點
為了將所有內部控制信息存儲在家庭網關中,以便于Web服務器訪問,需要將其存儲到嵌入式數據庫中。嵌入式數據庫代碼簡單,無需配置,直接在應用程序中運行,占用較少的內存空間,還具有自適應性和自調整性,被廣泛應用。
SQLite具有以下幾方面的特點:運行時占用的資源很少,大部分內容支持現行相關標準;可以實現并列運行以滿足多個讀訪問。
(2) 數據的移植
數據的移植過程如下:下載文件并解壓、生成Makefile相關文件、修改Makefile文件、編譯SQLite數據庫和函數,生成需要的庫函數和相應的頭文件、把SQLite放在目標板、查詢數據庫是否可用、對移植的SQLite進行測試。
智能家居中Web平臺管理系統為研究對象,以易移植、占用空間少、操作方便的嵌入式Boa服務器和嵌入式SQLite數據庫為基礎,以系統的軟件方案設計與實現為工作重點。通過對該系統的研究,可以得出以下結論:
(1) 智能家居的遠程管理系統需要實現以下幾項主要功能:智能照明系統、家庭電器控制系統、安防系統和智能情景模式設置。實現這些功能首先要構建系統的開發平臺,主要包括家庭網關的硬件平臺的選擇、軟件平臺的搭建、軟件架構的設計和實現等。
(2) 智能家居管理系統中嵌入Web平臺,首先需要選擇服務器,并做好數據遷移的工作,在此基礎上,還應該構建適當的數據庫。