基于OSGI的智能家庭系統(tǒng)的設(shè)計與實現(xiàn)
摘要:為了解決普適環(huán)境下智能家庭各類設(shè)備組網(wǎng)困難的問題,本系統(tǒng)采用OSGi(Open Service Gateway Initiative)服務(wù)框架和LonWorks現(xiàn)場總線技術(shù),利用低壓電力線載波手段來設(shè)計和實現(xiàn)智能家庭系統(tǒng)。利用上述方法可以極大地實現(xiàn)不同標準設(shè)備的組網(wǎng),并且可以實現(xiàn)對智能家庭設(shè)備管理的靈活性和便捷性。
關(guān)鍵詞:普適計算;智能家庭;OSGi;LonWorks
智能家庭是指那些采用信息技術(shù)來控制電器設(shè)備,并能夠與外界進行通信聯(lián)系的住宅,提供給住戶更好的家庭生活體驗,屏蔽復(fù)雜的實現(xiàn)技術(shù)和模糊的用戶接口,系統(tǒng)可靠且安全,同時保護用戶的隱私。
在智能家庭系統(tǒng)中存在各類設(shè)備服務(wù),這些設(shè)備服務(wù)使用的接口、網(wǎng)絡(luò)協(xié)議也各不統(tǒng)一。本文使用面向智能家庭系統(tǒng)的OSGI中間件技術(shù),它對智能家庭系統(tǒng)中大量聯(lián)網(wǎng)的設(shè)備、服務(wù)提供發(fā)現(xiàn)、調(diào)度、管理,屏蔽各種設(shè)備服務(wù)的異構(gòu)性,同時也對用戶的情境上下文的推理計算提供支撐。采用OSGi作為基本框架,以智能服務(wù)網(wǎng)關(guān)作為構(gòu)建智能家庭系統(tǒng)的核心部件。該部件除了提供統(tǒng)一的Internet接口、協(xié)議轉(zhuǎn)化的功能外,還能對智能家庭系統(tǒng)的設(shè)備進行管理,同時具有上下文推理能力。
1 智能家庭系統(tǒng)架構(gòu)
在家庭中,各種家電、多媒體系統(tǒng)、通信設(shè)備、保安設(shè)施等都通過計算機、網(wǎng)絡(luò)和傳感器連接在一起,它們可以通過家中的一個“通用遠程控制設(shè)備”實現(xiàn)統(tǒng)一、便捷的控制。但是,嵌入眾多智能設(shè)備,還不足以形成智能家庭,還需要將這些設(shè)備集成到一個統(tǒng)一的框架中,使其互聯(lián)互通并且可以對其進行方便的管理。于是,將設(shè)備、服務(wù)映射到語義空間對智能家庭系統(tǒng)的構(gòu)建將大有幫助。同時利用上下文感知技術(shù)是提高系統(tǒng)智能性的重要途徑,使得人們從繁重的工作中解放出來。智能家庭系統(tǒng)架構(gòu)如圖1所示。
智能家庭服務(wù)網(wǎng)關(guān)的概念,對家庭網(wǎng)關(guān)和家庭內(nèi)部網(wǎng)絡(luò)的標準化,是智能家庭成功組建應(yīng)用的關(guān)鍵。目前比較有影響的服務(wù)網(wǎng)關(guān)是開放服務(wù)網(wǎng)關(guān)標準組織OSGi,該規(guī)范兼容多種既有標準的特性為家庭網(wǎng)關(guān)的實現(xiàn)提供了保障,在此基礎(chǔ)上開發(fā)的家庭服務(wù)網(wǎng)關(guān)支持家庭內(nèi)部所有信息家電和設(shè)備的聯(lián)網(wǎng);而其動態(tài)自適應(yīng)的機制,能自主地將家庭內(nèi)部不同電氣設(shè)備、通信設(shè)備、計算機組合成一個動態(tài)單一的普適的家庭網(wǎng)絡(luò)系統(tǒng)。普適計算的研究體系自底向上主要包括普適計算設(shè)備、普適網(wǎng)絡(luò)、系統(tǒng)軟件和人機交互等多個層次,同時由于研究的側(cè)重點和目標不同,形成了感知上下文計算、智能空間、可穿戴計算等多個熱門研究領(lǐng)域。在智能家庭內(nèi)部,手持設(shè)備、PC或者家用電器通過有線或者無線的方式連接到網(wǎng)絡(luò),從而形成了一個無縫、交互和普適計算的環(huán)境。
同時使用上下文感知計算技術(shù),來實現(xiàn)系統(tǒng)的智能化程度。上下文信息中包含著豐富的信息,有利于系統(tǒng)對用戶注意以外的任務(wù)進行智能化處理,對于系統(tǒng)而言,不僅要知道靜態(tài)的信息還要知道動態(tài)的信息。
本系統(tǒng)包括三部分:
1)普適計算子系統(tǒng)(Pervasivc computing subsystem)
①Context Server是上下文服務(wù)中心,負責(zé)系統(tǒng)中上下文信息的管理和發(fā)布/訂閱到匹配;
②Sensor是傳感器,負責(zé)面向用戶方各類數(shù)據(jù)的實時采集;
③PDA是手持電腦,可以通過以太網(wǎng)(Ethemet)對家庭內(nèi)部電器進行控制;
2)現(xiàn)場總線控制子系統(tǒng)(Lonworks control subsystem)
①PLC是電力線載波模塊,它可以通過現(xiàn)有的電力線進行數(shù)據(jù)的傳輸和交換,負責(zé)信息的轉(zhuǎn)發(fā);
②Adapter智能電力線載波適配器,負責(zé)將家用電器實時信息傳遞給現(xiàn)場總線,并且接收從上位機傳遞的控制信息;
③Lonworks gateway是現(xiàn)場總線網(wǎng)關(guān),解決現(xiàn)場控制器之間的集成。
④scryice是將原始上下文進行組裝或者推理出新服務(wù)。
3)OSGI服務(wù)網(wǎng)關(guān)(OSGI gataway)
其主要的功能是完成相對高速的計算機網(wǎng)絡(luò)(Ethernet)和相對低速的現(xiàn)場總線網(wǎng)絡(luò)(LonWorks)之間的互聯(lián)。
2 LonWorks網(wǎng)絡(luò)的設(shè)計與實現(xiàn)
本系統(tǒng)通過控制適配器掛接到普通家庭中的220 V電力線上,將溫度、濕度、光強、壓力、紅外等各種傳感器以及各種家用電器接入OSGi服務(wù)網(wǎng)關(guān),形成一個以LonWorks現(xiàn)場總線為平臺的控制和監(jiān)測網(wǎng)絡(luò)。而采用現(xiàn)場總線結(jié)構(gòu)組建監(jiān)控網(wǎng)絡(luò)可方便地去除和增加控制節(jié)點,而且對電器設(shè)備的控制分散到了各個智能控制節(jié)點中,實現(xiàn)了真正意義上的集中管理和分散控制。使用電力線網(wǎng)絡(luò),不需要另外再鋪設(shè)通信線路,這不僅給系統(tǒng)通信網(wǎng)絡(luò)建設(shè)帶來了很大的方便,克服了無線通信的弊端,如成本高、電磁污染等。LonWorks網(wǎng)絡(luò)體系結(jié)構(gòu)如圖2所示。
LonWorks中心控制器通過電力線連接開關(guān)適配器、功率調(diào)節(jié)適配器、各種傳感器適配器等。開關(guān)適配器子系統(tǒng)通過電力線收到中心控制器的控制命令,控制連接家用電器的電源通斷。功率調(diào)節(jié)適配器子系統(tǒng)從電力線上接收來自中心控制器的控制命令,調(diào)節(jié)輸出的功率,進而控制連接的各種用電設(shè)備的運行狀態(tài)。中心控制器內(nèi)嵌電力線載波芯片使用現(xiàn)代DSP技術(shù),可以完成在高干擾、高噪聲的惡劣電力線環(huán)境下提供可靠的數(shù)據(jù)傳輸。其兼容ANSI/EIA709.2和CENEIECEN50065-1:2001標準內(nèi)嵌的協(xié)議,與此同時也與ANSI/ELA709.1、LonTalk控制網(wǎng)絡(luò)協(xié)議兼容。
3 服務(wù)網(wǎng)關(guān)的實現(xiàn)
OSGi服務(wù)框架利用Java的平臺獨立和動態(tài)代碼裝載特性,可以更容易地開發(fā)和動態(tài)配置小內(nèi)存設(shè)備的應(yīng)用程序。它運行于Java虛擬機上,而各種各樣的應(yīng)用服務(wù)則運行于具體的OSGi服務(wù)框架軟件之上。
根據(jù)圖3的層次結(jié)構(gòu),需要解決3方面問題:
1)在JVM之上實現(xiàn)OSGi服務(wù)框架;
2)對于每個具體的設(shè)備,提供將設(shè)備服務(wù)封裝成Bundle并發(fā)布的技術(shù);
3)設(shè)備的靈活接入。
3.1 OSGi服務(wù)框架——equinox
利用eclipse的equinox實現(xiàn)的OSGi框架,它安裝在JVM之上,是與OSGi release 3兼容的OSGi服務(wù)框架的一個實現(xiàn)。它提供了各種服務(wù)的執(zhí)行環(huán)境,并提供一組核心服務(wù)集,負責(zé)所有服務(wù)的生命期管理,注冊等功能。
3.2 設(shè)備服務(wù)的封裝——Bundle的設(shè)計
OSGi兼容的具體設(shè)備通過各種本地總線(如Ethenet,Bluetooth,Lonworks,無線等)接入家庭網(wǎng)關(guān),具有不同的硬件特性,只有將設(shè)備相關(guān)的服務(wù)打包成Bundle后,由服務(wù)提供商發(fā)布,家庭網(wǎng)關(guān)從服務(wù)提供商下載、安裝并注冊后,才能使用設(shè)備相應(yīng)的服務(wù),從而滿足靈活接入的要求。
3.3 設(shè)備的靈活接入
服務(wù)框架中的設(shè)備管理器模塊負責(zé)對接入的設(shè)備進行管理,接受服務(wù)的注冊、更改和注銷,這個過程對用戶是透明的:設(shè)備管理器檢測到某些設(shè)備服務(wù)被注冊到服務(wù)網(wǎng)關(guān)后,利用驅(qū)動定位器服務(wù)或驅(qū)動選擇器服務(wù)查找與這些服務(wù)最匹配的驅(qū)動服務(wù),建立關(guān)聯(lián)關(guān)系。如果所需的驅(qū)動服務(wù)還不存在,設(shè)備管理器會自動查找、安裝并啟動驅(qū)動服務(wù)對應(yīng)的Bundle。若找不到,則該設(shè)備服務(wù)就處于閑置(idle)狀態(tài)。
在這里,設(shè)備服務(wù)反映了設(shè)備的某一方面特性,一般可以映射到某個硬件設(shè)備,也可以體現(xiàn)設(shè)備在不同的抽象層上的特性,提供某個功能。它要么從屬于某個特定的設(shè)備類別,要么就是通用型的。設(shè)備類別給出了這類服務(wù)必須實現(xiàn)的接口,即與設(shè)備服務(wù)通信的方法,以允許基于相同底層技術(shù)(如Lonworks,IEEE1394,Jini)的Bundle間進行互操作。驅(qū)動服務(wù)負責(zé)完成實際的底層通信,控制硬件設(shè)備。因此,對每個具體的設(shè)備,至少要有兩個Bundle:DeviceBundle和Driver Bundle,對于同一類的設(shè)備可以連接到相同的Driver Bundle上。
4 設(shè)備封裝——Bundle的具體實現(xiàn)
在OSGI平臺上,服務(wù)是由一個iava Interface來定義的。Bundle可以實現(xiàn)這個接口并且把服務(wù)注冊到服務(wù)注冊表中去,并且OSGI框架管理Bundle的安裝和更新,同時管理Bundle和服務(wù)直接的關(guān)系。
在這里,設(shè)備服務(wù)的Bundle設(shè)計流程如下:
1)編寫服務(wù)接口及對應(yīng)的Java類實現(xiàn);
2)實現(xiàn)相應(yīng)的BundleAetivator和ServiceListener接口。這是兩個必須實現(xiàn)的特殊接口。其中BundleActivator接口包含start和stop兩個方法,start方法注冊服務(wù)和資源,而stop取消注冊,start類似于普通Java類中的public main函數(shù);
3)編寫一個manifest文件描述該JAR文件的內(nèi)容;
4)將上述的所有接口、Java類、manifest文件以及其他資源文件打包成一個JAR文件;
5)在需要時將該Bundle安裝到OSGi服務(wù)網(wǎng)關(guān),完成注冊。如果要獲取由其他Bundle提供的某個服務(wù),可以從該Bundle對應(yīng)的Bundle Con-text對象調(diào)用getServieeReference方法來獲得特定服務(wù)的引用,然后就可以以該引用為參數(shù)調(diào)用getService方法得到服務(wù)對象。
在此基礎(chǔ)上開發(fā)了多個場景應(yīng)用程序,下面以室內(nèi)光強亮度環(huán)境調(diào)節(jié)應(yīng)用和紅外無線自動報警為例,說明相應(yīng)Bundle的開發(fā)方法。
4.1 室內(nèi)光強亮度環(huán)境調(diào)節(jié)
該應(yīng)用程序的功能是通過光強傳感器獲得環(huán)境信息,依此來調(diào)節(jié)室內(nèi)照明設(shè)備的運行狀態(tài),以達到最佳環(huán)境。
1)照度傳感器設(shè)備Bundle
此包主要完成對照度傳感器各項屬性的定義,包括:
①所屬設(shè)備類型為Lonworks;
②設(shè)備名稱描述為Lonworks_Illumination_Sensor;
③設(shè)備ID號標識這個設(shè)備的唯一性,滿足關(guān)于設(shè)備的ID號的統(tǒng)一定義格式;
④設(shè)備的版本信息等;
⑤設(shè)備位置信息描述,具體描述此照度傳感器的位置,是廚房還是客廳。
2)光強傳感器驅(qū)動Bundle 此包主要完成光強值的定時采集,并傳輸?shù)絆SGi服務(wù)網(wǎng)關(guān)。
3)照明設(shè)備Bundle 此包主要完成對照明設(shè)備各項屬性的定義,包括:
①所屬設(shè)備類型為Lonworks;
②設(shè)備名稱描述為Lonworks_Ligbt;
③設(shè)備ID號標識這個設(shè)備的唯一性;
④設(shè)備的版本信息等;
⑤設(shè)備位置信息描述,具體描述此照明設(shè)備的位置。
4)照明設(shè)備驅(qū)動Bundle 此包主要完成對照明設(shè)備的開關(guān)控制、亮度調(diào)節(jié)。
5)推理Bundle 此包主要完成照度值到照明設(shè)備控制方式的轉(zhuǎn)換。比如,當照度值降低時,將亮度調(diào)高;當照度值繼續(xù)降低時,開啟更多的照明設(shè)備。
4.2 紅外無線自動報警
該應(yīng)用程序的功能是通過收集紅外光柵傳感器的數(shù)據(jù),來確定是否有不明人員進入,并且進行報警。
1)紅外光柵傳感器設(shè)備Bundle 此包主要完成對紅外光柵傳感傳感器各項屬性的定義,包括:
①所屬設(shè)備類型為Lonworks;
②設(shè)備名稱描述為Lonworks_Echelette grating_Sensor;
③設(shè)備ID號標識這個設(shè)備的唯一性,滿足關(guān)于設(shè)備的ID號的統(tǒng)一定義格式;
④設(shè)備的版本信息等;
⑤設(shè)備位置信息描述,具體描述此照度傳感器的位置,是圍墻、正門還是窗戶。
2)紅外光柵傳感器驅(qū)動Bundle 此包主要完成紅外光柵傳感器數(shù)據(jù)的定時采集,并傳輸?shù)絆SGi服務(wù)網(wǎng)關(guān)。
3)報警設(shè)備Bundle 此包主要完成對照明設(shè)備各項屬性的定義,包括:
①所屬設(shè)備類型為Lonworks;
②設(shè)備名稱描述為Lonworks_Eechelette grating Light;
③設(shè)備ID號標識這個設(shè)備的唯一性,滿足關(guān)于設(shè)備的ID號的統(tǒng)一定義格式;
④設(shè)備的版本信息等;
⑤設(shè)備位置信息描述,具體描述此報警設(shè)備的位置(如大門報警或者圍墻報警,也可設(shè)置為集中報警)。
4)報警設(shè)備驅(qū)動Bundle 此包主要完成對報警單元的開關(guān)控制、聲音大小調(diào)節(jié)等。
5)推理Bundle 此包主要完成紅外光柵傳感器數(shù)據(jù)到報警處理過程的轉(zhuǎn)換,如有可疑人員通過非法手段進入室內(nèi)時,打開報警燈、報警器提醒屋主或者恐嚇非法入侵者;若是誤報警,則迅速重啟,使各系統(tǒng)恢復(fù)到監(jiān)測狀態(tài)。
5 總結(jié)
隨著家庭信息化水平的不斷提高,人們對智能家庭系統(tǒng)中接入電器設(shè)備控制需求趨于多樣性,這使得接入電器設(shè)備的個體獨立性和整體的一致性等問題日益突出。本文應(yīng)用OSGi服務(wù)框架,提出了一種普適計算環(huán)境下的智能家庭系統(tǒng)解決方案,為用戶提供了一致的多樣化服務(wù),屏蔽了多種接入技術(shù)的差異。