廖 競,李愛萍,段利國
(太原理工大學 信息與計算機學院,山西 晉中 030600)E-mail:646357406@qq.com
近年來,隨著短距無線傳感技術以及傳感器微型化技術的不斷成熟,越來越多的智能設備正慢慢融入人們的日常生活[1],其中以智能家居領域最為明顯.溫濕度傳感器、掃地機器人、搭載安卓系統的電視等智能設備正逐漸出現我們的臥室、客廳里.但目前而言,這些智能設備間仍舊存在互操作性差,服務模式單一等問題.不同傳輸協議、不同廠家設備間設備通訊困難,同時設備無法很好地完成與住戶之間的互動,不能為用戶提供針對性服務方案.
針對上述問題,文獻[2,3]介紹了搭載Wi-Fi或ZigBee單一協議設備間信息交互的方式;文獻[4,5]采用web服務協議精簡子集(Devices Profile For Web Service,DPWS)、通用即插即用(Universal Plug And Play,UPnP)這類服務化架構來組織家庭環境中的智能設備;文獻[6,7]分別采取不同的方式將細粒度服務組合起來以滿足不同場景下的粗粒度服務需求.
綜合以上文獻,本文首先介紹設備適配器(Device Adapter,DA)這一中間件,DA接收來自不同協議的信號并且解碼出其中JSON格式的數據傳遞給上層.進而介紹一種基于SOA的家居服務架構(Serviced Architecture in Home,SAH),SAH參考了OSI層次模型,自底向上依次為設備感知層、服務資源層、原子服務層、復合服務層以及應用層,分別對應著家居環境中的智能設備、設備資源、原子服務、粗粒度服務以及面向開發者的應用,將異構的智能設備有效地管理起來,極大的擴充了不同協議間設備的交互手段,提高了居住者的日常居住體驗.
從市場的角度來看,目前市面上的智能家居產品采用的通信協議大多是如下三種:ZigBee、Bluetooth以及Wi-Fi.ZigBee協議由IEEE 802.15.4標準所規定,屬于低功耗無線個域網.組網方式包括主從結構的星狀網、簇狀網以及網狀網,功耗極低且響應速度快;Bluetooth協議由IEEE 802.15.1標準所規定,工作在2.4GHz的通訊頻段,組網方式包括由一個主設備和多個從設備組成的微微網以及多個微微網在時間和空間上互相重疊組成的散射網,全球范圍適用且具有很好的抗干擾能力;ZigBee、Bluetooth都各自擁有完整的一套協議棧,而Wi-Fi指的是以無線信道作為傳輸媒介的計算機局域網,它是無線通信、計算機網絡技術相結合的產物,是有線聯網方式的重要補充和延伸.Wi-Fi由IEEE 802.11標準所規定,擁有傳輸速率快、適用范圍廣等特點.目前常見的通信協議對比見表1[8].
近些年來,眾多互聯網廠商在移動領域互相競爭,使得移動設備市場已然成為一片紅海,于是許多廠商將目光放在了剛剛起步的白色家電市場.Google在2014年收購智能家居廠商Nest并于2016年發布智能音響Google Home.同樣在2014年,亞馬遜發布智能音響Echo,其內置了一款語音助手Alexa,并于2018年發布了十多款基于Alexa的智能家居設備.國內,小米公司最早于2013年涉足智能家居領域,如今已擁有智能音響、掃地機器人、智能電視等幾十件家居設備.與此同時,傳統白色家電廠商也不落人后,海爾U-Home、美的M-Smart也是行業有力的競爭者.然而百花齊放的智能家居領域卻給普通消費者帶來了困擾,同一平臺的設備可以通過應用程序有條件地進行聯動,而不同平臺間設備間信息共享目前尚未實現.但倘若智能家居環境下存在統一“接口”,一定會給居住者在消費選擇、住居體驗等方面帶來極大的提升.
Device Adapter接收來自不同通信協議的信號,并將其中JSON格式的信息解碼后遞交上層以及對上層分發下的數據進行對應性封裝.因此,針對目前主流的三種通訊方式,DA集成了藍牙模塊、ZigBee模塊以及Wi-Fi模塊,藍牙和ZigBee協議擁有各自的協議棧,如圖1所示,Wi-Fi作為有線聯網的擴充,發送和接收載體均為IP包,工作在OSI模型的物理層和鏈路層.未來家居環境可能會誕生越來越多的應用場景,與之伴隨而來的是更多適應不同場景的通訊方案.此時只需要增添新的通訊模塊,按照統一的消息格式收發信息便可,極大的增強了可擴展性.

圖1 Bluetooth及ZigBee協議棧Fig.1 Bluetooth and ZigBee protocol stack
為了保障系統的穩定運行,DA需要和家居環境中的設備“約定”好信息的收發格式.為此,JSON消息中的第一項便是Type類型,Type定義有五種類型,Ack、Action、Aloha、Bye以及Hello.其中Ack消息用來答復Action消息和Hello消息,分別表示動作已經執行以及設備還在家庭網絡中;Action消息表動作,家庭設備向DA提交服務請求、DA向設備發出服務執行命令都通過Action消息,設備在完成服務響應后向DA回復Ack消息;當設備第一次加入家庭局域網時向DA發送Aloha消息,消息中應包括能夠描述該設備的一系列資源實體,如一臺臺燈的資源實體應有亮度、色溫、固件版本等等,設備實體與資源實體間的映射是REST思想的重要體現;與之對應的,當設備主動離開局域網時,比如手機等遷入遷出動作十分頻繁的設備,應主動給DA發送Bye消息;由于家居網絡的動態變化性,DA應確保完成服務動作的設備還處于家庭網絡中,所以DA會固定一段時間向全網廣播Hello消息,收到Hello消息的設備應回復Ack消息.各消息使用場景如圖2.

圖2 各消息使用場景Fig.2 Message usage scenario
DPWS、UPnP這類分布式協議,消息可以通過多跳的方式到達任意節點,服務響應速度快,但其對每一個結點的硬件要求較高,比較適合大面積區域下的網絡布控,不太適合用于家庭智能設備的管理,但卻為不同種類、不同品牌間設備的交互提供了一個可行的思路,那就是服務化.服務化帶來了可替換性和獨立性.可替換性強調了不唯一性,而獨立性表示接口可以獨立于具體實現服務的硬件平臺、操作系統和編程語言.這兩個特性正好契合智能家居這一場景,可以解決不同廠商、不同種類設備的互操作性問題[9].

圖3 SAH協議架構Fig.3 SAH protocol architecture
基于上述充分性論述,本文提出一個基于服務化的家居服務框架SAH,從下至上,依次是設備感知層、服務資源層、原子服務層、復合服務層以及應用層,協議架構如圖3所示.協議運行在包含有DA的中心網關上,所有的設備進入家庭局域網中都須到該中心網關注冊.設備感知并監測著家中各種物理狀態量的改變,并通過無線傳輸技術“告知”中心網關,再由中心網關統一管理與調配.顯然,SAH摒棄了DPWS、UPnP這類P2P組織架構,采用星型拓撲結構,極大降低除中心節點外其他節點的硬件要求,更加適應家居環境這樣小范圍的服務請求與響應.
設備感知層用來感知家庭環境中存在的各色設備,為上層提供可靠的設備信息.其中,注冊模塊用來管理新加入的設備;當設備無響應或是主動退出時,需要更新模塊將該設備修改為失活狀態;由于家居環境設備遷入遷出頻繁,若一段時間內遷出后的設備再次注冊時,根據設備MAC地址等唯一標識可將設備直接恢復至遷出時的狀態;若設備長時間未重連,則會調用刪除模塊.刪除模塊用來移除一段時間內無響應的設備;當服務需求得到調用時,需由執行模塊向特定的設備發出Action信號.各模塊的業務流程見圖4.

圖4 設備感知層實現Fig.4 Implement of equipment perception layer
服務資源層是對設備的進一步抽象,通過設備注冊時發送的Aloha消息,將設備抽象成多個資源實體.傳統Web服務中,由于服務需求粒度不一,服務間往往伴隨著高耦合,擴展性差等困難,而將設備實體抽象成為一個個資源實體后,利用資源間的天然劃分來降低系統的耦合,使得系統更加輕量級,同時帶來了更高的擴展性.將設備以資源劃分也是REST架構的核心[10].以臺燈為例,臺燈的亮度、色溫、開關狀態這些可調節的參數可以是資源,臺燈的固件版本、設備制造商仍可以算是一種資源,見圖5.這些資源通過統一資源標識符(Uniform Resource Identifier,URI)來描述和定位.URI地址應由設備感知層設備地址和資源描述組成,且具有一定的描述性.類似于/kitchen/temperature_sensor1/temperature這一URI,可以大致確定這個地址是廚房1號溫度傳感器的溫度資源,同時也可以通過這個URI唯一地確定這一資源.

圖5 臺燈和其資源Fig.5 Table lamp and its resources
設備感知層和服務資源層分別給上層提供了可靠的設備和資源,資源和HTTP請求方法組成了服務的最小顆粒——原子服務.傳統Web服務往往過分依賴POST方法[11],將額外的服務信息放入URI中,具體服務要求則放入服務請求體中,而REST實現架構倡導最大限度的復用HTTP請求方法,通過URI和方法間語義組合來表示服務信息.比如在刪除購物車中商品這一服務請求上,電商京東和豆瓣的處理方式截然不同,京東采用傳統實現架構,采用POST方法去訪問removeSkuFromCart.action這一動作,將商品信息放在URI之后同時將“刪除”這一語義信息放在服務請求體中.而豆瓣采用REST實現架構,在刪除商品時,直接復用HTTP方法中的DELETE方法,訪問地址為cart/items/142411這一資源,同樣完成了刪除商品這一服務請求,降低語義理解的復雜度,同時使系統更為輕量級,真實實驗場景所獲取的數據如圖6所示.SAH采用REST實現架構,將服務資源層中的資源與常用的HTTP請求方法如PUT、GET、POST和DELETE組合,得到一個最細粒度的原子服務,同時這一服務對應著一份服務描述文本.如“獲取廚房溫度傳感器的溫度”這一描述文本便對應著/kitchen/temperature_sensor1/temperature以及GET.服務描述文本是服務語義化的表示,用來將服務特征化,可用來作為服務查詢、服務匹配、服務間信息挖掘的依據.

圖6 不同實現架構下的請求Fig.6 Requests under different implementation architectures
復合服務層這層對應著更加粗粒度的服務.通過對已存在的原子服務間執行順序、執行邏輯以及執行場景的調整來形成更為粗粒度的服務,由此達到服務增值這一目標.日常生活中的服務需求往往是粗粒度的,如“回到家”服務可能是打開臺燈、打開電視、關閉掃地機器人等一系列原子服務之間的組合.服務組合通常可分為兩種:服務編制和服務編排[12].服務編制指的是原子服務在中央協調器的協調下依次被調用;服務編排指的是原子服務在確定的業務流程下相互協作形成完整的粗粒度服務.SAH采用服務編排的方式,讓用戶通過技術性工具生成工作流腳本,再將生成的工作流傳到工作引擎上.
應用層為應用程序提供服務,智能家居中運行的種種軟件均運行在這一層.應用層面向開發者,當開發者需要構建一個新的應用時,可以通過調用服務容器中的眾多服務來構建.應用層是消費者所能直接交互的一層,也是決定用戶體驗最重要的一層.
本次實驗由一塊ESP8266微芯片,一條WS2818B燈帶,運行安卓的智能手機以及一臺個人PC共同完成.ESP8266搭載了一塊32位Tensilica處理器以及Wi-Fi模塊,WS2818B則是由三通道控制專用電路驅動的LED燈帶,ESP8266和WS2818B組合起來充當家庭網絡中的Wi-Fi設備;個人PC由于同時搭載藍牙以及Wi-Fi模塊,充當SAH中心網關;智能手機通過藍牙的方式向中心網關發出更改燈帶開啟關閉狀態、調整亮度的服務請求,通過個人PC在服務庫里匹配查詢后發送給ESP8266并通過WS2818B燈帶展示出來,由此完成服務請求、服務響應的閉環.實驗效果圖如圖7所示.

圖7 藍牙和Wi-Fi設備Fig.7 Bluetooth and Wi-Fi devices
本文針對當前智能家居環境下智能設備間存在互操作性差,服務模式單一等問題,提出了一種基于SOA的多協議家居平臺架構SAH,采用分層架構將復雜的家居場景抽象成一個個服務需求,服務需求由許多粒度相同的元服務編排組合而成,同時每個元服務都對應著不同的資源,資源由不同的設備硬件所提供.自頂向下,逐步將抽象的住戶需求具象化;自底向上,通過設備中間件屏蔽不同通信協議的差異.每個設備所提供的資源通過與復用的HTTP協議組合成為細粒度的原子服務,原子服務通過互相組合、編排形成更加通用的服務庫,供頂層應用層調用.實驗證明,SAH能很好的屏蔽底層通信協議,為居住者提供一個服務構建迅速、個性化、居住體驗良好的智能家居環境.目前SAH以人工的方式提供服務編排,仍需要較多的用戶參與,日后通過基于上下文、語義的服務編排,抑或是采用基于神經網絡(Neural Network,NN)的狀態預測[13],將整個過程半自動化甚至自動化處理,便能進一步勾勒出理想中的智能家居圖景.