本發(fā)明涉及為智能設(shè)備提供統(tǒng)一抽象表示的計(jì)算機(jī)系統(tǒng),同時(shí)涉及基于該計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)實(shí)現(xiàn)方法。
背景技術(shù):
::物聯(lián)網(wǎng)有可能改變傳統(tǒng)行業(yè),以及我們的生活和工作方式。近幾年技術(shù)和應(yīng)用開發(fā)發(fā)展迅速。許多新技術(shù)正在出現(xiàn),以實(shí)現(xiàn)“物”(也稱為智能設(shè)備)的連接?,F(xiàn)階段,有幾個(gè)相互競(jìng)爭(zhēng)的標(biāo)準(zhǔn),包括藍(lán)牙、zwave、zigbee或傳統(tǒng)ip網(wǎng)絡(luò)協(xié)議。此外,不同的制造商可能會(huì)實(shí)施其他專有協(xié)議和獨(dú)特功能。目前世界上,還沒有與這些智能設(shè)備和物聯(lián)網(wǎng)交互的通用接口。對(duì)于擁有不同品牌的智能設(shè)備的消費(fèi)者來說,設(shè)備的交流互動(dòng)是非常不方便和昂貴的。不同制造商的設(shè)備之間缺乏統(tǒng)一的控制、訪問和互操作性,阻礙了物聯(lián)網(wǎng)應(yīng)用的快速采用。許多智能設(shè)備和物聯(lián)網(wǎng)缺乏統(tǒng)一的表現(xiàn),也給許多服務(wù)提供商帶來了挑戰(zhàn)。他們必須花大量資源和努力來建立具體的接口,以應(yīng)付不同的標(biāo)準(zhǔn)、協(xié)議和制造商。雖然大多數(shù)制造商努力在自己的產(chǎn)品內(nèi)開發(fā)共同的界面,但它仍然是一個(gè)非常分散的市場(chǎng)。在不同制造商之間交流互動(dòng)和控制智能設(shè)備沒有共同的技術(shù)或標(biāo)準(zhǔn)?,F(xiàn)有技術(shù),諸如藍(lán)牙、z-wave等網(wǎng)絡(luò)協(xié)議都已經(jīng)試圖定義常見的智能設(shè)備的應(yīng)用配置文件,其描述了具有相關(guān)服務(wù)的設(shè)備能力以及如何操作這些服務(wù)。然而,他們定義的設(shè)備的應(yīng)用配置文件只屬于自己的協(xié)議,并且仍然缺乏跨不同協(xié)議的互操作性。所有設(shè)備的應(yīng)用配置文件都需要某種結(jié)構(gòu)化數(shù)據(jù)來完全表示設(shè)備在樹狀數(shù)據(jù)結(jié)構(gòu)中的功能,一些技術(shù)(例如onvif或upnp)利用xml格式來表示設(shè)備的應(yīng)用配置文件并發(fā)送動(dòng)作調(diào)用xmlsoap格式。然而,這種xml格式的數(shù)據(jù)是重量級(jí)的,并且難以用于與客戶端web應(yīng)用程序的交互。此外,他們?cè)谔幚砗屯ㄐ欧矫娑己馁M(fèi)太多的資源。與xml或其他結(jié)構(gòu)數(shù)據(jù)格式相比,json(javascript對(duì)象表示,使用人類可讀文本傳輸由屬性-值配對(duì)組成數(shù)據(jù)對(duì)象的開放標(biāo)準(zhǔn)格式)具有相同的能力來表示公共設(shè)備和應(yīng)用配置文件結(jié)構(gòu)格式。此外,它更易于人眼閱讀,更容易通過軟件(如客戶端javascript和服務(wù)器端node.js代碼)進(jìn)行解析和分析。此外,json更緊湊,消耗更少的網(wǎng)絡(luò)帶寬。在本發(fā)明中,我們開發(fā)了基于json的設(shè)備應(yīng)用配置文件,與現(xiàn)有技術(shù)基于xml的模型相比,顯示出巨大的技術(shù)先進(jìn)性,它是為各種物聯(lián)網(wǎng)設(shè)備創(chuàng)建通用設(shè)備的應(yīng)用配置文件的最佳技術(shù)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的首要技術(shù)問題在于提供一種為智能設(shè)備提供統(tǒng)一抽象表示的計(jì)算機(jī)系統(tǒng)。本發(fā)明所要解決的另一技術(shù)問題在于提供一種為智能設(shè)備提供統(tǒng)一抽象表示的計(jì)算機(jī)實(shí)現(xiàn)方法。為實(shí)現(xiàn)上述目的,本發(fā)明采用下述的技術(shù)方案:一種為智能設(shè)備提供統(tǒng)一抽象表示的計(jì)算機(jī)系統(tǒng),包括:a.統(tǒng)一接口,用于將具有相關(guān)服務(wù)的可用智能設(shè)備在具有通用格式的設(shè)備對(duì)象中進(jìn)行表示;b.定義可用智能設(shè)備的第一單元,包括以下中的至少一個(gè):i.設(shè)備對(duì)象,代表具有相關(guān)服務(wù)的可用智能設(shè)備的抽象表示;ii.第二模塊,被配置為通過調(diào)用必要的設(shè)備驅(qū)動(dòng)程序來發(fā)現(xiàn)和注冊(cè)可用的智能設(shè)備;iii.至少一個(gè)處理模塊,和至少一個(gè)設(shè)備控制命令模塊;c.第二單元,包含智能設(shè)備的通用網(wǎng)絡(luò)接口標(biāo)準(zhǔn)或協(xié)議。其中較優(yōu)地,所述第一單元被配置為將所述智能設(shè)備的硬件細(xì)節(jié)和相關(guān)聯(lián)的服務(wù)轉(zhuǎn)換為設(shè)備的表示,即所述設(shè)備對(duì)象;并且將所述設(shè)備對(duì)象在所述統(tǒng)一接口處呈現(xiàn)。其中較優(yōu)地,所述公共設(shè)備管理層通過至少一個(gè)設(shè)備驅(qū)動(dòng)程序來執(zhí)行設(shè)備管理過程,包括至少一個(gè)以下過程:a.設(shè)備和服務(wù)發(fā)現(xiàn)過程;b.設(shè)備注冊(cè)過程;c.通過調(diào)用與所述設(shè)備相關(guān)聯(lián)的至少一個(gè)服務(wù)來實(shí)現(xiàn)設(shè)備控制過程;d.設(shè)備事件訂閱過程。其中較優(yōu)地,所述公共設(shè)備管理層中的設(shè)備驅(qū)動(dòng)程序至少包含一個(gè)驅(qū)動(dòng)程序,也可以包含多個(gè)驅(qū)動(dòng)程序;所述公共設(shè)備管理層具有層次結(jié)構(gòu),頂層驅(qū)動(dòng)程序依賴于至少一個(gè)底層驅(qū)動(dòng)程序。其中較優(yōu)地,所述統(tǒng)一抽象表示是基于web的應(yīng)用編程接口。其中較優(yōu)地,所述應(yīng)用編程接口是具有標(biāo)準(zhǔn)json格式的restfulapi。其中較優(yōu)地,所述的計(jì)算機(jī)系統(tǒng),還包括:多個(gè)系統(tǒng)的組合,形成具有至少一種布局的的集群,所述布局包括:串行、并行、垂直、水平、分層和多個(gè)布局的組合,其中至少一個(gè)系統(tǒng)被部署為另一系統(tǒng)或多個(gè)系統(tǒng)的設(shè)備驅(qū)動(dòng)程序。其中較優(yōu)地,至少一個(gè)系統(tǒng)將設(shè)備對(duì)象的應(yīng)用簡檔發(fā)送到其他系統(tǒng),以使其他系統(tǒng)能夠通過所述系統(tǒng)的管理接口來管理所述設(shè)備。一種將設(shè)備硬件細(xì)節(jié)和相關(guān)聯(lián)的服務(wù)轉(zhuǎn)換為統(tǒng)一抽象表示的計(jì)算機(jī)實(shí)現(xiàn)方法,基于上述智能設(shè)備提供統(tǒng)一抽象表示的計(jì)算機(jī)系統(tǒng),包括以下步驟:a.通過調(diào)用至少一個(gè)設(shè)備的驅(qū)動(dòng)程序來發(fā)現(xiàn)可用的設(shè)備;b.為每個(gè)被發(fā)現(xiàn)的設(shè)備創(chuàng)建一個(gè)設(shè)備對(duì)象,設(shè)備對(duì)象包含設(shè)備的完整信息以及操作信息;c.根據(jù)設(shè)備對(duì)象注冊(cè)設(shè)備;d.設(shè)備對(duì)象的應(yīng)用簡檔使用統(tǒng)一接口以抽象的方式呈現(xiàn)設(shè)備的相關(guān)服務(wù);e.通過調(diào)用至少一個(gè)設(shè)備驅(qū)動(dòng)程序來控制設(shè)備;f.根據(jù)每個(gè)模式定義驗(yàn)證輸入和輸出變量的數(shù)據(jù)完整性。其中較優(yōu)地,所述的計(jì)算機(jī)實(shí)現(xiàn)方法,還包括以下步驟:a.客戶端通過統(tǒng)一接口發(fā)送ajax請(qǐng)求,ajax請(qǐng)求以純json格式處理基于文本消息的動(dòng)作調(diào)用;b.根據(jù)設(shè)備對(duì)象提供的json格式定義驗(yàn)證輸入數(shù)據(jù);c.將文本消息轉(zhuǎn)換為設(shè)備的動(dòng)作api調(diào)用名稱和輸入數(shù)據(jù);d.將請(qǐng)求和相關(guān)數(shù)據(jù)分發(fā)到設(shè)備驅(qū)動(dòng)程序來處理控制命令;e.根據(jù)設(shè)備對(duì)象提供的json格式定義驗(yàn)證輸出數(shù)據(jù);f.將設(shè)備返回的數(shù)據(jù)轉(zhuǎn)換為文本消息,通過統(tǒng)一接口返回到客戶端。附圖說明圖1是描繪本發(fā)明的軟件框架(m200)管理智能設(shè)備的的實(shí)例圖;圖2是描繪軟件框架的高級(jí)功能的實(shí)例圖;圖3是描繪軟件框架的概括性架構(gòu),包括一組api接口和模塊的實(shí)例圖;圖4是描繪根據(jù)本發(fā)明的實(shí)施例的框架部署的分層布局的實(shí)例圖;圖5是描繪由框架管理的設(shè)備對(duì)象(m100)的實(shí)例圖;圖6是描繪以json格式實(shí)現(xiàn)的設(shè)備的應(yīng)用配置文件(m110)的實(shí)例圖;圖7是表示可切換燈泡json文檔的應(yīng)用配置文件實(shí)例圖;圖8a是json文檔的一個(gè)實(shí)施例中,具有兩種服務(wù)的可切換和可調(diào)光燈泡的應(yīng)用配置文件的部分代碼展示示意圖;圖8b是json文檔的一個(gè)實(shí)施例中,具有兩種服務(wù)的可切換和可調(diào)光燈泡的應(yīng)用配置文件的部分代碼展示示意圖;圖9是描繪設(shè)備驅(qū)動(dòng)程序(m150)的實(shí)例模型圖,還包括一組設(shè)備對(duì)象;圖10是根據(jù)本發(fā)明的實(shí)施例的軟件框架在發(fā)現(xiàn)和注冊(cè)智能設(shè)備時(shí)執(zhí)行的動(dòng)作的流程圖;圖11是描繪框架如何提供智能設(shè)備的通用抽象接口的示例的模型圖;圖12是根據(jù)本發(fā)明的實(shí)施例的由客戶端應(yīng)用和軟件框架執(zhí)行的交互并控制智能設(shè)備動(dòng)作的示例流程圖;圖13是客戶端應(yīng)用程序執(zhí)行的檢索與設(shè)備對(duì)象相關(guān)聯(lián)的json模式文檔(m280)的動(dòng)作的流程圖;圖14是根據(jù)本發(fā)明的由客戶端應(yīng)用程序,軟件框架在與智能設(shè)備進(jìn)行事件訂閱和接收事件更新的交互中執(zhí)行動(dòng)作的實(shí)例流程圖。具體實(shí)施方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。本發(fā)明通過實(shí)施例說明,但是實(shí)際應(yīng)用并不受到附圖中所描述的應(yīng)用場(chǎng)景限制,其中相同的附圖標(biāo)記表示相似的項(xiàng)目。對(duì)本發(fā)明中公開的實(shí)施例的引用不一定是相同的實(shí)施例,并且這樣的引用意味著至少一個(gè)。雖然討論了具體的實(shí)現(xiàn)方式,但是應(yīng)當(dāng)理解這是為了說明的目的而完成的。相關(guān)領(lǐng)域的技術(shù)人員可以認(rèn)識(shí)到,在不脫離本發(fā)明的范圍和精神的情況下可以使用其它組件和構(gòu)造。在本發(fā)明所提供的實(shí)施例中,統(tǒng)一接口可以為api接口,用于將具有相關(guān)服務(wù)的可用智能設(shè)備在具有通用格式的設(shè)備對(duì)象中進(jìn)行表示;第一單元用來定義可用智能設(shè)備,至少包括:設(shè)備對(duì)象、第二模塊、處理模塊和設(shè)備控制命令模塊。其中,當(dāng)在網(wǎng)絡(luò)上發(fā)現(xiàn)智能設(shè)備時(shí),第二模塊調(diào)用必要的設(shè)備驅(qū)動(dòng)程序?qū)l(fā)現(xiàn)的智能設(shè)備注冊(cè)(p20)到軟件框架,并將其表示為軟件框架內(nèi)部的設(shè)備對(duì)象。處理模塊(m220)包括主要功能模塊,其包括以下至少一個(gè)功能:設(shè)備發(fā)現(xiàn)(m222)、設(shè)備注冊(cè)(m224)、設(shè)備控制(m226)和設(shè)備事件訂閱(m228)。設(shè)備控制命令模塊可以為設(shè)備驅(qū)動(dòng)程序管理模塊(m230),設(shè)備驅(qū)動(dòng)程序管理模塊(m230)與分組在設(shè)備硬件抽象層(m240)中的每個(gè)設(shè)備對(duì)象的設(shè)備驅(qū)動(dòng)程序通過接口互動(dòng)。第二單元,包含智能設(shè)備的通用網(wǎng)絡(luò)接口標(biāo)準(zhǔn)或協(xié)議。以上為本計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例,并不是對(duì)本專利申請(qǐng)的限制。在下面的描述中,闡述了許多具體細(xì)節(jié)以提供對(duì)本發(fā)明的全面描述。然而,對(duì)于本領(lǐng)域技術(shù)人員來說,可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明。在其他情況下,我們未詳細(xì)描述眾所周知的特征,以免使本發(fā)明的描述變得主次不分。許多物聯(lián)網(wǎng)/智能設(shè)備利用不同的網(wǎng)絡(luò)標(biāo)準(zhǔn)和協(xié)議,諸如藍(lán)牙、zwave、zigbee或ip網(wǎng)絡(luò)協(xié)議。此外,不同的制造商可能會(huì)實(shí)現(xiàn)專有協(xié)議和獨(dú)特功能。實(shí)現(xiàn)大量設(shè)備的統(tǒng)一代表和描述是一項(xiàng)挑戰(zhàn),使得物聯(lián)網(wǎng)/智能設(shè)備之間的互操作性非常困難。我們發(fā)明了一種新的解決方案來應(yīng)對(duì)這一挑戰(zhàn),參考圖1,該解決方案引入了一個(gè)軟件框架(m200)來管理連接到框架的所有智能設(shè)備(m41x)。作為web服務(wù)器,該框架使用統(tǒng)一格式將至少一個(gè)外部接口(稱為應(yīng)用編程接口(m300))暴露給框架外的客戶端。通過此框架,客戶端可以通過應(yīng)用編程接口(m300)以統(tǒng)一的命令訪問所有智能設(shè)備,無需處理不同網(wǎng)絡(luò)協(xié)議和設(shè)備細(xì)節(jié)的麻煩。以下發(fā)明的軟件框架(m200)可以應(yīng)用于智能家居和物聯(lián)網(wǎng)(iot)應(yīng)用。該軟件框架可以實(shí)現(xiàn)為智能網(wǎng)關(guān)的一部分,或者在諸如智能電話或平板電腦的移動(dòng)設(shè)備中,或者在運(yùn)行在云中的服務(wù)器機(jī)器中,或在防火墻后面的pc或連接的“智能”聯(lián)網(wǎng)設(shè)備中,通過計(jì)算機(jī)網(wǎng)絡(luò)訪問物聯(lián)網(wǎng)(iot)設(shè)備。圖2是描繪本發(fā)明的軟件框架(m200)的高級(jí)功能的實(shí)例模型圖。在軟件框架頂層,它開放了一組設(shè)備管理api接口(即應(yīng)用編程接口m300),在我們優(yōu)選的實(shí)施例中,我們用restful(m310)風(fēng)格的api接口實(shí)現(xiàn)到外部世界連接。這接口不僅僅限于與restful風(fēng)格的api接口實(shí)現(xiàn)。在軟件框架內(nèi)部,它利用公共設(shè)備管理層(m210)來管理一組設(shè)備對(duì)象(m100)。這些設(shè)備對(duì)象是從設(shè)備驅(qū)動(dòng)程序(m150)生成,并向軟件框架報(bào)告的。公共設(shè)備管理層(m210)擁有設(shè)備驅(qū)動(dòng)程序管理模塊(m230),負(fù)責(zé)管理所有設(shè)備驅(qū)動(dòng)程序,例如發(fā)送發(fā)現(xiàn)(p10)請(qǐng)求,加載和卸載設(shè)備驅(qū)動(dòng)程序(p14)等。當(dāng)在網(wǎng)絡(luò)上發(fā)現(xiàn)智能設(shè)備時(shí),設(shè)備驅(qū)動(dòng)程序?qū)l(fā)現(xiàn)的智能設(shè)備注冊(cè)(p20)到軟件框架,并將其表示為軟件框架內(nèi)部的設(shè)備對(duì)象(m100)。每個(gè)設(shè)備對(duì)象(m100)實(shí)例表示發(fā)現(xiàn)的智能設(shè)備。外部世界可以通過軟件框架的api接口(m300)獲得發(fā)現(xiàn)的智能設(shè)備的列表,并通過由軟件框架(m200)實(shí)現(xiàn)的api接口(m300)來控制這些智能設(shè)備。在我們當(dāng)前的實(shí)施例中,我們使用restfulapi(m310)構(gòu)建框架的api接口(m300)。對(duì)于在相同協(xié)議中共享公共設(shè)備驅(qū)動(dòng)程序(m160)的智能設(shè)備,您可能會(huì)看到多個(gè)設(shè)備對(duì)象,它們表示從同一公共設(shè)備驅(qū)動(dòng)程序(m160)創(chuàng)建的不同智能設(shè)備,如圖2所示??蚣艿腶pi接口(m300)還用于設(shè)備事件訂閱。要接收設(shè)備事件,外部世界用戶將其事件訂閱請(qǐng)求和地址信息發(fā)送到軟件框架的api接口。當(dāng)設(shè)備事件到達(dá)軟件框架時(shí),軟件框架會(huì)向用戶的地址發(fā)送事件更新。用戶地址可以是可接收數(shù)據(jù)的任何url或套接字地址。通過這種設(shè)計(jì),我們?yōu)楦鞣N物聯(lián)網(wǎng)(iot)設(shè)備創(chuàng)建了一個(gè)雙向數(shù)據(jù)通道。圖3是描繪軟件框架的高級(jí)架構(gòu)包括一組api接口和模塊的實(shí)施例圖。在操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議棧(m400)之上的軟件框架中有兩個(gè)主要層。公共設(shè)備管理層(m210)和設(shè)備硬件抽象層(m240)。公共設(shè)備管理層(m210)包括處理模塊(m220)和設(shè)備驅(qū)動(dòng)程序管理模塊(m230)。處理模塊包括主要功能模塊,其包括以下至少一個(gè)功能:設(shè)備發(fā)現(xiàn)(m222),設(shè)備注冊(cè)(m224),設(shè)備控制(m226)和設(shè)備事件訂閱(m228)。設(shè)備驅(qū)動(dòng)程序管理模塊(m230)與分組在設(shè)備硬件抽象層(m240)中的每個(gè)設(shè)備對(duì)象的設(shè)備驅(qū)動(dòng)程序(圖1中的m150)通過接口互動(dòng)。圖4是描繪根據(jù)本發(fā)明的實(shí)例的框架部署的分層布局的實(shí)例圖?;谖覀兊脑O(shè)計(jì),多個(gè)軟件框架可以在幾乎任何布局的組合中形成集群。任何軟件框架都可以調(diào)用另一個(gè)軟件框架來控制由另一個(gè)軟件框架管理的設(shè)備。在典型的軟件部署環(huán)境中,軟件框架可以具有分層布局,管理一組智能設(shè)備的下層框架實(shí)例可以被部署為上層框架實(shí)例的設(shè)備驅(qū)動(dòng)程序。響應(yīng)于對(duì)下層框架的api接口的請(qǐng)求,較低層框架實(shí)例可以將其被管理設(shè)備對(duì)象信息發(fā)送到上層框架實(shí)例。然后上層框架可以通過下層框架實(shí)例的管理界面來管理實(shí)際的智能設(shè)備。另一種部署方法是設(shè)備驅(qū)動(dòng)程序可能具有層次結(jié)構(gòu),我們有一個(gè)公共設(shè)備驅(qū)動(dòng)程序(m160)來管理不同供應(yīng)商的專有驅(qū)動(dòng)程序(m170)作為其依賴關(guān)系。例如,在我們的實(shí)現(xiàn)中,我們有一個(gè)通用的藍(lán)牙le驅(qū)動(dòng)程序,能夠發(fā)現(xiàn)附近的所有藍(lán)牙le設(shè)備,并將其與已安裝的供應(yīng)商專有驅(qū)動(dòng)程序相匹配。在匹配的情況下,常見的藍(lán)牙le模塊將向框架注冊(cè)供應(yīng)商專有設(shè)備對(duì)象。如果找不到匹配項(xiàng),藍(lán)牙le模塊將收集由藍(lán)牙le標(biāo)準(zhǔn)定義的所有知名信息,例如設(shè)備名稱,設(shè)備類型等。然后,該設(shè)備將作為通用藍(lán)牙注冊(cè)到該框架le設(shè)備。通過利用這種設(shè)計(jì),我們可以在不同的部署環(huán)境下實(shí)現(xiàn)管理各種智能設(shè)備的最大靈活性。圖5是描繪由軟件框架管理的設(shè)備對(duì)象(m100)的實(shí)施例圖。設(shè)備對(duì)象包括應(yīng)用配置文件(m110)和硬件配置文件(m120)兩者。設(shè)備的應(yīng)用配置文件是json格式文檔。它代表了設(shè)備的全部功能以及如何操作它們。此json文檔由設(shè)備驅(qū)動(dòng)程序(m150)創(chuàng)建,該設(shè)備驅(qū)動(dòng)程序(m150)在發(fā)現(xiàn)階段讀取和分析設(shè)備以創(chuàng)建該設(shè)備的框架內(nèi)部對(duì)象模型。此框架的客戶端,如客戶端應(yīng)用程序或第三方web服務(wù)可以通過軟件框架的api接口(m300)檢索此json文檔,以便他們知道如何向該設(shè)備發(fā)送api調(diào)用動(dòng)作或訂閱事件更新。設(shè)備的硬件配置文件包括如何操作設(shè)備的內(nèi)部實(shí)現(xiàn),這些信息對(duì)軟件框架和外部世界是不可見的。設(shè)備對(duì)象實(shí)現(xiàn)一組公共設(shè)備抽象接口(m130),例如接受設(shè)備api調(diào)用動(dòng)作和事件訂閱請(qǐng)求等。軟件框架可以調(diào)用該公共設(shè)備抽象接口以一致地與不同類型的設(shè)備進(jìn)行通信,而不管其硬件配置將是什么。圖6是描繪以json格式實(shí)現(xiàn)的設(shè)備的應(yīng)用配置文件(m110)的實(shí)例圖應(yīng)用配置文件包括設(shè)備的基本信息(m122)的列表,諸如設(shè)備的供應(yīng)商信息,友好名稱等;以及名為“服務(wù)列表”(m180)的列表,其定義與設(shè)備相關(guān)聯(lián)的可用服務(wù)。服務(wù)列表(m180)包含服務(wù)列表的定義(m182,m184,m186)。每個(gè)服務(wù)列表包含抽象api(m182a,m182b,m182c)和名為“服務(wù)狀態(tài)表”(m192)的列表。從功能的角度來看,設(shè)備應(yīng)用簡檔描述服務(wù)列表(m182,m184,m186),并且每個(gè)服務(wù)包含對(duì)動(dòng)作呼叫列表的定義(例如m182a,m182b,m182c)。每個(gè)動(dòng)作調(diào)用定義包括表示全抽象api調(diào)用接口的參數(shù)定義列表。在我們實(shí)現(xiàn)的實(shí)例中,將包含對(duì)一組變量的定義的服務(wù)狀態(tài)表servicestatetable(m192,m194,m196)映射到抽象api調(diào)用接口的參數(shù)。這些變量的定義包括有關(guān)其數(shù)據(jù)類型的信息,以及是否可以以事件發(fā)生。變量的數(shù)據(jù)類型可以是簡單的或復(fù)雜的類型。簡單類型包括字符串,整數(shù),布爾值,數(shù)字和json規(guī)范的一致性。復(fù)雜類型用于表示具有復(fù)雜結(jié)構(gòu)的數(shù)據(jù)對(duì)象。通過這樣做,該軟件框架的客戶端可以根據(jù)設(shè)備模型中定義的數(shù)據(jù)類型向框架發(fā)送表示操作api調(diào)用的文本消息。圖7是表示可切換燈泡json文檔的應(yīng)用配置文件實(shí)施例圖。json文檔包括設(shè)備的基本信息,例如姓名,制造商信息等;服務(wù)列表,其中每個(gè)服務(wù)都包含對(duì)操作列表的定義,每個(gè)操作都描述此設(shè)備支持的操作api調(diào)用。通過利用基于json的設(shè)備模型和上述過程,客戶端應(yīng)用將具有統(tǒng)一的表示。利用這種統(tǒng)一的設(shè)備應(yīng)用配置文件和抽象設(shè)備接口,提供開關(guān)功能的燈泡將具有對(duì)客戶端的統(tǒng)一表示,而不管設(shè)備的網(wǎng)絡(luò)協(xié)議服務(wù)表示由智能設(shè)備提供的一組單獨(dú)和可互換的功能。例如,可調(diào)燈泡可以提供兩種服務(wù):一種是開關(guān)服務(wù);另一個(gè)是調(diào)光服務(wù)。開關(guān)服務(wù)包含兩個(gè)用于打開或關(guān)閉燈泡的抽象api接口,并且調(diào)光服務(wù)包含兩個(gè)api接口以獲得并設(shè)置燈泡的調(diào)光級(jí)別。圖8是json文檔的一個(gè)實(shí)施例圖,其表示具有兩種服務(wù)的可切換和可調(diào)光燈泡的應(yīng)用配置文件:二進(jìn)制開關(guān)服務(wù)和調(diào)光服務(wù)。此外,定義的服務(wù)實(shí)體可以在其他情況下重復(fù)使用。例如,該開關(guān)服務(wù)實(shí)體可以用于描述諸如電視機(jī)、洗衣機(jī)等的其他智能設(shè)備所提供的切換功能。調(diào)光服務(wù)也可以用于描述可調(diào)光電視或監(jiān)視器屏幕?!胺?wù)狀態(tài)表”(m192)包含映射到由服務(wù)定義的抽象api接口的每個(gè)參數(shù)的變量定義變量的數(shù)據(jù)類型在服務(wù)狀態(tài)表(m192)中定義,并且可以是可能包含json對(duì)象或數(shù)組中的復(fù)雜數(shù)據(jù)的簡單類型(布爾型,整數(shù)型,數(shù)字和字符串)或復(fù)雜類型。通過利用這種抽象api接口和變量類型信息,我們可以通過軟件框架的api接口(m310)將設(shè)備的應(yīng)用程序配置文件發(fā)送到框架外的客戶端。然后,客戶端將知道如何發(fā)送正確的api調(diào)用來控制設(shè)備。此外,“服務(wù)狀態(tài)表”中的每個(gè)變量的定義可以用“sendevents”布爾標(biāo)志來注釋。軟件框架將緩存變量的最新已知值,這些值是從其成功的操作調(diào)用或事件更新中獲取的。如果變量的“sendevents”標(biāo)志在設(shè)備的應(yīng)用配置文件中為真,并且該變量的值由底層網(wǎng)絡(luò)堆?;騽?dòng)作api調(diào)用更改,則軟件框架將向事件訂閱者發(fā)送事件更新。例如,如果用戶關(guān)閉燈泡,則所有事件訂戶將從框架獲得上述更改的更新。通過這樣做,我們?cè)诳蛻舳撕臀锫?lián)網(wǎng)設(shè)備之間擁有靈活的雙向數(shù)據(jù)通道。圖9是描繪設(shè)備驅(qū)動(dòng)程序(m150)的實(shí)施例的模型圖,還包括一組設(shè)備對(duì)象。每個(gè)設(shè)備驅(qū)動(dòng)程序表示一種類型的網(wǎng)絡(luò)協(xié)議,并且可以管理該類別中的一個(gè)或多個(gè)設(shè)備對(duì)象,例如藍(lán)牙z-wavezigbee每個(gè)采用設(shè)備驅(qū)動(dòng)程序的onvif協(xié)議。此外,設(shè)備制造商的非標(biāo)準(zhǔn)專有實(shí)現(xiàn)也可以通過該軟件框架來支持,并且在該通用的基于抽象的json的應(yīng)用配置文件中被呈現(xiàn)給客戶端。每個(gè)設(shè)備驅(qū)動(dòng)程序具有暴露于框架的公共管理接口(m190)。軟件框架可以管理諸如驅(qū)動(dòng)程序加載和卸載的設(shè)備驅(qū)動(dòng)程序,通過該公共管理接口(m190)啟動(dòng)設(shè)備發(fā)現(xiàn)過程。當(dāng)從軟件框架接收到發(fā)現(xiàn)請(qǐng)求時(shí),設(shè)備驅(qū)動(dòng)程序?qū)⒏鶕?jù)它們自己的發(fā)現(xiàn)協(xié)議,例如藍(lán)牙或z波網(wǎng)絡(luò)掃描、upnpssdp、用于onvif攝像機(jī)的ws-發(fā)現(xiàn)來啟動(dòng)設(shè)備發(fā)現(xiàn)過程。設(shè)備對(duì)象將是為每個(gè)新發(fā)現(xiàn)的設(shè)備生成并注冊(cè)到軟件框架。圖10是根據(jù)本發(fā)明的實(shí)施例的軟件框架在發(fā)現(xiàn)和注冊(cè)智能設(shè)備時(shí)執(zhí)行的動(dòng)作的流程圖。軟件框架的處理模塊(m220)將調(diào)用(p10)設(shè)備驅(qū)動(dòng)程序管理模塊(m230)內(nèi)的必需設(shè)備驅(qū)動(dòng)程序(m232,m234)以發(fā)現(xiàn)所有連接的物聯(lián)網(wǎng)設(shè)備。根據(jù)發(fā)現(xiàn)請(qǐng)求(p12)發(fā)出,其網(wǎng)絡(luò)上的所有可用設(shè)備(m412,m416)根據(jù)標(biāo)準(zhǔn)連接協(xié)議響應(yīng)相應(yīng)的設(shè)備驅(qū)動(dòng)程序(p16,p18)。設(shè)備驅(qū)動(dòng)程序(m232,m234)將通過為軟件框架內(nèi)部創(chuàng)建和呈現(xiàn)設(shè)備對(duì)象(圖5中的m100)來將發(fā)現(xiàn)的設(shè)備(p20)注冊(cè)到軟件框架。每個(gè)設(shè)備對(duì)象包含該智能設(shè)備的應(yīng)用配置文件(圖5中的m110)。此應(yīng)用配置文件是一種json格式的文檔,其中包含有關(guān)智能設(shè)備及其操作的所有信息。圖11是描繪軟件框架如何提供智能設(shè)備的通用抽象接口的示例的模型圖。在軟件框架啟動(dòng)之后,客戶端可以向軟件框架發(fā)送設(shè)備發(fā)現(xiàn)請(qǐng)求(p02),軟件框架處理模塊將向驅(qū)動(dòng)器管理模塊內(nèi)的設(shè)備驅(qū)動(dòng)程序發(fā)送該請(qǐng)求(p10)。驅(qū)動(dòng)程序?qū)⑴c智能設(shè)備(m410)進(jìn)行交互(p12和p16),以完成發(fā)現(xiàn)過程。一旦發(fā)現(xiàn),相應(yīng)的驅(qū)動(dòng)器將發(fā)現(xiàn)的智能設(shè)備(p20)注冊(cè)到軟件框架作為設(shè)備對(duì)象(m100)。使用設(shè)備對(duì)象的通用格式,我們實(shí)現(xiàn)了具有相關(guān)服務(wù)的設(shè)備的統(tǒng)一表示。圖12是根據(jù)本發(fā)明的實(shí)施例的由客戶端應(yīng)用和軟件框架執(zhí)行的交互并控制智能設(shè)備動(dòng)作的示例流程圖。在通過軟件框架的api接口(m300)接收到設(shè)備的應(yīng)用配置文件之后,外部世界中的客戶端應(yīng)用將文本消息(p50)中的動(dòng)作api調(diào)用請(qǐng)求發(fā)送到框架的外部api接口(m300)。軟件框架然后將通過設(shè)備抽象接口(圖5中的m130)發(fā)送api調(diào)用數(shù)據(jù)到相應(yīng)的底層設(shè)備驅(qū)動(dòng)程序(p52),其中api調(diào)用數(shù)據(jù)將被轉(zhuǎn)換為設(shè)備的硬件配置文件和設(shè)備對(duì)象內(nèi)的內(nèi)部實(shí)現(xiàn)。軟件框架將在內(nèi)部調(diào)用正確的驅(qū)動(dòng)程序,就是說,z-wave驅(qū)動(dòng)程序(m234),將這些api調(diào)用轉(zhuǎn)換成設(shè)備自己的控制協(xié)議,也就是說,z-wave協(xié)議與智能設(shè)備(m410)通信(p56)。在完成動(dòng)作后,智能設(shè)備將確認(rèn)或輸出數(shù)據(jù)(p58)發(fā)送回驅(qū)動(dòng)器,然后依次發(fā)送到軟件框架的處理模塊(p60)和客戶端應(yīng)用程序(p62)。通過利用這種設(shè)計(jì),我們有一個(gè)與外部世界的每種類型的設(shè)備的通用設(shè)備應(yīng)用配置文件。例如,燈泡將僅暴露開關(guān)應(yīng)用簡檔作為框架,則開關(guān)api調(diào)用數(shù)據(jù)可以通過其設(shè)備抽象接口(m130)發(fā)送到燈泡的設(shè)備對(duì)象。然后,這個(gè)開關(guān)api調(diào)用將被轉(zhuǎn)換為設(shè)備對(duì)象的硬件配置文件及其內(nèi)部實(shí)現(xiàn),無論它們基于什么通信協(xié)議。圖13是客戶端應(yīng)用程序執(zhí)行的檢索與設(shè)備對(duì)象相關(guān)聯(lián)的json模式文檔(m280)的動(dòng)作的流程圖。在本發(fā)明所提供的一個(gè)實(shí)施例中,web服務(wù)api抽象層,統(tǒng)一xml或所有類型的數(shù)據(jù)到j(luò)son。設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)將接收到的數(shù)據(jù)轉(zhuǎn)換為json,使用json模式驗(yàn)證api數(shù)據(jù)。使用httpurl應(yīng)用程序解析api數(shù)據(jù)模式的json指針,完整解析后的模式前端可見,可以創(chuàng)造出動(dòng)態(tài)生成的表單和測(cè)試工具。統(tǒng)一的web服務(wù)api規(guī)范放在設(shè)備驅(qū)動(dòng)程序里,可以是靜態(tài)文件,也可以從服務(wù)發(fā)現(xiàn)的結(jié)果里動(dòng)態(tài)生成的。讓客戶端看到api規(guī)范后可以生成相應(yīng)的訪問代碼。在我們的發(fā)明中,如果其抽象api調(diào)用的任何參數(shù)是復(fù)雜類型,則每個(gè)設(shè)備對(duì)象必須攜帶與其應(yīng)用配置文件(圖5中的m110)一起的json模式文檔。當(dāng)調(diào)用設(shè)備的抽象api(圖6中的m182a)時(shí),復(fù)雜類型的實(shí)際數(shù)據(jù)可以是json數(shù)組或json對(duì)象。此json模式文檔(m280)包含設(shè)備抽象api(圖6中的m182a)公開的所有復(fù)雜類型數(shù)據(jù)的詳細(xì)定義。在設(shè)備的應(yīng)用配置文件(圖6中的m110)中,在“服務(wù)狀態(tài)表”(圖6中的m192)內(nèi)部,映射到設(shè)備的抽象api(m182a)的特定復(fù)雜類型參數(shù)的變量定義包括json指針字符串,它引用了json模式文檔(m280)中的子模式定義??蚣軐⒃谶\(yùn)行時(shí)取消引用此json指針,以驗(yàn)證復(fù)雜類型的輸入和輸出數(shù)據(jù)??蛻舳藨?yīng)用程序可以從框架的restfulapi接口(m310)檢索與該json指針相關(guān)聯(lián)的子模式定義,以用于預(yù)處理和驗(yàn)證目的。例如,客戶端應(yīng)用程序可以根據(jù)變量的模式定義在其用戶界面上自動(dòng)生成輸入表單。當(dāng)處理設(shè)備操作api調(diào)用或事件更新數(shù)據(jù)時(shí),軟件框架將根據(jù)其簡單的類型和模式定義驗(yàn)證所有簡單和復(fù)雜的類型數(shù)據(jù)。圖14是根據(jù)本發(fā)明的由客戶端應(yīng)用程序,軟件框架在與智能設(shè)備進(jìn)行事件訂閱和接收事件更新的交互中執(zhí)行動(dòng)作的實(shí)例流程圖。在發(fā)現(xiàn)過程之后,設(shè)備對(duì)象將注冊(cè)到軟件框架??蛻舳藨?yīng)用程序可以通過調(diào)用軟件框架的事件訂閱api接口來訂閱(p80)設(shè)備事件更新。訂閱信息包含感興趣的設(shè)備和用于接收事件更新的訂戶的地址。在接收到事件訂閱請(qǐng)求之后,軟件框架將請(qǐng)求分派到各個(gè)設(shè)備對(duì)象。設(shè)備對(duì)象將向其設(shè)備驅(qū)動(dòng)程序發(fā)送(p82)請(qǐng)求。在運(yùn)行時(shí)間期間,如果從智能設(shè)備生成任何事件更新,則將事件數(shù)據(jù)(p84)發(fā)送到其設(shè)備驅(qū)動(dòng)程序。在接收到事件數(shù)據(jù)后,設(shè)備驅(qū)動(dòng)程序?qū)⒄{(diào)度(p86)到由軟件框架管理的設(shè)備對(duì)象。軟件框架將比較新事件數(shù)據(jù)與設(shè)備對(duì)象的內(nèi)部緩存值,其可以從先前的動(dòng)作調(diào)用或事件更新中獲取。如果有變化,軟件框架將向其訂閱者廣播(p88)事件更新。此外,如果動(dòng)作api調(diào)用改變?nèi)纭胺?wù)狀態(tài)表”(圖6中的m192)中定義的任何設(shè)備狀態(tài),軟件框架將會(huì)意識(shí)到這一點(diǎn),因?yàn)樗鼘⑦@些狀態(tài)緩存在其存儲(chǔ)器內(nèi)。在這種情況下,軟件框架還向其訂戶廣播事件更新。盡管本文已經(jīng)描述了本發(fā)明的優(yōu)選實(shí)施例,但是本領(lǐng)域技術(shù)人員將理解,在不脫離本發(fā)明的精神或所附權(quán)利要求的范圍的情況下,可以對(duì)其進(jìn)行變化。當(dāng)前第1頁12當(dāng)前第1頁12