專利名稱::用于本地聯(lián)網(wǎng)系統(tǒng)的設(shè)備抽象層的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種本地聯(lián)網(wǎng)系統(tǒng)、在該系統(tǒng)中使用的平臺(tái)以及操作該平臺(tái)的指令。近幾年,人們對(duì)于家庭環(huán)境中的聯(lián)網(wǎng)應(yīng)用具有很大的興趣,并且已開(kāi)發(fā)了多種聯(lián)網(wǎng)協(xié)議。通用即插即用協(xié)議(UPnP)主要被采用在個(gè)人計(jì)算機(jī)的外圍設(shè)備中,并且協(xié)議的音頻視頻(AV)擴(kuò)展允許諸如媒體服務(wù)器和媒體播放器的AV設(shè)備來(lái)確定類似的設(shè)備上可以獲得什么內(nèi)容,以及控制設(shè)備間所述內(nèi)容的傳輸。UpnP被認(rèn)為是相當(dāng)“重量級(jí)”的協(xié)議,可以對(duì)主機(jī)設(shè)備提出相當(dāng)多的要求,包括處理功率和功率消耗。因此,該協(xié)議并不能理想地適用于低(電池)動(dòng)力裝備,所述設(shè)備只具有有限的資源和另外將僅要求最小處理能力。諸如歐洲家庭系統(tǒng)(EHS)協(xié)議、ZigBee和X10的其它協(xié)議每個(gè)都已被用來(lái)控制家庭用具。家庭網(wǎng)絡(luò)可能包括各種類別的裝備,將不同于具有強(qiáng)大處理能力的個(gè)人計(jì)算機(jī)和媒體播放器,而是僅需要簡(jiǎn)單開(kāi)/關(guān)指令的簡(jiǎn)單設(shè)備,諸如小用具、恒溫器和燈開(kāi)關(guān)。開(kāi)放服務(wù)網(wǎng)關(guān)聯(lián)盟(OSGi)是開(kāi)放的,可管理的框架,旨在允許應(yīng)用(或“服務(wù)”)被部署、安裝和運(yùn)行在諸如家庭、小汽車、和小型辦公室的本地網(wǎng)絡(luò)中。本地網(wǎng)絡(luò)的核心是網(wǎng)關(guān),其支持執(zhí)行OSGi框架的OSGi服務(wù)平臺(tái)。最新公布的OSGi服務(wù)平臺(tái)規(guī)范的版本是2003年3月來(lái)自“OSGi聯(lián)盟”版本3,并且更多的有關(guān)OSGi的信息可以在www.osgi.org找到。部分的服務(wù)平臺(tái)規(guī)范涵蓋了連接至該服務(wù)平臺(tái)的設(shè)備的接入。該規(guī)范引入了兩種類型的實(shí)體以實(shí)現(xiàn)這些表示諸如“打印機(jī)”、“鼠標(biāo)”、“燈”等概念的“設(shè)備”實(shí)體,以及表示諸如“USB”、“串口”等概念的“驅(qū)動(dòng)器”實(shí)體。例如為了表示“USB鼠標(biāo)”,OSGi驅(qū)動(dòng)器選擇器實(shí)體將選擇合適的設(shè)備和驅(qū)動(dòng)器,并將這些放在一起。為了是開(kāi)放的和可擴(kuò)展的,OSGi沒(méi)有定義從應(yīng)用到這些設(shè)備實(shí)體的公共接口,也沒(méi)有在設(shè)備和驅(qū)動(dòng)器實(shí)體之間定義公共接口。這導(dǎo)致各個(gè)公司開(kāi)發(fā)歸它們自身所獨(dú)有的應(yīng)用編程接口(API),這降低了該規(guī)范的開(kāi)放性。圖1表示現(xiàn)有的OSGi設(shè)備接入規(guī)范的簡(jiǎn)化模型。應(yīng)用10表示實(shí)現(xiàn)特定服務(wù)的軟件。在這個(gè)簡(jiǎn)單的情況中,應(yīng)用10控制家庭中的兩盞燈20、30,在一天中的特定時(shí)間開(kāi)關(guān)它們。需要被控制的第一盞燈20根據(jù)歐洲家庭系統(tǒng)(EHS)協(xié)議操作。需要被控制的第二盞燈30根據(jù)ZigBee協(xié)議操作。EHS和ZigBee兩者都是現(xiàn)有的用于家庭聯(lián)網(wǎng)的協(xié)議。用于燈20、30各自每一個(gè)的基本驅(qū)動(dòng)器22、32發(fā)現(xiàn)新的硬件,并向OSGi框架登記對(duì)應(yīng)的“設(shè)備服務(wù)”25、35。設(shè)備服務(wù)25、35的每一個(gè)是將被控制的實(shí)際硬件設(shè)備20、30的軟件表示。應(yīng)用10必須知道與之交互的每一個(gè)可能的燈設(shè)備25、35,且必須知道連接應(yīng)用10與設(shè)備服務(wù)25、35的API26、36的每一個(gè)的細(xì)節(jié)。燈設(shè)備的EHS表示25與燈設(shè)備的ZigBee表示35有很大不同。因此,即使對(duì)于簡(jiǎn)單應(yīng)用,應(yīng)用10變?yōu)橐环N復(fù)雜的軟件。此外,因?yàn)樵O(shè)備服務(wù)沒(méi)有標(biāo)準(zhǔn)化,不同的賣主自由地以不同的方式來(lái)表示相同的硬件設(shè)備(例如,燈20),使用不同的驅(qū)動(dòng)器21和設(shè)備服務(wù)表示25??紤]第二個(gè)應(yīng)用11由不同的賣主提供的例子,但是同樣需要開(kāi)關(guān)燈20,第二個(gè)應(yīng)用11的開(kāi)發(fā)者必須也知道API26的細(xì)節(jié)或必須提供他們自己的設(shè)備以及可以控制燈20的驅(qū)動(dòng)器。本發(fā)明尋求在諸如OSGi框架的本地聯(lián)網(wǎng)體系結(jié)構(gòu)中提供改進(jìn)的接口。因此,本發(fā)明的第一個(gè)方面是提供在本地網(wǎng)絡(luò)中用于在控制目標(biāo)設(shè)備中使用的平臺(tái),包括支持開(kāi)放服務(wù)網(wǎng)關(guān)框架的處理器,其可以執(zhí)行至少一種應(yīng)用以控制目標(biāo)設(shè)備,其中目標(biāo)設(shè)備的每一個(gè)被表示為可以由應(yīng)用通過(guò)應(yīng)用編程接口(API)而操縱的實(shí)體,所述實(shí)體遵循設(shè)備類型的公共分層結(jié)構(gòu),在該分層結(jié)構(gòu)中代表較低層的設(shè)備類型的實(shí)體繼承較高層的設(shè)備類型的屬性,由此對(duì)于應(yīng)用表現(xiàn)出一致的API。開(kāi)放服務(wù)網(wǎng)關(guān)框架優(yōu)選地是,盡管沒(méi)有限制為,開(kāi)放服務(wù)網(wǎng)關(guān)聯(lián)盟(OSGi)框架。帶有一致的分層結(jié)構(gòu)的實(shí)體的使用允許應(yīng)用以簡(jiǎn)化、但仍強(qiáng)大的方式與目標(biāo)設(shè)備通信。實(shí)體構(gòu)成抽象層的部分,該抽象層從每一個(gè)設(shè)備特定(device-specific)和網(wǎng)絡(luò)特定(network-specific)API抽象而來(lái),并且優(yōu)選地使用公共語(yǔ)言。優(yōu)選地,分層結(jié)構(gòu)作為諸如家庭統(tǒng)一控制語(yǔ)言(HUCLHomeUniformControlLanguage)的輕量級(jí)(lightweight)協(xié)議被提供。這允許應(yīng)用的開(kāi)發(fā)者以標(biāo)準(zhǔn)且用戶友好的方式訪問(wèn)系統(tǒng)中的每一個(gè)設(shè)備服務(wù)和因此訪問(wèn)目標(biāo)設(shè)備。開(kāi)發(fā)者可以獨(dú)立地編寫(xiě)應(yīng)用,具有確定它們可以在OSGi框架中可靠地用于目標(biāo)設(shè)備。此外,在系統(tǒng)上“HUCL驅(qū)動(dòng)器”和“HUCL設(shè)備服務(wù)”對(duì)象之間的接口被標(biāo)準(zhǔn)化,現(xiàn)在在所有的配對(duì)中使用公共HUCL接口。這允許簡(jiǎn)單的應(yīng)用基于單個(gè)設(shè)備服務(wù)來(lái)控制通過(guò)不同的聯(lián)網(wǎng)協(xié)議被連接到平臺(tái)的目標(biāo)設(shè)備。當(dāng)還在使用現(xiàn)有的服務(wù)應(yīng)用時(shí),使用新的協(xié)議,新的目標(biāo)設(shè)備可以被增加。HUCL可以被用作所有的設(shè)備服務(wù)和橋接驅(qū)動(dòng)器間的公共語(yǔ)言,所述橋接驅(qū)動(dòng)器對(duì)接到與目標(biāo)設(shè)備相連的本地聯(lián)網(wǎng)協(xié)議。使用HUCL的其它優(yōu)點(diǎn)是協(xié)議的輕量級(jí)特性,對(duì)于主機(jī)裝備提出的要求很低。HUCL可以使用壓縮XML消息,提供基本的和擴(kuò)展的描述,可以降低消息接發(fā)開(kāi)銷。HUCL的主要特征在國(guó)際專利申請(qǐng)WO2004/015926、WO2004/015927、WO2004/015928和WO2004/015929中有描述。HUCL最初是作為用于控制設(shè)備的輕量級(jí)協(xié)議被開(kāi)發(fā),但是意識(shí)到HUCL同樣可以為在OSGi網(wǎng)關(guān)內(nèi)的使用提供理想的協(xié)議。HUCL和較低級(jí)別的基本驅(qū)動(dòng)器一起提供網(wǎng)絡(luò)獨(dú)立性(公共語(yǔ)言)和協(xié)議獨(dú)立性(在所述語(yǔ)言中標(biāo)準(zhǔn)化設(shè)備命令,包括命令集、參數(shù)、功能性等)兩者。其它的協(xié)議缺乏橋接、支持合成(composite)設(shè)備的能力,缺乏由HUCL提供的(providedafforded)支持多于一個(gè)層的子設(shè)備或開(kāi)放規(guī)范的能力,因而不適合作為抽象層而使用。應(yīng)用經(jīng)由目標(biāo)設(shè)備的“設(shè)備服務(wù)”通信,所述“設(shè)備服務(wù)”對(duì)目標(biāo)設(shè)備的設(shè)備類型是特定的,以類似于OSGi中用于UPnP的方式從HUCL束(Bundle)中獲得。這些設(shè)備服務(wù)可以被視為“幫助者束(helperbundles)”,因?yàn)樗鼈兿驊?yīng)用提供設(shè)備特定Java接口,但是可以使用XML、或壓縮XML消息與較低級(jí)別驅(qū)動(dòng)器通信。如果目標(biāo)設(shè)備使用例如UpnP、X10或ZigBee等非HUCL的協(xié)議,HUCL驅(qū)動(dòng)器(橋接驅(qū)動(dòng)器)將HUCL轉(zhuǎn)換為所述目標(biāo)設(shè)備使用的協(xié)議。兩種處理設(shè)備服務(wù)的主要方法被提出。在第一種方法中,每一個(gè)目標(biāo)設(shè)備由向OSGi框架登記的HUCL設(shè)備服務(wù)表示。設(shè)備服務(wù)具有遵循目標(biāo)設(shè)備的設(shè)備類型的分層結(jié)構(gòu),以及它們所代表的目標(biāo)設(shè)備的功能性。實(shí)現(xiàn)分層結(jié)構(gòu)的一個(gè)優(yōu)選方式是通過(guò)使用分層的Java類結(jié)構(gòu),較低級(jí)別的Java類從它們所依賴的較高級(jí)別的類繼承其屬性。然而,如在下面的詳述中更充分的描述,還有其它的方式來(lái)實(shí)現(xiàn)這個(gè)分層功能性。在第二種方法中,單個(gè)設(shè)備服務(wù)向OSGi框架登記,且所述設(shè)備服務(wù)為HUCL合成設(shè)備,其有能力表示大量的子設(shè)備。每一個(gè)子設(shè)備都通過(guò)標(biāo)識(shí)符被引用,且包括在第一種方法中使用的設(shè)備服務(wù)的HUCL等價(jià)版本,其遵循同樣的設(shè)備類型的分層結(jié)構(gòu)和功能性。第二種方法具有減少需要由OSGi框架登記和跟蹤的實(shí)體的數(shù)量的益處。盡管實(shí)體或設(shè)備服務(wù)通常映射至單獨(dú)的硬件目標(biāo)設(shè)備,但是OSGi規(guī)范指出不僅限于此。該發(fā)明應(yīng)用于任何實(shí)現(xiàn)OSGi框架和控制目標(biāo)設(shè)備的平臺(tái)。其包括家庭網(wǎng)關(guān)、機(jī)頂盒(settopbox)、PC機(jī)、個(gè)人數(shù)字助理(PDA)、媒體網(wǎng)關(guān)和其它的消費(fèi)類電子產(chǎn)品或醫(yī)學(xué)設(shè)備。此處描述的功能性可以由軟件、硬件或它們的組合實(shí)現(xiàn)。本發(fā)明可以由包括若干特定組件(distinctelement)的硬件裝置,以及通過(guò)適合的編程計(jì)算機(jī)裝置實(shí)現(xiàn)。因而,本發(fā)明的另一方面是提供用于在本地網(wǎng)絡(luò)中控制目標(biāo)設(shè)備的平臺(tái)的指令,所述指令使得平臺(tái)的處理器支持開(kāi)放服務(wù)網(wǎng)關(guān)框架,以及執(zhí)行至少一個(gè)應(yīng)用以控制目標(biāo)設(shè)備,其中每一個(gè)目標(biāo)設(shè)備由實(shí)體表示,所述實(shí)體可以由應(yīng)用通過(guò)應(yīng)用編程接口API來(lái)操縱,所述實(shí)體遵循設(shè)備類型的公共分層結(jié)構(gòu),在所述分層結(jié)構(gòu)中代表較低層設(shè)備類型的實(shí)體繼承較高層的設(shè)備類型的屬性,由此對(duì)于應(yīng)用表現(xiàn)出一致的API。將被意識(shí)到的是,在裝備生命期中的任何時(shí)間點(diǎn),軟件可以被安裝在網(wǎng)關(guān)上。軟件可以被存儲(chǔ)在電子存儲(chǔ)設(shè)備、硬盤(pán)、光盤(pán)或其它機(jī)器可讀的存儲(chǔ)介質(zhì)上。軟件可以作為機(jī)器可讀載體上的計(jì)算機(jī)程序產(chǎn)品被傳遞,或者它可以通過(guò)網(wǎng)絡(luò)連接被直接下載到平臺(tái)上。本發(fā)明更進(jìn)一方面提供與平臺(tái)一起使用的實(shí)體的庫(kù)(library),所述平臺(tái)支持開(kāi)放服務(wù)網(wǎng)關(guān)框架,且可以在本地網(wǎng)絡(luò)中執(zhí)行至少一個(gè)應(yīng)用以控制目標(biāo)設(shè)備,每一個(gè)實(shí)體表示網(wǎng)絡(luò)中的目標(biāo)設(shè)備,并且由應(yīng)用通過(guò)應(yīng)用編程接口(API)來(lái)操縱,其中所述實(shí)體遵循設(shè)備類型的公共分層結(jié)構(gòu),在所述分層結(jié)構(gòu)中代表較低層設(shè)備類型的實(shí)體繼承較高層的設(shè)備類型的屬性,由此對(duì)于應(yīng)用表現(xiàn)出一致的API。所述庫(kù)可以寄放在網(wǎng)關(guān)或可由平臺(tái)訪問(wèn)的遠(yuǎn)程服務(wù)器中。本發(fā)明的實(shí)施方式將要參考附圖,僅以舉例的方式加以描述,其中圖1示出使用傳統(tǒng)的OSGi框架控制燈的示例場(chǎng)景;圖2示出OSGi家庭網(wǎng)關(guān)(residentialgateway)的整個(gè)模型;圖3示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的OSGi框架;圖4示出在圖3的框架中實(shí)現(xiàn)的和圖1相同的場(chǎng)景;圖5A和5B示出實(shí)現(xiàn)圖3的框架的兩種方式;圖6A和6B示出當(dāng)新目標(biāo)設(shè)備加入所述網(wǎng)絡(luò)時(shí)發(fā)生的消息流;圖7A和7B示出當(dāng)現(xiàn)有目標(biāo)設(shè)備從所述網(wǎng)絡(luò)移除時(shí)發(fā)生的消息流;圖8A和8B示出當(dāng)應(yīng)用控制目標(biāo)設(shè)備時(shí)發(fā)生的消息流;圖9A和9B示出框架內(nèi)使用的設(shè)備服務(wù)分層的例子;圖10示出在目標(biāo)設(shè)備內(nèi)向應(yīng)用通知事件的機(jī)制;圖11示出可以實(shí)現(xiàn)圖3框架的平臺(tái)的例子。圖2示出簡(jiǎn)化的用于開(kāi)放服務(wù)網(wǎng)關(guān)聯(lián)盟(OSGi)家庭網(wǎng)關(guān)的整個(gè)模型。服務(wù)網(wǎng)關(guān)110位于家庭、辦公室、汽車或類似的位置中。服務(wù)網(wǎng)關(guān)110包括支持OSGi框架的服務(wù)平臺(tái)112。在家庭中提供不同的服務(wù)的應(yīng)用130由平臺(tái)112執(zhí)行以控制目標(biāo)設(shè)備20-23。應(yīng)用可以具有各種不同的目的,包括用具的控制,諸如消費(fèi)類電子產(chǎn)品,大型家用電器(whitegoods)、供暖系統(tǒng)和通風(fēng)裝置、照明設(shè)備等。目標(biāo)設(shè)備20-23可以包括燈20、電子用具21或其它任何的電子設(shè)備。網(wǎng)關(guān)110使用本地聯(lián)網(wǎng)協(xié)議連接到目標(biāo)設(shè)備20-23。典型的家庭將包括根據(jù)某個(gè)范圍的目標(biāo)網(wǎng)絡(luò)協(xié)議操作的目標(biāo)設(shè)備,諸如ZigBee、X10、UPnP、EHS、KNX和Echelon。每一個(gè)硬件設(shè)備的物理網(wǎng)絡(luò)層可以是無(wú)線(例如在ZigBee情況下IEEE802.15.4、IEEE802.11或類似)或有線(例如串行總線、以太網(wǎng)電纜連接、電子電纜(X10))的。在圖2中,網(wǎng)絡(luò)40為ZigBee網(wǎng)絡(luò),網(wǎng)絡(luò)45為X10網(wǎng)絡(luò)。家庭之外的遠(yuǎn)程服務(wù)器50可以與網(wǎng)關(guān)110通信。服務(wù)可以通過(guò)服務(wù)器50被傳遞給網(wǎng)關(guān),或者在某些情況下,服務(wù)器50上的應(yīng)用120可以控制家庭內(nèi)的目標(biāo)設(shè)備20-23。遠(yuǎn)程服務(wù)器同樣可以被用于網(wǎng)絡(luò)管理以及向網(wǎng)關(guān)110提供新服務(wù)或更新的服務(wù)。圖3示出OSGi網(wǎng)關(guān)110的一般體系結(jié)構(gòu)。服務(wù)平臺(tái)112支持OSGi框架,其典型地由網(wǎng)關(guān)中處理器執(zhí)行的軟件提供。在網(wǎng)絡(luò)中控制目標(biāo)設(shè)備的應(yīng)用也可以在服務(wù)器50(應(yīng)用120)上遠(yuǎn)程地被執(zhí)行,或者在服務(wù)平臺(tái)112(應(yīng)用130)上本地地被執(zhí)行。根據(jù)本發(fā)明的實(shí)施方式,家庭統(tǒng)一控制語(yǔ)言(HUCL)被用作由服務(wù)平臺(tái)112所支持的OSGi框架中的抽象層。本地網(wǎng)絡(luò)中存在的每一個(gè)目標(biāo)設(shè)備151-153由“設(shè)備服務(wù)”133表示。這是實(shí)際的物理設(shè)備151-153以軟件形式的表示。完整的設(shè)備服務(wù)包括下述信息-用于與設(shè)備交互的基本信息,包括HUCL版本和最低支持的HUCL版本;-用于識(shí)別設(shè)備的基本信息,包括設(shè)備類型列表(HUCL設(shè)備類型碼的列表,每一個(gè)標(biāo)準(zhǔn)化地表示特定設(shè)備類型,例如,燈),該設(shè)備可以控制的設(shè)備類型的類似列表;-多種擴(kuò)展數(shù)據(jù),例如,設(shè)備名稱、位置信息串(locationstring)、廠商、型號(hào)名稱、序列號(hào)、UIURL(用戶接口URL);-向目標(biāo)設(shè)備發(fā)送命令、接收響應(yīng)和事件的功能。此外,可以表示多個(gè)目標(biāo)設(shè)備的合成設(shè)備(compositedevice)包括對(duì)其表示的子設(shè)備的引用。與圖1中使用的設(shè)備25、35不同,設(shè)備服務(wù)133具有分層結(jié)構(gòu)。如下面將要解釋的,這允許應(yīng)用130以盡可能的大的程度來(lái)控制目標(biāo)設(shè)備。諸如燈、電視、冰箱等的目標(biāo)設(shè)備(用具)的類型的每一個(gè)都具有標(biāo)準(zhǔn)化的設(shè)備服務(wù)133。允許應(yīng)用130與每一個(gè)設(shè)備服務(wù)133通信的API已被很好地定義,且不再在是專有的某種東西。這允許應(yīng)用130與設(shè)備服務(wù)133以簡(jiǎn)單、標(biāo)準(zhǔn)化的方式通信。一種實(shí)現(xiàn)分層結(jié)構(gòu)的方式是使用標(biāo)準(zhǔn)化的JavaTM對(duì)象集或另一種提供類類型分層的編程語(yǔ)言,盡管其它的方法也可使用。在OSGi框架中運(yùn)行的應(yīng)用120、130無(wú)需知道它們的目標(biāo)設(shè)備所使用的聯(lián)網(wǎng)協(xié)議的類型(例如,UPnP、ZigBee),這大大簡(jiǎn)化了應(yīng)用。多個(gè)應(yīng)用可以使用同樣的設(shè)備服務(wù)133和API。HUCL束140連接驅(qū)動(dòng)器141、142、143,向OSGi框架登記設(shè)備服務(wù)133以及提供諸如HUCL消息接發(fā)系統(tǒng)(HUCLMessagingSystem)的一般的管理特征。用于ZigBee和UPnP的驅(qū)動(dòng)器141、143每一個(gè)都表示為單個(gè)實(shí)體。然而它們可以采用與針對(duì)X10的驅(qū)動(dòng)器所示方式同樣的方式被分解為基本驅(qū)動(dòng)器163和細(xì)化(refinement)驅(qū)動(dòng)器142,所述細(xì)化驅(qū)動(dòng)器可以使用基本驅(qū)動(dòng)器163的某些功能。通過(guò)允許設(shè)備服務(wù)133向OSGi框架登記其自身、管理事件預(yù)訂(subscription)(后面將更全面地描述)、傳遞HUCL消息給驅(qū)動(dòng)器,以及允許所述驅(qū)動(dòng)器來(lái)執(zhí)行所有的向目標(biāo)網(wǎng)絡(luò)所使用的協(xié)議的轉(zhuǎn)換,使中央管理實(shí)體的職責(zé)最小化成為可能。在這種情況下,HUCL束140的主要任務(wù)為-中央管理——存儲(chǔ)版本ID等;-跟蹤驅(qū)動(dòng)器和設(shè)備服務(wù)(諸如通過(guò)使用OSGi框架的相關(guān)的預(yù)訂機(jī)制);-登記設(shè)備服務(wù)(用于圖5A中的每一個(gè)設(shè)備服務(wù);圖5B中,設(shè)備服務(wù)可以僅被登記用于合成設(shè)備);-參與OSGi驅(qū)動(dòng)器定位器(locator)交互(或者和充當(dāng)?shù)图?jí)別基本驅(qū)動(dòng)器的HUCL驅(qū)動(dòng)器的網(wǎng)絡(luò)交互);-管理事件預(yù)訂(如此使得可以應(yīng)請(qǐng)求發(fā)送事件);-使用HUCL通信;-執(zhí)行協(xié)議轉(zhuǎn)換(在HUCL和目標(biāo)網(wǎng)絡(luò)協(xié)議之間);-編組(marshall)/未編組(unmarshall)來(lái)自/去往程序員友好的JavaAPI的HUCL消息串。驅(qū)動(dòng)器141、142、143在目標(biāo)網(wǎng)絡(luò)上管理目標(biāo)設(shè)備,并在OSGi框架中將它們引入作為HUCL設(shè)備服務(wù)133。這允許設(shè)備服務(wù)133與驅(qū)動(dòng)器141、142、143通過(guò)標(biāo)準(zhǔn)化的HUCL接口通信。驅(qū)動(dòng)器141、142、143可以以Java、本地代碼(nativecode)來(lái)編寫(xiě),或者可以以Java和本地代碼混合的形式來(lái)編寫(xiě)。當(dāng)存在目標(biāo)網(wǎng)絡(luò)驅(qū)動(dòng)器時(shí),HUCL橋接驅(qū)動(dòng)器轉(zhuǎn)換到標(biāo)準(zhǔn)HUCLAPI以使得其它的網(wǎng)絡(luò)也可以使用HUCL。圖4表示與圖1相同的實(shí)現(xiàn)HUCL抽象層的網(wǎng)關(guān)中的場(chǎng)景。燈控制應(yīng)用130在預(yù)定的時(shí)刻打開(kāi)/關(guān)閉兩盞燈20、30。燈20、30的每一個(gè)現(xiàn)在被表示為公共的、一般的具有標(biāo)準(zhǔn)化的API134的燈設(shè)備服務(wù)133。應(yīng)用130可以通過(guò)API134傳送指令給燈設(shè)備133,以同樣的方式進(jìn)行而不管目標(biāo)硬件設(shè)備是連接到EHS網(wǎng)絡(luò)的燈20還是連接到ZigBee網(wǎng)絡(luò)的燈30。HUCL/EHS驅(qū)動(dòng)器144將HUCL層橋接到用于EHS協(xié)議的驅(qū)動(dòng)器。類似的,HUCL/ZigBee驅(qū)動(dòng)器141將HUCL層橋接到用于ZigBee協(xié)議的驅(qū)動(dòng)器。圖5A和5B表示用于HUCL束140的兩個(gè)主要選項(xiàng)。第一個(gè),在圖5A中,HUCL束140充當(dāng)基本驅(qū)動(dòng)器以及向OSGi框架登記個(gè)別的HUCL設(shè)備服務(wù)133,每個(gè)設(shè)備服務(wù)表示目標(biāo)設(shè)備20。OSGi框架提供服務(wù)儲(chǔ)存,即登記的設(shè)備服務(wù)133的可查詢列表。作為一種替換方式,HUCL束(140)可以偵聽(tīng)(listen)由EHS基本驅(qū)動(dòng)器160發(fā)現(xiàn)的新設(shè)備,并然后將其轉(zhuǎn)換為HUCL設(shè)備。在這種情況下,HUCL束140不是基本驅(qū)動(dòng)器而是細(xì)化驅(qū)動(dòng)器。在HUCL束140和設(shè)備服務(wù)之間所有通過(guò)接口160的通信都是以API調(diào)用的形式進(jìn)行,諸如SendHUCLMsg()和ReceiveHUCLMsg()。應(yīng)用130調(diào)用HUCL設(shè)備服務(wù)133上的功能,它直接或間接地與橋接驅(qū)動(dòng)器144通信。HUCL束140跟蹤所有現(xiàn)有的橋接驅(qū)動(dòng)器144。在圖5B中,HUCL束140作為HUCL設(shè)備服務(wù)向OSGi框架登記其自身。在這種情況下,HUCL設(shè)備服務(wù)是HUCL合成設(shè)備146。合成設(shè)備146可以表示大量的設(shè)備服務(wù)147,如果在目標(biāo)網(wǎng)絡(luò)上具有大量的目標(biāo)設(shè)備20,合成設(shè)備具有使用較少系統(tǒng)資源的優(yōu)點(diǎn)。作為示例,如果有十個(gè)不同的目標(biāo)設(shè)備20,在圖5A所示的方案中,需要向OSGi框架登記十個(gè)設(shè)備服務(wù)。相反,在圖5B所示的合成設(shè)備的方案中,僅需要向OSGi框架登記一個(gè)合成設(shè)備146。HUCL合成設(shè)備的概念在國(guó)際專利申請(qǐng)WO2004/015927中被描述了。由于系統(tǒng)可以更容易地應(yīng)付大量的目標(biāo)設(shè)備20,這使得系統(tǒng)可伸縮性更好。HUCL束140和應(yīng)用130之間的API165(等價(jià)于圖5A中的API160)的主要組件是命令SendHUCLMsg()和ReceiveHUCLMsg()。當(dāng)在這些調(diào)用中需要額外的地址信息以識(shí)別在每一個(gè)消息中標(biāo)識(shí)了HUCL合成設(shè)備146的哪一個(gè)子設(shè)備147,整個(gè)消息接發(fā)的總量降低了。除了少量的家務(wù)管理命令,這是僅有的API165所需的命令。合成設(shè)備146的使用同樣可以允許更簡(jiǎn)單的接口,在網(wǎng)關(guān)110和后端(back-end)服務(wù)器50之間,或者穿過(guò)Java-本地接口(JNIJava-NativeInterface)。根據(jù)HUCL協(xié)議的特征,如國(guó)際專利申請(qǐng)WO2004/015956中所描述的,應(yīng)用130可以向合成設(shè)備146查詢對(duì)設(shè)備服務(wù)的簡(jiǎn)單描述和擴(kuò)展描述。圖6A-8B表示在圖3的框架中對(duì)于三種典型動(dòng)作的消息流的示例。在每一個(gè)例子中,消息流對(duì)于個(gè)別設(shè)備服務(wù)被使用的情形(如圖5A)以及一般HUCL束和合成設(shè)備146在被使用(如圖5B)的情形這兩種情形示出。為了清楚起見(jiàn),在這些以及后面的例子中使用了偽代碼。為了簡(jiǎn)單起見(jiàn),該例子將燈20示為目標(biāo)設(shè)備,但是可以意識(shí)到的是目標(biāo)設(shè)備可以更為復(fù)雜。圖6A和6B示出當(dāng)新的目標(biāo)設(shè)備20加入系統(tǒng)時(shí)發(fā)生的消息流。圖6A示出個(gè)別設(shè)備服務(wù)被使用時(shí)的消息流。當(dāng)新設(shè)備(燈20)被第一次加入到系統(tǒng)中,其由EHS驅(qū)動(dòng)器160認(rèn)出,并且在步驟201有總線活動(dòng)。驅(qū)動(dòng)器160經(jīng)由HUCL/EHS驅(qū)動(dòng)器144以下述形式發(fā)送消息202到HUCL束140eventListener.indicate(EHSDriver,NEW_DEVICE,<type>)在步驟203,表示燈的新的設(shè)備服務(wù)133以名稱“myHUCLLamp2”被創(chuàng)建,并且在OSGi框架上調(diào)用函數(shù)Framework.registerNewDevice(myHUCLLamp2)以便登記新的設(shè)備服務(wù)133。所述函數(shù)可以由驅(qū)動(dòng)器144、HUCL束140、或設(shè)備服務(wù)133其自身所調(diào)用。應(yīng)用130中的服務(wù)跟蹤器在步驟204被通知新的設(shè)備服務(wù)“myHUCLLamp2”。OSGi的服務(wù)跟蹤器特征在OSGi服務(wù)平臺(tái)規(guī)范(版本3第19章)有更為全面的描述。轉(zhuǎn)而參考步驟201,新的目標(biāo)設(shè)備加入系統(tǒng)采用的準(zhǔn)確方式根據(jù)目標(biāo)網(wǎng)絡(luò)協(xié)議的不同而不同,在一些協(xié)議中新的目標(biāo)設(shè)備20導(dǎo)致總線上“新設(shè)備”事件。在其它協(xié)議中,新的目標(biāo)設(shè)備由目標(biāo)網(wǎng)絡(luò)中的輪詢機(jī)制發(fā)現(xiàn)。對(duì)于X10,沒(méi)有新設(shè)備的指示,必須由用戶手動(dòng)地加入到系統(tǒng)中。日益增加的安全性的需求要求用戶加入到交互中。對(duì)于WiFi,一旦用戶輸入用于新目標(biāo)設(shè)備的加密密鑰,網(wǎng)關(guān)上的低級(jí)別驅(qū)動(dòng)器160識(shí)別新設(shè)備,并且可以請(qǐng)求描述。HUCL/UPnp橋接驅(qū)動(dòng)器143將認(rèn)出該新設(shè)備,所述新設(shè)備的識(shí)別沿堆棧(stack)向上繼續(xù)。圖6B示出了一般的HUCL束和合成設(shè)備146被使用時(shí)的消息流。當(dāng)新設(shè)備(燈20)第一次加入系統(tǒng)時(shí),其由EHS驅(qū)動(dòng)器160認(rèn)出,并且在步驟211有總線活動(dòng)。如前,驅(qū)動(dòng)器160經(jīng)由HUCL/EHS驅(qū)動(dòng)器144以下述形式發(fā)送消息212到HUCL束140eventListener.indicate(EHSDriver,NEW_DEVICE,<type>)然而,在這個(gè)情況下,新設(shè)備被表示為HUCL合成設(shè)備146中的子設(shè)備。如先前所描述的,為子設(shè)備所存儲(chǔ)的信息是為服務(wù)設(shè)備所存儲(chǔ)信息的HUCL等價(jià),并且包括在實(shí)際設(shè)備之上分層中設(shè)備類型的列表。作為HUCL束的偵聽(tīng)器被預(yù)訂的所有應(yīng)用130發(fā)送消息213HUCLEvent(“<deviceDescriptionChanged>”)應(yīng)用130被作為HUCL束140的偵聽(tīng)器被預(yù)訂。在步驟214應(yīng)用130中的事件偵聽(tīng)器被通知HUCL束的更新以及發(fā)現(xiàn)新增加的子設(shè)備。所述新增加的子設(shè)備沒(méi)有明確地向OSGi框架登記。圖7A和7B示出了當(dāng)已有設(shè)備被從系統(tǒng)中移除時(shí)發(fā)生的消息流。圖7A示出了當(dāng)個(gè)別設(shè)備服務(wù)133被使用時(shí)的消息流。當(dāng)現(xiàn)有設(shè)備(燈20)被從系統(tǒng)中移除時(shí),由EHS驅(qū)動(dòng)器160認(rèn)出并且在步驟221有總線活動(dòng)。驅(qū)動(dòng)器160經(jīng)由HUCL/EHS驅(qū)動(dòng)器144以下述形式發(fā)送消息222到HUCL束140eventListener.indicate(EHSDriver,GONE_DEVICE,ID)在步驟223,“myHUCLLamp2”設(shè)備服務(wù)被停止。在步驟224應(yīng)用130的服務(wù)跟蹤器被通知設(shè)備服務(wù)“myHUCLLamp2”的移除。圖7B現(xiàn)在示出了當(dāng)一般HUCL束被使用時(shí)的消息流。當(dāng)現(xiàn)有設(shè)備(燈20)被從系統(tǒng)中移除時(shí),由EHS驅(qū)動(dòng)器160認(rèn)出并且在步驟231有總線活動(dòng)。再一次,驅(qū)動(dòng)器160經(jīng)由HUCL/EHS驅(qū)動(dòng)器144以下述形式發(fā)送消息232到HUCL束140eventListener.indicate(EHSDriver,GONE_DEVICE,ID)子設(shè)備表示在步驟223燈從HUCL合成設(shè)備146被移除。格式為HUCLEvent(“<deviceDescriptionChanged>”)的消息被發(fā)送給所有的已預(yù)訂偵聽(tīng)器,通知它們?cè)撘瞥?。在步驟234,應(yīng)用130中的事件偵聽(tīng)器被通知該更新以及發(fā)現(xiàn)該已移除的子設(shè)備。再次,OSGi框架沒(méi)有被明確地通知該移除。優(yōu)選地用戶確認(rèn)設(shè)備的移除,諸如通過(guò)點(diǎn)擊用戶界面上的確認(rèn)圖標(biāo)。在第三個(gè)例子中,圖8A和8B示出了當(dāng)應(yīng)用130希望控制已向系統(tǒng)登記的設(shè)備時(shí)發(fā)生的消息流。在該例子中,應(yīng)用130發(fā)送控制消息以打開(kāi)燈20且燈20以名稱“myHUCLLamp”向系統(tǒng)登記。圖8A示出了當(dāng)使用個(gè)別設(shè)備服務(wù)133時(shí)的消息流。首先,在步驟241應(yīng)用130以下述形式向HUCL燈設(shè)備服務(wù)133發(fā)送消息myHUCLLamp.on()在步驟242,所述燈設(shè)備服務(wù)133以下述格式發(fā)送HUCL消息sendHUCLMsg(“…<param1>255</param1>…”)這由HUCL/EHS驅(qū)動(dòng)器144轉(zhuǎn)換為消息,以下述形式發(fā)送243給驅(qū)動(dòng)器160EHSDev5.sendEHSMsg(TURN_ON)該轉(zhuǎn)換可以簡(jiǎn)單地為消息的普通重組,或者可以涉及通過(guò)使用查找表(look-uptable)的轉(zhuǎn)換命令。最終,驅(qū)動(dòng)器160以目標(biāo)網(wǎng)絡(luò)的格式發(fā)送消息244給燈20,以使得燈20打開(kāi)。圖8B示出了當(dāng)一般HUCL束140被使用時(shí)的消息流。首先,在步驟251應(yīng)用130以下述形式向HUCL束140發(fā)送消息sendHUCLMsgAddressedTo(DevID,“…<param1>255</param1>…”)這被傳遞給合成設(shè)備服務(wù)146的特定子設(shè)備147,其中‘DevID’是標(biāo)識(shí)表示燈20的HUCL合成設(shè)備146的子設(shè)備147的標(biāo)識(shí)符。在步驟252,HUCL束140以下述形式發(fā)送由HUCL/EHS驅(qū)動(dòng)器144轉(zhuǎn)換為EHS消息的控制消息EHSDev5.sendEHSMsg(TURN_ON)該消息被傳送給EHS驅(qū)動(dòng)器160。最終,驅(qū)動(dòng)器160以目標(biāo)網(wǎng)絡(luò)的格式發(fā)送消息253給燈20,以使得燈20打開(kāi)。轉(zhuǎn)而參照?qǐng)D5A,通過(guò)API134在應(yīng)用130和HUCL設(shè)備對(duì)象之間傳送的消息是標(biāo)準(zhǔn)化的,諸如LampOn()、LampOff()、TVOn()、TVOff()、SetChannel(intnum)、SetVolumn(intlevel)。應(yīng)用130的開(kāi)發(fā)者將被提供這些標(biāo)準(zhǔn)集。如上所述,HUCL具有設(shè)備服務(wù)的分層排列。圖9示出了設(shè)備服務(wù)300的示例性分層,一般HUCL設(shè)備301在頂部。函數(shù)‘getSubDevices()’返回下一層子設(shè)備的設(shè)備服務(wù),如果存在的話。隨分層結(jié)構(gòu)往下,設(shè)備服務(wù)具有增加的細(xì)節(jié)/功能性水平。因而,設(shè)備服務(wù)302表示具有打開(kāi)/關(guān)閉能力的目標(biāo)設(shè)備。隨該分層結(jié)構(gòu)左側(cè)往下,設(shè)備服務(wù)303定義了基本燈,繼承了在其之上的類的特征,即也可以打開(kāi)/關(guān)閉。設(shè)備服務(wù)304定義了可變暗的燈,即具有在可能值的范圍內(nèi)被設(shè)置為特定亮度值的功能的燈。設(shè)備服務(wù)304同樣繼承其上的302和303的特征,即其為燈且能打開(kāi)/關(guān)閉。隨該分層結(jié)構(gòu)右側(cè)往下,設(shè)備服務(wù)305定義了門(mén)鈴,繼承了HUCL開(kāi)/關(guān)設(shè)備302的特征。在這個(gè)例子中,如果應(yīng)用(例如應(yīng)用130)不知道如何與“HUCLDimmableLamp”類型的設(shè)備對(duì)話,它仍然可以使用“HUCLBasicDevice”定義甚或基本“HUCLDevice”定義,帶有所述設(shè)備服務(wù)能懂得該功能的確定。有效地,HUCL允許應(yīng)用“順?lè)謱訕?shù)而行(walkupthehierarchytree)”,如果應(yīng)用發(fā)現(xiàn)其不能認(rèn)出設(shè)備類型(例如,可變暗燈)則所述應(yīng)用檢查作為設(shè)備服務(wù)133的一部分而提供的設(shè)備類型列表中所列出的其它設(shè)備類型。類似的,由于設(shè)備服務(wù)表示所有符合該分層的目標(biāo)設(shè)備,具有開(kāi)/關(guān)某物能力的應(yīng)用可以驅(qū)動(dòng)燈、門(mén)鈴或任何其它的可以被打開(kāi)/關(guān)閉的設(shè)備類型。目標(biāo)設(shè)備被表示在其“最低的”最精確的表示之上的每一個(gè)級(jí)別。這種方法允許設(shè)備以最大范圍的可能性被操縱,即使開(kāi)發(fā)者不知道特定設(shè)備的所有細(xì)節(jié)。圖9B示出了分層體系的進(jìn)一步例子。平臺(tái)(在此情況下為個(gè)人電子助理(PDA)320)支持上述的OSGi框架和控制應(yīng)用。運(yùn)行在PDA320上的應(yīng)用不能認(rèn)出可變暗燈304或燈303所使用的特定命令,但是其可以認(rèn)出用于OnOffDvice(開(kāi)關(guān)設(shè)備)的設(shè)備類型代碼(即,表示可以被打開(kāi)/關(guān)閉的設(shè)備的類型的代碼),因而在有用的范圍內(nèi)其能夠控制燈,盡管其不能控制燈304可變暗的功能。類似的,運(yùn)行在PDA320上的應(yīng)用只支持“恒溫器”308級(jí)別的設(shè)備服務(wù),且缺乏控制醫(yī)用或工業(yè)恒溫器特征的能力。運(yùn)行在PDA320上的應(yīng)用不能使用醫(yī)用恒溫器309或工業(yè)恒溫器310的先進(jìn)特征,但是其仍可以打開(kāi)和關(guān)閉恒溫器357、358的每一個(gè),且獲得基本的溫度讀數(shù)。這使得目標(biāo)設(shè)備的廠商提供在特定級(jí)別互操作的產(chǎn)品,但是同樣給它們的產(chǎn)品添加能夠區(qū)別于其它產(chǎn)品的獨(dú)特特征。在先前參考圖5B所描述的合成設(shè)備模型中,為合成設(shè)備146中每一個(gè)子設(shè)備147存儲(chǔ)的信息遵循同樣的分層結(jié)構(gòu)。如上所述,許多編程語(yǔ)言提供相關(guān)功能性。例如,在JavaTM中每一個(gè)對(duì)象是“類”的實(shí)例,且類可以擴(kuò)展其它的類形成類分層體系。圖9A和9B中所示的分層體系可以使用Java或另一個(gè)編程語(yǔ)言中對(duì)象集的這種類分層體系來(lái)實(shí)現(xiàn)??商鎿Q地,該分層體系可以以不使用編程語(yǔ)言“內(nèi)建”的類分層體系的方式被實(shí)現(xiàn)。一種不使用編程語(yǔ)言的類分層體系而操作設(shè)備分層體系的方法是通過(guò)單一固定的類實(shí)例表示設(shè)備來(lái)實(shí)現(xiàn)的,該單一固定的類實(shí)例或許稱為HUCLDevice,其只具有一般的、非設(shè)備特有的方法,諸如“sendMessage(commandText)”、“setVariable(variableID,variableValue)”、或“invokeCommand(commandID,commandParameter1,…)”。在這種情況下,所述分層體系書(shū)面記錄為文檔,以軟件組件的編程實(shí)現(xiàn),通過(guò)為每一個(gè)個(gè)別調(diào)用的響應(yīng)編碼(即,非面向?qū)ο蟠a)或通過(guò)非暴露(non-exposed)的API的面向?qū)ο蟮脑O(shè)計(jì)(即,使用面向?qū)ο蟮拇a但不將其在API中表示)。在每一種情況中,我們可以希望擴(kuò)展的設(shè)備能夠?qū)τ诟?jiǎn)單的設(shè)備懂得的所有消息、變量和/或命令調(diào)用正確地反應(yīng),且同樣懂得附加的命令和功能并實(shí)現(xiàn)對(duì)它的響應(yīng)。在第二種情況下,設(shè)備分層體系仍然存在(在最基本的概念上)并且是有用的,但不是直接地通過(guò)使用編程語(yǔ)言的內(nèi)置類分層體系實(shí)現(xiàn)。作為例子,考慮到基本的支持函數(shù)On()和Off()的燈,以及還支持函數(shù)Dim()的復(fù)雜燈(ComplexLamp)。在非面向?qū)ο蟠a中,我們可以使用開(kāi)關(guān)聲明來(lái)實(shí)現(xiàn)。下面的例子是用于基本燈的HUCLdevice軟件偽代碼<prelisting-type="program-listing"><![CDATA[ #include<lamp.h>//包含用于CMD_LAMP_*的#define,且 聲明函數(shù)On()andOff(). invokeCommand(commandID,commandParamList[]) { switch(commandID) { caseCMD_LAMP_ON: On(); break; caseCMD_LAMP_OFF; Off(); break; default: UnknownCommand(commandID,commandParamList[]); } }]]></pre>用于復(fù)雜燈HUCLDevice的偽代碼為<prelisting-type="program-listing"><![CDATA[ #include<lamp.h>//包含用于CMD_LAMP_*的#define,且 聲明函數(shù)On()andOff(). #include<complexLamp.h>//包含用于CMD_COMPLEX_LAMP_* 的#define,且聲明函數(shù)Dim(). invokeCommand(commandID,commandParamList[]) { switch(commandID) { caseCMD_LAMP_ON: On(); break; caseCMD_LAMP_OFF: Off(); break; caseCMD_COMPLEX_LAMP_DIM: Dim(commandParamList); break; default: UnknownCommand(commandID,commandParamList[]); } }]]></pre>此處用于“ComplexLamp(復(fù)雜燈)”的代碼實(shí)現(xiàn)“l(fā)amp(燈)”所有的功能,并且附加的命令也在ComplexLamp(復(fù)雜燈)的規(guī)范中定義。兩個(gè)程序都實(shí)現(xiàn)了函數(shù)On()、Off()和UnknownCommand(…),且ComplexLamp(復(fù)雜燈)將額外實(shí)現(xiàn)函數(shù)Dim(dimLevel)。這個(gè)例子不使用編程語(yǔ)言的類分層體系來(lái)實(shí)現(xiàn)設(shè)備分層體系。還可能以第二種方式來(lái)實(shí)現(xiàn)該分層體系,但是帶有一些面向?qū)ο缶幊烫卣?。用于?fù)雜燈的HUCLdevice(HUCL設(shè)備)軟件的偽代碼例子為<prelisting-type="program-listing"><![CDATA[ #include<lamp.h>//包含用于CMD_LAMP_*的#define, 且聲明Lamp類. #include<complexLamp.h>//包含用于CMD_COMPLEX_LAMP_* 的#define,且聲明擴(kuò)展Lamp類的ComplexLamp類. invokeCommand(commandID,commandParamList[]) { ComplexLampmyComplexLamp=environment.getTargetDevice(); switch(commandID) { caseCMD_LAMP_ON: myComplexLamp.On(); break; caseCMD_LAMP_OFF: myComplexLamp.Off(); break; caseCMD_COMPLEX_LAMP_DIM: myComplexLamp.Dim(commandParamList); break; default: UnknownCommand(commandID,commandParamList[]); } }]]></pre>此處引入應(yīng)用的API與前面例子的相同,且仍沒(méi)有直接使用編程語(yǔ)言的類分層體系。然而在這個(gè)例子中ComplexLamp和Lamp類在用于復(fù)雜燈的偽代碼中被使用,以使得軟件更清楚,或者說(shuō)更易維護(hù)。目標(biāo)設(shè)備以向開(kāi)發(fā)者隱藏任何低級(jí)別HUCL代碼的方式被控制。在圖5A的模型中,設(shè)備服務(wù)類它們自身負(fù)責(zé)將高級(jí)別的方法調(diào)用(例如,LampOn()、SetChannel(intnum))轉(zhuǎn)換為低級(jí)別的HUCL代碼,在圖5B中包裝(wrapper)函數(shù)可能被使用。包裝函數(shù)執(zhí)行開(kāi)發(fā)者友好的、高級(jí)別的Java命令到低級(jí)別的HUCL代碼的轉(zhuǎn)換。在圖8A和圖8B中示出了應(yīng)用130如何可以發(fā)送控制消息以控制目標(biāo)設(shè)備20。在應(yīng)用130已知的時(shí)間,應(yīng)用被請(qǐng)求打開(kāi)/關(guān)閉目標(biāo)設(shè)備則可以發(fā)生這個(gè)。然而,存在希望應(yīng)用響應(yīng)發(fā)生在目標(biāo)設(shè)備上的特定事件的情況。例如,當(dāng)運(yùn)動(dòng)傳感器形式的目標(biāo)設(shè)備檢測(cè)房間中的運(yùn)動(dòng)時(shí),期望通知運(yùn)行在網(wǎng)關(guān)110上的安全應(yīng)用,以使得所述應(yīng)用可以警告用戶?,F(xiàn)有的OSGi框架不能提供支持這種類型通知的機(jī)制。圖10示出了用于向應(yīng)用告警事件的簡(jiǎn)單機(jī)制。在最低級(jí)別,驅(qū)動(dòng)器160在諸如每?jī)擅腌姷闹芷诘幕A(chǔ)上輪詢目標(biāo)設(shè)備20。如果所述目標(biāo)設(shè)備20的狀態(tài)存在變化,驅(qū)動(dòng)器160通知設(shè)備服務(wù)133。這可能從驅(qū)動(dòng)器的API來(lái)檢測(cè)狀態(tài)的任何變化。這可以依靠從驅(qū)動(dòng)器160向HUCL束140的方法調(diào)用來(lái)完成,或者依靠HUCL束140輪詢驅(qū)動(dòng)器160以觀測(cè)其狀態(tài)來(lái)完成。HUCL束140將從驅(qū)動(dòng)器160得到的信息組成HUCL事件消息。這些事件然后被傳送到設(shè)備服務(wù)133,由該設(shè)備服務(wù)將所述事件用Java事件對(duì)象的形式表述。應(yīng)用130預(yù)訂它們所控制的,或者它們對(duì)被通知其狀態(tài)感興趣的那些設(shè)備束。每一個(gè)設(shè)備服務(wù)133保持偵聽(tīng)預(yù)訂列表180,該列表列出了那些登記了興趣的應(yīng)用(例如,將每一個(gè)如它所登記的那樣加到j(luò)ava.util.Vector)。應(yīng)用130的每一個(gè)包括用于接收事件的通知的事件偵聽(tīng)器182。所述由驅(qū)動(dòng)器160發(fā)送的指示燈的新?tīng)顟B(tài)的消息由設(shè)備服務(wù)133接收。設(shè)備服務(wù)133決定183可報(bào)告的事件是否發(fā)生,如果有,則通知所有登記180的感興趣的應(yīng)用。使用該機(jī)制的例子現(xiàn)在將對(duì)于是可變暗燈的目標(biāo)設(shè)備來(lái)描述。根據(jù)圖9A所示的分層體系,可變暗燈設(shè)備304擴(kuò)展了HUCL基本燈設(shè)備303和開(kāi)關(guān)設(shè)備302的功能。因此優(yōu)選地所述事件分層體系鏡像了該對(duì)象的分層體系。這意味著預(yù)訂了可變暗燈設(shè)備服務(wù)的應(yīng)用也接收任何的開(kāi)/關(guān)事件通知。對(duì)于更復(fù)雜的目標(biāo)設(shè)備,其表示為繼承了許多更高級(jí)別類的事件的設(shè)備服務(wù),應(yīng)用將接收該設(shè)備服務(wù)繼承的所有的事件的通知。與分層設(shè)備服務(wù)結(jié)構(gòu)一樣,這為應(yīng)用開(kāi)發(fā)者提供了簡(jiǎn)單但強(qiáng)大的工具。附錄包括了用于實(shí)現(xiàn)該例中事件分層體系的代碼的更多細(xì)節(jié)。如上所述,HUCL管理實(shí)體負(fù)責(zé)登記驅(qū)動(dòng)器和設(shè)備服務(wù)。OSGi框架提供用于向任何感興趣的束通知任何新設(shè)備服務(wù)到達(dá)系統(tǒng)的機(jī)制。通過(guò)在系統(tǒng)中提供HUCL管理束可以偵聽(tīng)任何新設(shè)備服務(wù)的到達(dá),并且如果它們表示HUCL設(shè)備則將它們添加到設(shè)備服務(wù)的集合(collection)中。該束然后向有興趣使用這些設(shè)備服務(wù)的任何其它束提供對(duì)該集合的訪問(wèn)。<prelisting-type="program-listing"><![CDATA[ HUCLDevice[]devices=huclBundle.getDevices(); for(inta=0;a<devices.length;a++){ If(devices[a]instanceofHUCLLamp){ HUCLLamplamp=(HUCLLamp)devices[a]; lamp.turnOn(); }elseif(devices[a]instanceofHUCLDoorbell){ HUCLDoorbellbell=(HUCLDoorbell)devices[a]; bell.activate(); } }]]></pre>上述代碼片斷顯示了對(duì)使用這些設(shè)備服務(wù)感興趣的束如何能隨后獲得來(lái)自HUCL管理束的所有設(shè)備服務(wù)的列表。設(shè)備服務(wù)可以為它們實(shí)現(xiàn)的HUCL設(shè)備接口所查詢,并可以被相應(yīng)地使用。該代碼是開(kāi)發(fā)者如何使用多態(tài)性(polymorphism)來(lái)發(fā)現(xiàn)他是否對(duì)設(shè)備感興趣的實(shí)例說(shuō)明。在這個(gè)例子中,開(kāi)發(fā)者對(duì)HUCLLamp(HUCL燈)和HUCLDoorbell(HUCL門(mén)鈴)感興趣。操作符“instanceof”被用來(lái)查看當(dāng)前HUCLDevice(HUCL設(shè)備)是否是感興趣設(shè)備“的實(shí)例”。如果是,HUCLDevice(HUCL設(shè)備)被分派到已發(fā)現(xiàn)的設(shè)備類。分派對(duì)象現(xiàn)在可以用來(lái)控制該設(shè)備。上述的網(wǎng)關(guān)可以在多種處理平臺(tái)上實(shí)現(xiàn),諸如通用PC或?qū)S锰幚韱卧D11示出了處理平臺(tái)的主要組件。如前所述,中央處理單元401執(zhí)行軟件以支持OSGi框架、應(yīng)用以及HUCL抽象層。典型的,中央處理單元401具有本地的操作系統(tǒng)(例如,基于Linux),其支持Java虛擬機(jī)(JVM)。該JVM駐留(host)OSGi框架和應(yīng)用。非易失性存儲(chǔ)器402和諸如硬盤(pán)之類易失性存儲(chǔ)器403存儲(chǔ)操作軟件和設(shè)備服務(wù)的庫(kù)(libraries),且被處理單元401使用。諸如寬帶ADSL或電纜調(diào)制解調(diào)器的調(diào)制解調(diào)器406連接到通信線路407,該通信線路407將網(wǎng)關(guān)連接到應(yīng)用也可以在其上被支持的遠(yuǎn)程服務(wù)器(50,圖2)。寬帶調(diào)制解調(diào)器406可以在網(wǎng)關(guān)110的外部。由使用有線412和無(wú)線411技術(shù)組合的本地網(wǎng)絡(luò)連接415攜帶去往/來(lái)自被控制的設(shè)備的控制消息。適當(dāng)硬件可以被提供以支持特定本地網(wǎng)絡(luò),例如局域網(wǎng)卡、無(wú)線、紅外或電力線(X10)調(diào)制解調(diào)器的。用戶輸入可以通過(guò)諸如鍵區(qū)、鍵盤(pán)、鼠標(biāo)或?qū)懽职宓妮斎朐O(shè)備410被直接提供給網(wǎng)關(guān)。可替換地,用戶輸入可以從與網(wǎng)關(guān)110本地聯(lián)網(wǎng)的遠(yuǎn)程控制單元被接收,或從通信鏈路407被接收。作為例子,如果用戶離家在外且希望發(fā)送指令給網(wǎng)關(guān)以控制家中的用具,用戶將與遠(yuǎn)程終端交互并通過(guò)線路407發(fā)送指令給網(wǎng)關(guān)110。輸出可以通過(guò)顯示驅(qū)動(dòng)器408和顯示器409直接呈現(xiàn)給用戶,通過(guò)鏈路407呈現(xiàn)給本地遠(yuǎn)程控制單元或遠(yuǎn)程終端??偩€405或不同類型總線的組合連接上述單元。各種各樣的應(yīng)用130可以在網(wǎng)關(guān)110或遠(yuǎn)程服務(wù)器50上被執(zhí)行。這些例子包括家庭控制,諸如通過(guò)在預(yù)定時(shí)間打開(kāi)和關(guān)閉燈模擬建筑物有人(occupancyofabuilding)、控制供暖系統(tǒng)和通風(fēng)裝置、錄像機(jī)編程、控制娛樂(lè)和消費(fèi)類電子設(shè)備;遠(yuǎn)程監(jiān)控建筑物的安全或屋主的健康;遠(yuǎn)程錯(cuò)誤報(bào)告/診斷。應(yīng)當(dāng)注意的是上面提及的實(shí)施方式示出了但不是限定了本發(fā)明,且本領(lǐng)技術(shù)人員可以不脫離所附的權(quán)利要求的保護(hù)范圍作出多種可替換實(shí)施方式。在權(quán)利要求書(shū)中,任何放于圓括號(hào)內(nèi)的附圖標(biāo)記不能解釋為對(duì)權(quán)利要求的限定。詞語(yǔ)“包含”和“包括”不排除在權(quán)利要求中列出的部件或步驟之外的其它部件或步驟的存在。在上面的描述中,以及參考附圖,描述了包括處理平臺(tái)(110)和諸如家庭用具的目標(biāo)設(shè)備(151-153)的本地聯(lián)網(wǎng)系統(tǒng)。所述平臺(tái)支持諸如開(kāi)放服務(wù)網(wǎng)關(guān)聯(lián)盟(OSGi)的開(kāi)放服務(wù)網(wǎng)關(guān)框架,執(zhí)行應(yīng)用(130)以控制目標(biāo)設(shè)備(151-153)。目標(biāo)設(shè)備每一個(gè)都由實(shí)體(133)表示,該實(shí)體可以由應(yīng)用(130)通過(guò)應(yīng)用編程接口(API,134)來(lái)操縱。實(shí)體遵循設(shè)備類型的公共分層結(jié)構(gòu),在所述分層結(jié)構(gòu)中代表較低層設(shè)備類型的實(shí)體繼承較高層設(shè)備類型的屬性。這對(duì)于應(yīng)用表現(xiàn)出一致的API。所述實(shí)體可以構(gòu)成使用諸如家庭統(tǒng)一控制語(yǔ)言(HUCL)的公共語(yǔ)言的抽象層的部分。每一個(gè)實(shí)體可以作為設(shè)備服務(wù)向框架登記,或者表示多個(gè)實(shí)體的單個(gè)設(shè)備服務(wù)可以向框架登記。附錄用于事件報(bào)告特征的進(jìn)一步解釋材料?;臼录惪梢允?lt;prelisting-type="program-listing"><![CDATA[ publicclassOnOffDeviceEventextendsjava.util.EventObject{ /*通過(guò)getEventTrigger()使用,指示設(shè)備開(kāi)(ON)事件*/ staticintDEVICE_ON; /*通過(guò)getEventTrigger()使用,指示設(shè)備關(guān)(OFF)事件*/ staticintDEVICE_OFF; /*返回事件常量之一,解釋是什么觸發(fā)了該事件*/ publicintgetEventTrigger(); /*創(chuàng)建新的開(kāi)關(guān)設(shè)備事件(OnOffDeviceEvent)*/ publicOnOffDeviceEvent(inttrigger); }]]></pre>將向預(yù)訂的應(yīng)用通知可變暗燈設(shè)備上事件的可變暗燈事件(DimmableLampEvent)可以通過(guò)下面的類來(lái)定義publicclassDimmableLampEventextendsOnOffDeviceEvent{staticintBRIGHTNESS_CHANGED;/*覆蓋開(kāi)關(guān)設(shè)備事件(OnOffDeviceEvent)*/publicintgetEventTrigger();publicDimmableLampEvent(inttrigger);}應(yīng)用通過(guò)實(shí)現(xiàn)適當(dāng)?shù)氖录陕?tīng)者接口來(lái)登記它們對(duì)這些事件的興趣。這種用于開(kāi)關(guān)設(shè)備(OnOffDevice)的接口的示例是publicinterfaceOnOffDeviceListenerextendsEventListener{publicvoidonOffDeviceEventOccurred(OnOffDeviceEvente);}權(quán)利要求1.一種用于在本地網(wǎng)絡(luò)中使用以控制目標(biāo)設(shè)備(151-153)的平臺(tái)(110),包括支持開(kāi)放服務(wù)網(wǎng)關(guān)框架的處理器(401),其可以執(zhí)行至少一個(gè)應(yīng)用(130)以控制目標(biāo)設(shè)備,其中目標(biāo)設(shè)備(151-153)中的每一個(gè)由應(yīng)用可以通過(guò)應(yīng)用編程接口(API)操縱的實(shí)體(133)來(lái)代表,所述實(shí)體(133)遵循設(shè)備類型的公共分層結(jié)構(gòu),在所述分層結(jié)構(gòu)中代表較低層設(shè)備類型的實(shí)體(133)繼承較高層設(shè)備類型的屬性,由此對(duì)于應(yīng)用(130)表現(xiàn)出一致的API。2.根據(jù)權(quán)利要求1的平臺(tái),其中,實(shí)體(130)構(gòu)成使用公共語(yǔ)言的設(shè)備抽象層的一部分。3.根據(jù)權(quán)利要求2的平臺(tái),其中,抽象層進(jìn)一步包括橋接驅(qū)動(dòng)器(141-143),所述橋接驅(qū)動(dòng)器在公用語(yǔ)言和用來(lái)與目標(biāo)設(shè)備(151-153)對(duì)接的協(xié)議之間轉(zhuǎn)換消息。4.根據(jù)權(quán)利要求2或3的平臺(tái),其中,公共語(yǔ)言為家庭統(tǒng)一控制語(yǔ)言(HUCL)。5.根據(jù)前面任何一個(gè)權(quán)利要求的平臺(tái),其中,代表目標(biāo)設(shè)備的實(shí)體(133)作為設(shè)備服務(wù)向框架登記。6.根據(jù)前面任何一個(gè)權(quán)利要求的平臺(tái),其中,能夠代表多個(gè)目標(biāo)設(shè)備的設(shè)備服務(wù)(146)向框架登記,每個(gè)目標(biāo)設(shè)備由設(shè)備服務(wù)中的個(gè)別實(shí)體代表。7.根據(jù)權(quán)利要求6的平臺(tái),其中,設(shè)備服務(wù)包括HUCL合成設(shè)備(146),每個(gè)目標(biāo)設(shè)備通過(guò)是合成設(shè)備(146)中子設(shè)備(147)的實(shí)體來(lái)代表。8.根據(jù)權(quán)利要求6或7的平臺(tái),其中,設(shè)備服務(wù)和應(yīng)用之間的API(165)包括發(fā)送消息給設(shè)備服務(wù)的命令和從設(shè)備服務(wù)接收消息的命令。9.根據(jù)權(quán)利要求6至8之一的平臺(tái),其中,在應(yīng)用(130)中提供包裝函數(shù)(162)以便將高級(jí)別的命令轉(zhuǎn)換為通過(guò)API(165)使用的低級(jí)別的消息。10.根據(jù)前面任何一個(gè)權(quán)利要求的平臺(tái),其中,如果應(yīng)用(130)確定其在設(shè)備類型分層體系中的特定級(jí)別不能夠控制目標(biāo)設(shè)備,則在該分層體系中查找其能夠控制目標(biāo)設(shè)備的的較低級(jí)別。11.根據(jù)權(quán)利要求10的平臺(tái),其中,實(shí)體(133)包括其屬性已被繼承的較高層設(shè)備類型的列表。12.根據(jù)權(quán)利要求10的平臺(tái),其中,應(yīng)用(130)通過(guò)使用設(shè)備類型的分層體系的知識(shí)來(lái)確定該分層體系中其能夠控制目標(biāo)設(shè)備的較低級(jí)別。13.根據(jù)前面任何一個(gè)權(quán)利要求的平臺(tái),其中,實(shí)體(133)被安排向應(yīng)用通知目標(biāo)設(shè)備上發(fā)生的事件。14.根據(jù)權(quán)利要求13的平臺(tái),其中,實(shí)體(133)維護(hù)希望被通知事件發(fā)生的應(yīng)用(130)的列表,且當(dāng)事件發(fā)生時(shí)通知那些應(yīng)用。15.根據(jù)權(quán)利要求13或14的平臺(tái),其中,實(shí)體(133)具有事件通知的一致的分層結(jié)構(gòu),其中實(shí)體繼承了該結(jié)構(gòu)的更高成員的事件。16.根據(jù)前面任何一個(gè)權(quán)利要求的平臺(tái),以家庭網(wǎng)關(guān)的形式出現(xiàn)。17.根據(jù)權(quán)利要求16的家庭網(wǎng)關(guān),可連接至通信鏈路以便與遠(yuǎn)程服務(wù)器(50)通信,其中在網(wǎng)關(guān)處支持的框架提供到遠(yuǎn)程服務(wù)器執(zhí)行的應(yīng)用(120)的接口。18.一種用于平臺(tái)(110)在本地網(wǎng)絡(luò)中控制目標(biāo)設(shè)備(151-153)的指令,所述指令使得平臺(tái)的處理器支持開(kāi)放服務(wù)網(wǎng)關(guān)框架,執(zhí)行至少一個(gè)應(yīng)用(130)以控制目標(biāo)設(shè)備,其中每個(gè)目標(biāo)設(shè)備(151-153)由應(yīng)用(130)可以通過(guò)應(yīng)用編程接口(API)操縱的實(shí)體(133)來(lái)代表,所述實(shí)體(133)遵循設(shè)備類型的公共分層結(jié)構(gòu),在所述分層結(jié)構(gòu)中代表較低層設(shè)備類型的實(shí)體(133)繼承較高層設(shè)備類型的屬性,由此對(duì)于應(yīng)用表現(xiàn)出一致的API。19.根據(jù)權(quán)利要求18的指令,其中,實(shí)體構(gòu)成使用公共語(yǔ)言的設(shè)備抽象層的一部分。20.根據(jù)權(quán)利要求19的指令,其中,抽象層進(jìn)一步包括橋接驅(qū)動(dòng)器(141-143),所述橋接驅(qū)動(dòng)器在公用語(yǔ)言和用來(lái)與目標(biāo)設(shè)備(151-153)對(duì)接的協(xié)議之間轉(zhuǎn)換消息,該協(xié)議被用作接口。21.根據(jù)權(quán)利要求19或20的指令,其中,公共語(yǔ)言為家庭統(tǒng)一控制語(yǔ)言(HUCL)。22.根據(jù)權(quán)利要求18至21任一個(gè)的指令,其中,代表目標(biāo)設(shè)備的實(shí)體(133)作為設(shè)備服務(wù)向框架登記。23.根據(jù)權(quán)利要求18至22任一個(gè)的指令,其中,能夠代表多個(gè)目標(biāo)設(shè)備的設(shè)備服務(wù)(146)向框架登記,每個(gè)目標(biāo)設(shè)備由設(shè)備服務(wù)中的個(gè)別實(shí)體(147)來(lái)代表。24.根據(jù)權(quán)利要求23的指令,其中,設(shè)備服務(wù)包括HUCL合成設(shè)備(146),每個(gè)目標(biāo)設(shè)備通過(guò)是合成設(shè)備中子設(shè)備(147)的實(shí)體來(lái)代表。25.根據(jù)權(quán)利要求23或24的指令,其中,設(shè)備服務(wù)和應(yīng)用之間的API(165)包括發(fā)送消息給設(shè)備服務(wù)的命令和從設(shè)備服務(wù)接收消息的命令。26.根據(jù)權(quán)利要求23至25任一個(gè)的指令,其中,在應(yīng)用(130)提供包裝函數(shù)(162)以將高級(jí)別的命令轉(zhuǎn)換為通過(guò)API(165)使用的低級(jí)別的消息。27.根據(jù)權(quán)利要求18至26任一個(gè)的指令,其中,如果應(yīng)用確定其在設(shè)備類型的分層體系的特定級(jí)別不能夠控制目標(biāo)設(shè)備,則在該分層體系中查找其能夠控制目標(biāo)設(shè)備的的較低級(jí)別。28.根據(jù)權(quán)利要求27的指令,其中,實(shí)體包括其屬性已經(jīng)被繼承的較高層設(shè)備類型的列表。29.根據(jù)權(quán)利要求27的指令,其中,應(yīng)用通過(guò)使用設(shè)備類型的分層體系的知識(shí)來(lái)確定該分層體系中其能夠控制的目標(biāo)設(shè)備的較低級(jí)別。30.根據(jù)權(quán)利要求18至29任一個(gè)的指令,其中,設(shè)備服務(wù)被安排向應(yīng)用通知目標(biāo)設(shè)備上發(fā)生的事件。31.根據(jù)權(quán)利要求30的指令,其中,實(shí)體維護(hù)希望被通知事件發(fā)生的應(yīng)用的列表,且當(dāng)事件發(fā)生時(shí)通知這些應(yīng)用。32.根據(jù)權(quán)利要求30或31的指令,其中,實(shí)體具有事件通知的一致的分層結(jié)構(gòu),其中該實(shí)體基繼承該結(jié)構(gòu)中更高成員的事件。33.一種計(jì)算機(jī)程序產(chǎn)品,包括攜帶有根據(jù)權(quán)利要求18-32任一的指令的機(jī)器可讀介質(zhì)。34.一種用于與平臺(tái)一起使用的實(shí)體(133)的庫(kù),所述平臺(tái)支持開(kāi)放服務(wù)網(wǎng)關(guān)框架,執(zhí)行至少一個(gè)應(yīng)用以控制本地網(wǎng)絡(luò)中的目標(biāo)設(shè)備,其中每個(gè)實(shí)體代表該網(wǎng)絡(luò)中的目標(biāo)設(shè)備并且可以由應(yīng)用通過(guò)應(yīng)用編程接口(API)來(lái)操縱,所述實(shí)體遵循設(shè)備類型的公共分層結(jié)構(gòu),在所述分層結(jié)構(gòu)代表較低層設(shè)備類型的實(shí)體繼承較高層的設(shè)備類型的屬性,由此對(duì)于應(yīng)用表現(xiàn)出一致的API。35.一種根據(jù)前述任一權(quán)利要求的平臺(tái)、指令、計(jì)算機(jī)程序產(chǎn)品或?qū)嶓w庫(kù),其中,開(kāi)放服務(wù)網(wǎng)關(guān)框架為開(kāi)放服務(wù)網(wǎng)關(guān)聯(lián)盟(OSGi)框架。全文摘要一種本地聯(lián)網(wǎng)系統(tǒng)包括處理平臺(tái)(110)和諸如家庭用具的目標(biāo)設(shè)備(151-153)。所述平臺(tái)支持諸如開(kāi)放服務(wù)網(wǎng)關(guān)聯(lián)盟(OSGi)的開(kāi)放服務(wù)網(wǎng)關(guān)框架,執(zhí)行應(yīng)用(130)以控制目標(biāo)設(shè)備(151-153)。目標(biāo)設(shè)備每一個(gè)由實(shí)體(133)表示,該實(shí)體可以由應(yīng)用(130)通過(guò)應(yīng)用編程接口(API,134)來(lái)操縱。實(shí)體遵循設(shè)備類型的公共分層結(jié)構(gòu),在所述分層結(jié)構(gòu)中代表較低層的設(shè)備類型的實(shí)體繼承較高層的設(shè)備類型的屬性,這對(duì)于應(yīng)用表現(xiàn)出一致的API。所述實(shí)體可以構(gòu)成使用諸如家庭統(tǒng)一控制語(yǔ)言(HUCL)的公共語(yǔ)言的抽象層的部分。每一個(gè)實(shí)體可以作為設(shè)備服務(wù)向框架登記,或者表示多個(gè)實(shí)體(147)的單個(gè)設(shè)備服務(wù)(146)可以向框架登記。文檔編號(hào)H04L12/28GK1957583SQ200580016920公開(kāi)日2007年5月2日申請(qǐng)日期2005年5月23日優(yōu)先權(quán)日2004年5月24日發(fā)明者A·阿達(dá)姆森,D·R·霍斯金斯,R·J·布萊克維爾,P·A·盧德蘭德申請(qǐng)人:皇家飛利浦電子股份有限公司