北京郵電大學(xué) 北京 100876
智能家居是以住宅為平臺,兼?zhèn)浣ㄖ?、網(wǎng)絡(luò)通信、信息家電、設(shè)備自動化,集系統(tǒng)、結(jié)構(gòu)、服務(wù)、管理為一體的高效、舒適、安全、便利、環(huán)保的居住環(huán)境。它能夠利用綜合布線技術(shù)、智能家居系統(tǒng)設(shè)計方案、網(wǎng)絡(luò)通信技術(shù)、自動控制技術(shù)、音頻視頻技術(shù)、安全防范技術(shù)等將與家居生活有關(guān)的設(shè)施有機(jī)地結(jié)合在一起,構(gòu)建一個高效的住宅設(shè)施與家庭日程事務(wù)的管理系統(tǒng)[1]。
物聯(lián)網(wǎng)(Internet of Things,IoT)是在信息社會中基于已有的以及發(fā)展中的相互協(xié)作的信息和通信技術(shù),利用物理上或虛擬互聯(lián)的物體提供高層服務(wù)的全球性網(wǎng)絡(luò)[2]。而住宅的封閉性則非常適于局域網(wǎng)絡(luò)的搭建,實現(xiàn)特定區(qū)域內(nèi)的物聯(lián)網(wǎng)。近年來,基于IoT技術(shù)的智能家居系統(tǒng)發(fā)展迅猛,特別是2014年,隨著谷歌公司收購Nest和蘋果公司推出HomeKit智能家居平臺,智能家居再次成為IoT產(chǎn)業(yè)的焦點。目前,制約智能家居系統(tǒng)普及的重要原因之一是接入設(shè)備眾多卻無統(tǒng)一標(biāo)準(zhǔn),造成不同設(shè)備間難以互聯(lián)互通,更難實現(xiàn)聯(lián)動控制和綜合服務(wù)。盡管很多設(shè)備制造商正逐步開放其設(shè)備訪問操作接口API,很多智能設(shè)備管理平臺也提供開放接口,但設(shè)備之間、設(shè)備與用戶之間的互操作問題依然是智能家居系統(tǒng)面臨的一個重大考驗。
本文提出一種面向場景服務(wù)的智能家居中間件系統(tǒng),該系統(tǒng)采用基于腳本解析的通用API適配技術(shù),可將不同通信方式、不同操作接口標(biāo)準(zhǔn)的家電設(shè)備接入智能家居網(wǎng)絡(luò)中,進(jìn)行統(tǒng)一控制;同時,系統(tǒng)通過對服務(wù)規(guī)則的形式化描述,提供用戶自定義規(guī)則與場景的功能,能夠讓用戶對多個設(shè)備操作進(jìn)行組合,并利用時間或環(huán)境條件加以限定,實現(xiàn)智能化的環(huán)境控制。
智能家居系統(tǒng)通常由三部分構(gòu)成:智能控制終端、智能家電設(shè)備和智能家居網(wǎng)關(guān)。其中,智能控制終端包含智能手機(jī)、平板電腦、個人電腦等常用電子產(chǎn)品,其作用相當(dāng)于“遙控器”,用戶可以借助與系統(tǒng)配套的應(yīng)用程序APP進(jìn)行遠(yuǎn)程操作,實現(xiàn)對家電設(shè)備的控制、對居家環(huán)境的觀測、對異常情況的監(jiān)察等功能。
智能家電設(shè)備通常意義上指具有智能控制功能的家電設(shè)備,相比于傳統(tǒng)家電,智能家電設(shè)備往往在設(shè)計之初就預(yù)留了智能控制的接口。例如很多智能電視提供了網(wǎng)絡(luò)(IP、串口)控制的指令接口;一些智能空調(diào)更是自帶相應(yīng)的手機(jī)APP,實現(xiàn)智能化控制。傳統(tǒng)家電可以通過附加智能控制器的方式進(jìn)行智能化改造,例如只能接收紅外信號的家電,只需要安裝一個Wi-Fi轉(zhuǎn)紅外的轉(zhuǎn)換模塊,即可通過Wi-Fi實現(xiàn)對家電的控制。
除此之外,智能家電設(shè)備還包括一些專門負(fù)責(zé)采集環(huán)境數(shù)據(jù)的感知器節(jié)點。這類設(shè)備僅對環(huán)境的狀態(tài)如光照、濕度等進(jìn)行數(shù)據(jù)采集和上報,但不會對環(huán)境產(chǎn)生直接影響,而是結(jié)合用戶所制定的規(guī)則與場景,配合智能家電設(shè)備,實現(xiàn)對環(huán)境的調(diào)節(jié);因此,這些感知器也可以被內(nèi)置于空調(diào)、智能溫度計等設(shè)備當(dāng)中。
智能家居網(wǎng)關(guān)不僅為智能家電設(shè)備提供網(wǎng)絡(luò)通信接口,還可以成為智能家居系統(tǒng)的控制中心。一方面,它可以為智能控制終端提供數(shù)據(jù)訪問與操作控制接口,向用戶呈現(xiàn)相關(guān)的數(shù)據(jù)信息以及將用戶的控制命令轉(zhuǎn)發(fā)至相應(yīng)設(shè)備;另一方面,它可以對所有接入設(shè)備進(jìn)行統(tǒng)一管理,并通過提供用戶自定義規(guī)則與場景的功能讓用戶對多個設(shè)備操作進(jìn)行組合,并利用時間或環(huán)境條件加以限定,實現(xiàn)個性化、自動化的環(huán)境控制。
工信部在2012年2月發(fā)布的《物聯(lián)網(wǎng)“十二五”發(fā)展規(guī)劃》中指出“物聯(lián)網(wǎng)已成為當(dāng)前世界新一輪經(jīng)濟(jì)和科技發(fā)展的戰(zhàn)略制高點之一,發(fā)展物聯(lián)網(wǎng)對于促進(jìn)經(jīng)濟(jì)發(fā)展和社會進(jìn)步具有重要的現(xiàn)實意義”[3]。智能家居作為物聯(lián)網(wǎng)的重要新興產(chǎn)業(yè)之一,將得到資金、資源、技術(shù)、政策等多個方面的重點扶持,在用戶需求的激勵和國家政策的支持下,智能家居將進(jìn)入一個前所未有的快速發(fā)展階段。國際物聯(lián)網(wǎng)貿(mào)易與應(yīng)用促進(jìn)協(xié)會在2014年1月發(fā)布的《2013年度中國智能家居行業(yè)研究報告》中顯示,未來三年,中國智能家居市場增速不斷提升,到2016年預(yù)計可達(dá)到29.17%,預(yù)測2017年中國智能家居行業(yè)市場規(guī)模將達(dá)80億元。
智能家居行業(yè)的巨大發(fā)展?jié)摿σ参吮姸鄰S商。2014年1月15日,谷歌宣布32億美金收購了美國的智能家居設(shè)備制造商N(yùn)est Labs;京東投資智能家居解決方案服務(wù)商BroadLink,并推出智能家居控制產(chǎn)品;2014年3月,小米公司的智能路由器開始內(nèi)測,意圖成為智能家居的控制中心;2014年3月17日,美的與阿里巴巴簽署戰(zhàn)略合作協(xié)議,制造智能家電的同時,構(gòu)建基于阿里云的物聯(lián)網(wǎng)開放平臺;2014年6月3日,蘋果公司在其全球開發(fā)者大會上發(fā)布HomeKit智能家居平臺,打造一個使用“通用協(xié)議”的多設(shè)備連接、管理平臺,以提升設(shè)備互聯(lián)的便捷性。同時,終端廠家為了使產(chǎn)品可以接入更多的系統(tǒng),開放操作API已成為一種趨勢。
從提供整套解決方案的傳統(tǒng)智能家居系統(tǒng)Control4,到提供單一解決方案的飛利浦Hue Light(照明系統(tǒng))和Nest Labs(溫控系統(tǒng)),再到提供智能終端設(shè)備的家電廠商和提供現(xiàn)有終端設(shè)備控制器的BroadLink,我們可以看出各個廠商都在從不同角度入手占領(lǐng)市場份額。集成了路由器功能的智能家居網(wǎng)關(guān)尤其受到青睞,其作為客廳入口和智能控制中心已經(jīng)成為智能家居行業(yè)的一個重要切入點。
1) 便利性。智能家居系統(tǒng)首先要能夠為用戶提供便利的服務(wù),實現(xiàn)隨時隨地的控制。無論在家中或在戶外,無論即時還是預(yù)定,無論人工操作還是自動觸發(fā),用戶均能以簡單的操作完成對家居環(huán)境的智能調(diào)控。同時提供復(fù)雜場景的編程功能,一次編輯,隨后一鍵操作。
2) 兼容性。采用新技術(shù)的家居產(chǎn)品層出不窮,接口標(biāo)準(zhǔn)難以統(tǒng)一,設(shè)備間互操作性差,需要智能家居網(wǎng)關(guān)提供有效方法連接并打通接口各異的各種設(shè)備,并以邏輯設(shè)備的形式向用戶提供統(tǒng)一操控接口。
3) 穩(wěn)定性。智能家居系統(tǒng)中所有設(shè)備通過網(wǎng)絡(luò)與智能家居網(wǎng)關(guān)連接,因此,網(wǎng)絡(luò)的穩(wěn)定性將左右整個系統(tǒng)的運行狀態(tài)。系統(tǒng)要保障通信通道的暢通,保證設(shè)備始終處于已連接的可控狀態(tài),使得用戶發(fā)出的指令能夠正確執(zhí)行。
4) 安全性。智能家居系統(tǒng)中不僅涉及到常用智能家電設(shè)備,還包括智能感知節(jié)點,可以采集環(huán)境數(shù)據(jù),并以數(shù)值、圖像、音頻、視頻等格式進(jìn)行存儲,因此,可能包含大量的隱私信息,智能家居系統(tǒng)必須保證用戶信息不外泄。
上述特點中,便利性與兼容性是首先要解決的兩個重要問題。本文研究的智能家居中間件系統(tǒng)針對這兩方面的需求提出解決方案。
智能家居服務(wù)中間件系統(tǒng)是對現(xiàn)有家庭網(wǎng)關(guān)的智能化提升,使之不僅可以支持更多的通信方式和更多種類的設(shè)備,而且可以支持復(fù)雜的規(guī)則處理與場景設(shè)置,從而實現(xiàn)不同設(shè)備間的聯(lián)動與自動化控制。智能家居服務(wù)中間件系統(tǒng)的功能結(jié)構(gòu)如圖1所示,主要包括通信管理、數(shù)據(jù)收發(fā)、事件驅(qū)動引擎、規(guī)則解析、驅(qū)動腳本解析和消息處理等模塊,以及設(shè)備與規(guī)則數(shù)據(jù)庫、設(shè)備驅(qū)動API腳本庫。
圖1 網(wǎng)關(guān)系統(tǒng)功能結(jié)構(gòu)圖
設(shè)備與規(guī)則數(shù)據(jù)庫中存貯聯(lián)入網(wǎng)關(guān)的設(shè)備信息、用戶自定義的自動控制規(guī)則、場景模式和環(huán)境監(jiān)測數(shù)據(jù)。設(shè)備驅(qū)動API腳本庫中以xml文件形式存貯了每種設(shè)備每個操作所對應(yīng)的指令A(yù)PI,家居系統(tǒng)增加一種新類型的設(shè)備,只需加載一個新的設(shè)備驅(qū)動API腳本文件即可。
通信管理模塊負(fù)責(zé)維護(hù)各種設(shè)備與網(wǎng)關(guān)的網(wǎng)絡(luò)連接,數(shù)據(jù)收發(fā)模塊負(fù)責(zé)通信協(xié)議轉(zhuǎn)換,從而實現(xiàn)不同通信接口的消息格式與內(nèi)部統(tǒng)一消息格式的轉(zhuǎn)換,完成基礎(chǔ)網(wǎng)關(guān)功能。
事件驅(qū)動引擎是服務(wù)中間件的核心模塊,它通過規(guī)則解析模塊分析用戶自定義規(guī)則或場景的觸發(fā)條件和操作目標(biāo),自動檢測環(huán)境數(shù)據(jù)的變化是否滿足這些觸發(fā)條件,如果滿足條件,則根據(jù)操作目標(biāo)的設(shè)備類型選擇對應(yīng)的驅(qū)動腳本API文件,自動解析API指令,并通過數(shù)據(jù)收發(fā)模塊將指令發(fā)給對應(yīng)的設(shè)備。
消息處理模塊是服務(wù)中間件向智能控制終端提供的開放接口模塊,通過Rest風(fēng)格的Web服務(wù)接口,用戶可以向系統(tǒng)添加設(shè)備、加載驅(qū)動腳本、設(shè)置服務(wù)規(guī)則和場景、發(fā)布控制命令、獲取環(huán)境數(shù)據(jù)等。
下面將重點介紹基于腳本解析的通用API適配機(jī)制、服務(wù)規(guī)則的形式化描述方法和基于事件驅(qū)動的規(guī)則執(zhí)行引擎。
大量廠商進(jìn)入智能家居市場導(dǎo)致的后果是各個廠家的智能設(shè)備依照自己的標(biāo)準(zhǔn)設(shè)計制造,無法進(jìn)行統(tǒng)一,智能家居系統(tǒng)無法對其進(jìn)行兼容;因此,我們設(shè)計了一種基于腳本解析的通用API適配方法。每添加一種新的品牌設(shè)備,只需加載一個新的設(shè)備驅(qū)動腳本文件;之后再添加一個該品牌的新設(shè)備,只需選擇其相應(yīng)類型的驅(qū)動腳本文件,隨后,網(wǎng)關(guān)會對該類型的驅(qū)動腳本進(jìn)行解析,依照腳本內(nèi)容進(jìn)行相應(yīng)處理;因此,對于同類型的設(shè)備只需要選擇同樣的腳本文件,不必進(jìn)行重復(fù)加載;對于新類型的設(shè)備,只需按照驅(qū)動模板編寫一個新的類型驅(qū)動腳本,不必在網(wǎng)關(guān)中進(jìn)行復(fù)雜的設(shè)置。這種方法在很大程度上能夠解決網(wǎng)關(guān)的兼容性問題。驅(qū)動腳本文件包括設(shè)備信息配置和功能函數(shù)描述兩部分。
設(shè)備信息配置包含設(shè)備類型、通信方式、控制命令集、設(shè)備變量集、觸發(fā)事件集等信息。
1) 設(shè)備類型與通信方式。不同設(shè)備具有不同的通信方式,需要配置相應(yīng)的通信參數(shù)。例如IP通信,需要配置通信端口; Zigbee通信,需要設(shè)置默認(rèn)MAC地址;而串口等其它通信方式,則根據(jù)設(shè)備需要進(jìn)行相應(yīng)設(shè)置。
2) 控制命令集。不同設(shè)備提供不同的操作,例如燈光操作可有開、關(guān)、調(diào)亮、調(diào)暗,空調(diào)操作有設(shè)定溫度、制冷、制熱等,各個廠商在同類設(shè)備上可進(jìn)行的操作有很大的相似性;因此,我們根據(jù)設(shè)備類型,在腳本中配置該種設(shè)備的控制命令的最大集合,保證支持大部分操作。
3) 設(shè)備變量集。部分智能設(shè)備在接收控制命令后會就自身狀態(tài)給出反饋,感知設(shè)備也會收集環(huán)境數(shù)據(jù)進(jìn)行上報。為了記錄這些信息,我們引入變量,在腳本中設(shè)置設(shè)備相關(guān)的變量、類型與初始值,用于狀態(tài)描述。如燈光設(shè)備的變量為亮度,空調(diào)設(shè)備的變量包括溫度、模式、風(fēng)速等。
4) 觸發(fā)事件集。腳本中還預(yù)留了一部分事件接口,以事件驅(qū)動的方式執(zhí)行事件內(nèi)容,以實現(xiàn)設(shè)備的直接控制、設(shè)備之間的聯(lián)動、感知設(shè)備的環(huán)境觸發(fā)等功能。
驅(qū)動腳本中的功能函數(shù)描述部分主要描述設(shè)備控制命令的適配方法。即使對于同樣的操作(如打開電器),不同設(shè)備接受的API數(shù)據(jù)格式也不同,因此,針對每種控制命令,其功能函數(shù)部分將描述如何將控制命令參數(shù)轉(zhuǎn)化為規(guī)定格式的數(shù)據(jù)包,并通過預(yù)先建立的通信線路發(fā)送至設(shè)備。針對接收設(shè)備反饋或接收監(jiān)測數(shù)據(jù)的命令,功能函數(shù)部分將描述如何對接收數(shù)據(jù)包解析,并寫入數(shù)據(jù)庫或觸發(fā)相應(yīng)事件等操作。
在智能家居環(huán)境中,用戶不僅希望對家電設(shè)備進(jìn)行遠(yuǎn)程操控,也希望能夠?qū)崿F(xiàn)定時等自動服務(wù),只需要預(yù)先設(shè)置好參數(shù),不必親自動手也可以營造出想要的居家環(huán)境。比如在下班回到家后只需要開啟回家模式,客廳燈光會自動亮起,CD機(jī)開始播放音樂,熱水器也開始運轉(zhuǎn),所有操作只需一鍵。又或者在炎炎夏日,當(dāng)室內(nèi)溫度超過25攝氏度,空調(diào)就會自動打開,省去人工步驟。這就是服務(wù)規(guī)則和自定義場景的作用。
為便于規(guī)則的管理與執(zhí)行,本文參考了“事件—條件—動作”(ECA)模型來描述服務(wù)規(guī)則。ECA模型常被引入智能家居系統(tǒng)用于規(guī)則的描述與沖突檢測[4-5]。其語義為當(dāng)事件發(fā)生時,觸發(fā)對條件的評估,若條件成立,觸發(fā)動作的執(zhí)行[6]。在智能家居系統(tǒng)中,我們規(guī)定:一條服務(wù)規(guī)則是一個實現(xiàn)在特定條件下對設(shè)備的操作,而自定義場景是一條或多條服務(wù)規(guī)則的組合。例如我們希望在就寢時關(guān)燈,起床時打開窗簾。此時只需定義兩條規(guī)則,可分別執(zhí)行;同時可以將其組合為一個場景,實現(xiàn)一鍵操作。
服務(wù)規(guī)則分為兩類:定時規(guī)則和即時規(guī)則。定時規(guī)則包含時間條件和規(guī)則動作兩部分,而即時規(guī)則僅包含規(guī)則動作。圖2展示了規(guī)則的組成與分類。
圖2 規(guī)則分類與組成
時間條件由多個時間屬性組成,如圖3所示。其中,起始時間和終止時間代表該條規(guī)則的有效期,只有在這兩個時間點之間的時間段內(nèi),時間條件才會被觸發(fā);觸發(fā)時間是24小時制的一個時間點,表示規(guī)則動作部分會在該時間點被觸發(fā);重復(fù)類型表示時間條件可以周期執(zhí)行,分為星期重復(fù)和間隔重復(fù)兩種,相對應(yīng)的,重復(fù)周期表示每周的星期幾或每幾天。
圖3 時間條件組成
規(guī)則動作包括環(huán)境觸發(fā)條件和設(shè)備動作。環(huán)境觸發(fā)條件由若干條件組組成,如圖4所示,條件組內(nèi)可以有若干原子條件。原子條件之間、條件組之間均由一個連接符連接,連接符為“與”或“或”操作。原子條件由三部分組成:變量、邏輯運算符和變量參數(shù),邏輯運算符包括:等于、不等于、大于、大于等于、小于、小于等于。對于用自然語言描述的條件,規(guī)則解析模塊負(fù)責(zé)轉(zhuǎn)換。如條件“當(dāng)燈光亮度大于200lux時”,系統(tǒng)中以{LightLevel, >, 200 lux}的三元組形式記錄。設(shè)備動作由若干設(shè)備與對應(yīng)的設(shè)備操作組成,以{設(shè)備, 動作名稱}的二元組描述。
圖4 環(huán)境條件組成
規(guī)則的執(zhí)行依靠事件驅(qū)動,如“定時時間到”、“場景開啟”、“物理環(huán)境改變”等?;贓CA模型,事件驅(qū)動引擎將分析觸發(fā)條件和操作目標(biāo),如果滿足條件,則根據(jù)操作目標(biāo)的設(shè)備類型選擇對應(yīng)的驅(qū)動腳本API文件,自動解析API指令,并通過數(shù)據(jù)收發(fā)模塊將指令發(fā)給對應(yīng)的設(shè)備。
根據(jù)服務(wù)規(guī)則的定義,觸發(fā)條件可以是場景啟動操作、定時觸發(fā)或變量觸發(fā)。圖5展示了規(guī)則觸發(fā)判定流程。
圖5 規(guī)則觸發(fā)流程圖
當(dāng)用戶執(zhí)行場景啟動命令時,系統(tǒng)查詢該場景所包含的規(guī)則并將之標(biāo)記為有效;若為定時規(guī)則,則交由時間線程處理;若為即時規(guī)則,則觸發(fā)該規(guī)則。
時間線程負(fù)責(zé)定時觸發(fā)的判別,該線程定時遍歷所有定時規(guī)則的時間條件,若規(guī)則有效且當(dāng)前時間與時間觸發(fā)點相符,則觸發(fā)該規(guī)則。
變量監(jiān)測線程負(fù)責(zé)變量觸發(fā),當(dāng)接收到某環(huán)境或設(shè)備變量的數(shù)據(jù)后,該線程查詢所有與該變量相關(guān)的原子條件以及所有包含此原子條件的規(guī)則,若當(dāng)前規(guī)則有效,則觸發(fā)該規(guī)則。
規(guī)則觸發(fā)過程包括環(huán)境條件的判斷以及環(huán)境條件成立時設(shè)備動作的執(zhí)行。環(huán)境條件成立與否依賴于對其包含的所有條件組的判斷。系統(tǒng)首先將條件組轉(zhuǎn)換為析取范式,即將規(guī)則條件拆分為以“或”連接的形式,其中每一個合取子句被稱為原子條件串。然后對同一環(huán)境條件下的原子條件串、同一原子條件串下的原子條件分別進(jìn)行遍歷。對原子條件進(jìn)行解析,根據(jù)當(dāng)前對應(yīng)的變量數(shù)值判斷該原子條件成立與否。若任一原子條件不成立,則該原子條件串不成立。只要任一原子條件串成立,則環(huán)境條件成立。在規(guī)則中未設(shè)置環(huán)境條件以及環(huán)境條件成立的情況下,系統(tǒng)將執(zhí)行預(yù)設(shè)的設(shè)備動作。
如圖6所示,設(shè)備動作執(zhí)行時,首先根據(jù)設(shè)備信息查找其在建立網(wǎng)絡(luò)連接時所產(chǎn)生的句柄,確認(rèn)連接的暢通,用于進(jìn)行數(shù)據(jù)的傳遞。而后根據(jù)控制命令與驅(qū)動腳本中控制命令集的對應(yīng)關(guān)系,通過腳本中的控制命令適配函數(shù),將命令組裝為指定格式。最后將封裝好的數(shù)據(jù)包加入消息隊列,等待發(fā)送至指定設(shè)備。
圖6 設(shè)備動作執(zhí)行流程
本文設(shè)計并實現(xiàn)了一種智能家居中間件系統(tǒng),其主要優(yōu)勢在于采用了通用API適配的方法對不同廠商的不同設(shè)備進(jìn)行設(shè)備管理,提高了兼容性;引入了可進(jìn)行時間、物理環(huán)境條件限定的服務(wù)規(guī)則以及對規(guī)則加以組合形成的場景,簡化了用戶的操作,提高了便利性。下一步將在中間件系統(tǒng)中增加安全管理組件,使之更加實用化。
參考文獻(xiàn)
[1]李成大,張京,倪繼烈.基于ZigBee無線通信技術(shù)的智能家居系統(tǒng)[J].電訊技術(shù),2007,47(5):63-66
[2]ITU-T Y.2060-2012.Overview of the Internet of things[S].Switzerland Geneva:ITU-T,2012
[3]物聯(lián)網(wǎng)“十二五”發(fā)展規(guī)劃[EB/OL].(2012-02-14)[2014-09-07].http://www.gov.cn/zwgk/2012-02/14/content_2065999.htm
[4]Feng W,Turner K.Policy conflicts in home care systems[J].Feature Interactions in Software and Communication Systems IX,2008:54
[5]Ter Beek M H,Gnesi S,Montangero C,et al.Detecting policy conflicts by model checking UML state machines[C]//ICFI.2009:59-74
[6]McCarthy D,Dayal U.The architecture of an active database management system[C]//ACM Sigmod Record.ACM,1989,18(2):215-224