王寧 褚偉
摘 要:物聯(lián)網(wǎng)設(shè)備之間統(tǒng)一的訪問方式和設(shè)備之間的互操作是物聯(lián)網(wǎng)系統(tǒng)實現(xiàn)中必須要考慮的問題。本文利用Alljoyn框架來實現(xiàn)物聯(lián)網(wǎng)中設(shè)備之間的連接和設(shè)備服務(wù)的訪問,并且還在Alljoyn框架的基礎(chǔ)之上,討論了利用語義技術(shù)來實現(xiàn)設(shè)備間的互操作,提高設(shè)備的智能性。
關(guān)鍵詞:物聯(lián)網(wǎng);Alljoyn;語義技術(shù)
1 引言
近年來,隨著科技的進步和人們生活的需要,物聯(lián)網(wǎng)技術(shù)得到了廣泛的應(yīng)用,越來越多的智能設(shè)備出現(xiàn)在了人們的生活當(dāng)中。智能設(shè)備之間相互協(xié)作,為用戶提供基于上下文的和實時的體驗。在物聯(lián)網(wǎng)中,地理位置相近的設(shè)備往往會相互連接、組網(wǎng),形成一個鄰近網(wǎng)絡(luò)。鄰近網(wǎng)絡(luò)可以通過網(wǎng)關(guān)輔助連接、服務(wù)器輔助連接等方式接入互聯(lián)網(wǎng)中,這樣任意鄰近網(wǎng)絡(luò)中的信息可以進入互聯(lián)網(wǎng)中流通,也可以借助于互聯(lián)網(wǎng)訪問任意鄰近網(wǎng)絡(luò)中的設(shè)備或服務(wù)。
在互聯(lián)網(wǎng)中,訪問服務(wù)一般通過域名的方式。這些域名由IANA統(tǒng)一管理,申請域名時會在域名系統(tǒng)中集中注冊,查找域名時會逐層搜索?;ヂ?lián)網(wǎng)采用這種方式是因為互聯(lián)網(wǎng)有較為固定的基礎(chǔ)設(shè)施支撐,服務(wù)信息適合以集中的方式組織起來。另外,互聯(lián)網(wǎng)中服務(wù)信息量相對來說不是特別大。但是在物聯(lián)網(wǎng)環(huán)境中,設(shè)備和服務(wù)非常多,從可擴展性的角度看不適合對所有服務(wù)集中管理,服務(wù)搜索時產(chǎn)生的延時也會比較大。雖然某一鄰近區(qū)域內(nèi)設(shè)備和服務(wù)的數(shù)據(jù)量不是很大,但鄰近網(wǎng)絡(luò)往往是各種各樣的自組織網(wǎng)絡(luò)形式,如車載網(wǎng)絡(luò)、傳感器網(wǎng)絡(luò)等。這些網(wǎng)絡(luò)往往沒有固定的基礎(chǔ)設(shè)施,拓撲結(jié)構(gòu)動態(tài)變化,鏈路狀態(tài)不穩(wěn)定,無法提供一個穩(wěn)定的服務(wù)注冊機構(gòu)來對區(qū)域內(nèi)的服務(wù)集中管理。目前,鄰近網(wǎng)絡(luò)之間的服務(wù)信息一般采用集中注冊的方式,但是在鄰近網(wǎng)絡(luò)中,設(shè)備發(fā)布服務(wù)信息大多采用“推模式”,通過在鄰近區(qū)域內(nèi)廣播自己的服務(wù)信息或者等待服務(wù)請求者的查找來完成服務(wù)信息發(fā)布,形成p2p的服務(wù)網(wǎng)絡(luò)。這種方式不需要穩(wěn)定的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,服務(wù)搜索延遲相對較低。另外,由于整個過程只在鄰近網(wǎng)絡(luò)中進行,有利于信息的安全和隱私的保護。
在物聯(lián)網(wǎng)中,如果想要構(gòu)建可擴展的、智慧的系統(tǒng),鄰近網(wǎng)絡(luò)內(nèi)部和相互之間的設(shè)備互操作性是關(guān)鍵。由于智能設(shè)備功能和產(chǎn)生的數(shù)據(jù)的多樣性和異構(gòu)性,不能夠?qū)χ悄茉O(shè)備的服務(wù)和數(shù)據(jù)進行統(tǒng)一規(guī)范和分類標識。但是,兩個智能設(shè)備之間需要先識別對方是何種設(shè)備和能夠提供哪些服務(wù),然后智能設(shè)備才能進一步的交互和完成功能的調(diào)用。為了解決這些問題,將基于機器可解釋的形式化描述的語義技術(shù)引入物聯(lián)網(wǎng)中,為設(shè)備和服務(wù)添加語義信息,服務(wù)請求者可以通過語義檢索來進行服務(wù)發(fā)現(xiàn)和選擇。
本文基于Alljoyn框架來解決鄰近網(wǎng)絡(luò)中設(shè)備之間的連接和互操作等問題。Alljoyn是一個開源的框架,支持多種通信協(xié)議和目前流行的各種系統(tǒng)平臺。它基于鄰近網(wǎng)絡(luò),采用p2p來發(fā)布服務(wù)信息,支持對設(shè)備和服務(wù)進行描述,通過對描述分析可以了解對方的功能,完成設(shè)備間的互操作。
2 Alljoyn框架
Alljoyn框架是一個開源的軟件系統(tǒng),為運行在不同設(shè)備上的分布式應(yīng)用程序提供運行環(huán)境。它負責(zé)處理在分布式異構(gòu)系統(tǒng)中所面臨的問題和移動網(wǎng)絡(luò)的問題,從而讓開發(fā)人員只需要關(guān)注應(yīng)用程序的構(gòu)建。Alljoyn有幾個關(guān)鍵的部分,分別是Alljoyn Bus,Alljoyn Router,Bus attachment,Bus Interface,Bus object。
Alljoyn Bus是對分布式系統(tǒng)中數(shù)據(jù)鏈路的抽象,為消息傳遞提供了更快速、更簡單的方法。應(yīng)用程序在連上Alljoyn Bus之后就可以和其他的應(yīng)用程序通信,底層的實現(xiàn)機制對應(yīng)用程序來說是透明的。Alljoyn Bus可以分成多個段,每段位于不同的設(shè)備上,Alljoyn負責(zé)管理每個段之間的連接。實際上,每段都是一個Alljoyn Router,一般運行在一個獨立的進程中,負責(zé)支持各種通信協(xié)議,包括藍牙,wifi等。如圖所示,Alljoyn Router之間相互連接和轉(zhuǎn)發(fā)信息,形成了Alljoyn Bus。應(yīng)用程序連接Alljoyn Bus時其實是連接Alljoyn Router,然后向Alljoyn Router請求轉(zhuǎn)發(fā)數(shù)據(jù),最后Alljoyn Router將數(shù)據(jù)轉(zhuǎn)發(fā)至目的地。
應(yīng)用程序通過Bus Attachment連接Alljoyn Router,它封裝了多種進程間通訊方式。連接之后,Alljoyn Bus給每個Bus attachment分配一個唯一的名字,用來區(qū)別不同的應(yīng)用程序。但這名字只是臨時的,每次連接所得到的名字都不相同。應(yīng)用程序可以同時請求一個永久的well-known name,這樣其他的設(shè)備可以通過well-known name 來訪問應(yīng)用程序。在Alljoyn中,應(yīng)用程序以聲明Bus interface的形式向外部提供訪問的接口。Bus interface包含Bus methods,Bus properties,Bus signals。一般情況下Bus interface的實現(xiàn)都是通過Bus attachment中的Bus Object來完成,Bus object代表著應(yīng)用程序所提供的服務(wù)。如圖所示,Alljoyn提供遠程代理ProxyBusObject來訪問遠程的Bus object,ProxyBusObject會負責(zé)相應(yīng)的Bus methods等信息的傳遞 。well-known name與Bus Object的組合可以唯一標識服務(wù)信息。
應(yīng)用程序在連接Alljoyn Bus之后,可以將服務(wù)信息發(fā)布給其他應(yīng)用程序,也可以搜索其他應(yīng)用程序的服務(wù)信息。當(dāng)一個設(shè)備靠近另一個設(shè)備時,由于它們是物理隔離的,不可能知道對方的信息,但是它們需要對方服務(wù)信息才能確定是否訪問服務(wù)。這就是服務(wù)信息發(fā)布和搜索需要完成的功能。
3 智能設(shè)備間的連接
在鄰近網(wǎng)絡(luò)中,設(shè)備之間會相互連接,組成一個通信網(wǎng)絡(luò)來進行數(shù)據(jù)的傳輸。不同的設(shè)備組網(wǎng)方式對設(shè)備的硬件能力和通信協(xié)議等有著不同的要求。目前,市場上的物聯(lián)網(wǎng)設(shè)備采用的底層通信協(xié)議多種多樣,每個通信協(xié)議在相應(yīng)的領(lǐng)域廣泛應(yīng)用。各個通信協(xié)議之間并沒有出現(xiàn)相互統(tǒng)一的趨勢,這意味著多種協(xié)議并存的現(xiàn)象在未來很長的一段時間內(nèi)一直存在。相同通信協(xié)議的設(shè)備通訊時直接建立連接即可,但是當(dāng)周圍有不同通信協(xié)議的設(shè)備存在時,兩個設(shè)備建立連接需要進行協(xié)議的轉(zhuǎn)換。在物聯(lián)網(wǎng)中,設(shè)備被賦予的計算能力和通信能力也是有差異的。有些設(shè)備只是做簡單的數(shù)據(jù)采集和數(shù)據(jù)上傳工作,數(shù)據(jù)量小,對硬件的需求低。有些設(shè)備需要進行活動或流程感知,并對數(shù)據(jù)進行分析,協(xié)同其他設(shè)備來反饋,這樣對設(shè)備的硬件要求就比較高。
物聯(lián)網(wǎng)由于其特性,存在一些動態(tài)的設(shè)備網(wǎng)絡(luò),在動態(tài)網(wǎng)絡(luò)中,設(shè)備可以隨時進入和離開網(wǎng)絡(luò),沒有一個穩(wěn)定的網(wǎng)關(guān)來對網(wǎng)絡(luò)中的數(shù)據(jù)通信進行管理。設(shè)備之間相互連接并轉(zhuǎn)發(fā)數(shù)據(jù),組成一個動態(tài)網(wǎng)絡(luò)。因此,設(shè)備組網(wǎng)時需要考慮設(shè)備的硬件能力、設(shè)備底層通信協(xié)議和網(wǎng)絡(luò)動態(tài)性要求,選擇合適的設(shè)備組網(wǎng)方式。Alljoyn框架的底層數(shù)據(jù)傳輸是基于TCP/IP的,且通過IP組播的方式發(fā)布網(wǎng)絡(luò)中設(shè)備的服務(wù)信息。因此,在設(shè)備網(wǎng)絡(luò)組建之后,需要考慮如何對網(wǎng)絡(luò)進行配置,使得Alljoyn底層的數(shù)據(jù)傳輸能夠進行。目前,鄰近網(wǎng)絡(luò)中設(shè)備的組網(wǎng)方式有以下幾種。
(1)直接連接。兩個設(shè)備之間直接建立連接,不需要中間節(jié)點來進行控制和轉(zhuǎn)發(fā)。這種方式簡單、直接,適用于相同通信協(xié)議的設(shè)備,但是不同通信協(xié)議的設(shè)備不能建立連接。兩個設(shè)備之間建立連接時需要相互協(xié)商來完成地址分配、身份認證等功能,對設(shè)備通信組網(wǎng)方面的能力要求比較高。例如設(shè)備之間通過Wi-Fi Direct連接,Group Owner需要具有DHCP的功能,能夠?qū)B接的Group Client分配IP地址,Group Owner和Group Client屬于同一個網(wǎng)段。這種組網(wǎng)方式通常用于一些臨時的、短距離的數(shù)據(jù)傳輸需求,安全性高。
(2)利用中心節(jié)點輔助連接。周圍設(shè)備都先連接到中心節(jié)點,中心節(jié)點接收數(shù)據(jù)和轉(zhuǎn)發(fā)。這種方式廣泛應(yīng)用于現(xiàn)在的互聯(lián)網(wǎng)中,如在WiFi環(huán)境中提供接入點來讓設(shè)備連接,進而組成一個局域網(wǎng)。也可以讓中心節(jié)點支持多種通信協(xié)議,擁有多種接入點,并對網(wǎng)絡(luò)層地址和接口做映射。當(dāng)中心節(jié)點接收到數(shù)據(jù)時,根據(jù)數(shù)據(jù)包的網(wǎng)絡(luò)層地址來選擇相應(yīng)的接口。這樣不同通信協(xié)議的設(shè)備可以利用中心節(jié)點進行協(xié)議轉(zhuǎn)換,從而建立連接。這種連接方式對設(shè)備的組網(wǎng)能力要求比較低,對中心節(jié)點的要求比較高。這種方式目前廣泛應(yīng)用于智能家居中,因為家中往往會有多種協(xié)議的設(shè)備并存。
(3)自組網(wǎng)。自組織網(wǎng)絡(luò)是由一些具備路由轉(zhuǎn)發(fā)功能的設(shè)備相互連接形成的多跳網(wǎng)絡(luò)。這種網(wǎng)絡(luò)的節(jié)點可以隨時離開和進入網(wǎng)絡(luò),從而導(dǎo)致網(wǎng)絡(luò)結(jié)構(gòu)變化、鏈路狀態(tài)不穩(wěn)定。當(dāng)節(jié)點離開網(wǎng)絡(luò)時,原本經(jīng)過該節(jié)點的鏈路就會斷開,其他節(jié)點根據(jù)相應(yīng)的協(xié)商機制重新選擇路徑。當(dāng)節(jié)點進入網(wǎng)絡(luò)時,其他節(jié)點會自行檢測,判斷是否有更優(yōu)的鏈路。該組網(wǎng)方式常用于無中心節(jié)點、設(shè)備節(jié)點動態(tài)變化的環(huán)境中,適用于相同通信協(xié)議和不同通信協(xié)議的設(shè)備。每個節(jié)點都可以接收和轉(zhuǎn)發(fā)數(shù)據(jù),并且節(jié)點之間相互溝通、協(xié)作,形成一個網(wǎng)絡(luò)。這種連接模式對網(wǎng)絡(luò)中每個節(jié)點的通信能力要求比較高。這種網(wǎng)絡(luò)因為不需要固定的網(wǎng)絡(luò)設(shè)施,因而廣泛應(yīng)用于軍事領(lǐng)域和救災(zāi)中。在物聯(lián)網(wǎng)中,自組織網(wǎng)絡(luò)廣泛應(yīng)用于無線傳感器網(wǎng)絡(luò)中。傳感器一般使用無線技術(shù)來進行數(shù)據(jù)傳輸,且一般發(fā)射功率小。因此傳感器之間采用多跳方式進行連接,相互協(xié)作完成各種應(yīng)用任務(wù)。
Alljoyn對這三種方式都提供了支持,在Alljoyn應(yīng)用程序通信時,只需要將數(shù)據(jù)交給底層的網(wǎng)絡(luò)。數(shù)據(jù)的傳輸由網(wǎng)絡(luò)層和傳輸層負責(zé),與Alljoyn無關(guān)。Alljoyn支持多種底層通信協(xié)議,并對底層協(xié)議進行抽象,向上層協(xié)議提供統(tǒng)一的接口。不管采用哪種組網(wǎng)方式, 對Alljoyn來說都是相同的。Alljoyn利用alljoyn router對底層網(wǎng)絡(luò)進行抽象,讓其對上層應(yīng)用透明,并且從alljoyn router之間的相互通信抽象出alljoyn bus。從開發(fā)人員的角度看,應(yīng)用程序都是連接到alljoyn bus 上,應(yīng)用程序之間數(shù)據(jù)的傳輸都相當(dāng)于在一個虛擬總線上進行。當(dāng)應(yīng)用程序進入或退出alljoyn bus 時,都會向alljoyn bus發(fā)出通知,然后alljoyn bus將該事件通知給其他的應(yīng)用程序,其他應(yīng)用程序會執(zhí)行進行相應(yīng)的動作。
4 智能設(shè)備間的互操作
物聯(lián)網(wǎng)是由與人們生活息息相關(guān)的智能設(shè)備按照一定的通信協(xié)議相互連接組成的。它們產(chǎn)生的數(shù)據(jù)和服務(wù)多種多樣,反映了人們生活的方方面面。然而,不同設(shè)備產(chǎn)生和收集到的數(shù)據(jù)是多模式的和不同特性的。數(shù)據(jù)和服務(wù)的異構(gòu)性,使得物聯(lián)網(wǎng)設(shè)備之間的互操作成為一個挑戰(zhàn)。為了解決這個問題,近年來的研究逐步將語義web技術(shù)引入物聯(lián)網(wǎng)中,使得數(shù)據(jù)和服務(wù)以統(tǒng)一的模式進行描述,便于設(shè)備之間的識別和數(shù)據(jù)的整合與共享。通過數(shù)據(jù)的語義標注能夠提供機器可解析的數(shù)據(jù)描述,包括數(shù)據(jù)的表示對象、數(shù)據(jù)的起源、與周邊環(huán)境的關(guān)系、提供者的信息以及質(zhì)量、技術(shù)等屬性信息,有利于物聯(lián)網(wǎng)信息的自動化處理和交互?;谡Z義技術(shù),在領(lǐng)域?qū)<业闹笇?dǎo)下構(gòu)建相關(guān)領(lǐng)域的本體,然后參照已建立的本體對物聯(lián)網(wǎng)中的數(shù)據(jù)和資源等進行標注。需要對設(shè)備提供的服務(wù)進行細化的語義描述,能夠反映設(shè)備所處的環(huán)境等信息。同時,還需要對用戶的需求進行語義化處理,通過本體以及Peri網(wǎng)理論等方法來表示用戶需求。然后,可以通過計算語義相似度等方法對服務(wù)和用戶需求進行服務(wù)匹配和選擇。如果服務(wù)與需求能夠匹配,則設(shè)備之間會建立連接,完成功能的調(diào)用。
Alljoyn框架提供About interface來描述設(shè)備信息、設(shè)備提供的服務(wù)、以及其他相關(guān)的信息。About是一個通用的Bus interface,應(yīng)用程序可以通過它來描述自己,也可以訪問其他應(yīng)用程序的About interface來獲取對方信息。在設(shè)備的服務(wù)信息發(fā)布和搜索環(huán)節(jié)中,當(dāng)收到的服務(wù)信息中含有About interface信息時,可以訪問該接口來獲取對方的信息。我們可以在About interface中采用語義化的形式來表達設(shè)備和設(shè)備提供的服務(wù),其他設(shè)備獲取這些信息之后,依據(jù)一些規(guī)則推理來識別設(shè)備,并可以根據(jù)自己的需求進行服務(wù)匹配與選擇。如果設(shè)備與自己的需求符號,則建立連接,訪問相應(yīng)的功能。
5 總結(jié)
本文首先介紹了Alljoyn框架,說明了Alljoyn對底層通信的抽象和Alljoyn系統(tǒng)中設(shè)備服務(wù)的訪問方式。然后介紹了鄰近網(wǎng)絡(luò)中設(shè)備的幾種組網(wǎng)方式,并說明了Alljoyn能夠適應(yīng)多種網(wǎng)絡(luò)結(jié)構(gòu)。最后介紹了語義技術(shù)在物聯(lián)網(wǎng)中的應(yīng)用,并將語義技術(shù)與Alljoyn相結(jié)合。
參考文獻
[1]劉莉,竇軼,戴庭,黃海平,趙生偉. 基于Jini的物聯(lián)網(wǎng)服務(wù)框架[J]. 信息通信,2011.
[2]管健. 基于XML和本體的物聯(lián)網(wǎng)數(shù)據(jù)交換標準體系研究[J]. 物聯(lián)網(wǎng)技術(shù),2012.
[3]黃濤,褚淑杰. 基于紅外通信的智能家居系統(tǒng)[J]. 嵌入式應(yīng)用,2004.
[4]杜曉明,陳巖. 無線傳感器網(wǎng)絡(luò)研究現(xiàn)狀與應(yīng)用[J]. 北京工商大學(xué)學(xué)報(自然科學(xué)版),2008.
[5]王保云. 物聯(lián)網(wǎng)技術(shù)研究綜述[J]. 電子測量與儀器學(xué)報,2009.
[6]袁凌云,王興超. 語義技術(shù)在物聯(lián)網(wǎng)中的應(yīng)用研究綜述[J]. 計算機科學(xué),2014.
[7]黃映輝,李冠宇. 語義物聯(lián)網(wǎng):物聯(lián)網(wǎng)內(nèi)在矛盾之對策[J]. 計算機應(yīng)用研究,2010.
[8] 陳海明,崔 莉,謝開. 物聯(lián)網(wǎng)體系結(jié)構(gòu)與實現(xiàn)方法的比較研究[J]. 計算機學(xué)報,2013.