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