物聯(lián)網(wǎng)的出現(xiàn),推動了集成電路產(chǎn)業(yè)、傳感器產(chǎn)業(yè)、自動化產(chǎn)業(yè)、計算機軟件產(chǎn)業(yè)、移動網(wǎng)絡產(chǎn)業(yè)的發(fā)展,冠以“智慧”之詞的行業(yè)層出不窮,如智慧交通、智慧電網(wǎng)、智慧醫(yī)療、智慧校園、智慧工廠、智慧城市等。物聯(lián)網(wǎng)操作系統(tǒng)更是百花齊放,物聯(lián)網(wǎng)工程的復雜性、廣覆蓋性,意味著物聯(lián)網(wǎng)操作系統(tǒng)具有多樣性。統(tǒng)一的、普適的物聯(lián)網(wǎng)操作系統(tǒng)是技術“小白”的夢想,是壟斷廠商追求的目標。
概述
物聯(lián)網(wǎng)操作系統(tǒng)有不同于其他操作系統(tǒng)的特點,最主要的是其伸縮性。物聯(lián)網(wǎng)操作系統(tǒng)的內(nèi)核應該能夠適應各種配置的硬件環(huán)境,從小到幾十KB內(nèi)存的低端嵌入式應用,到高達幾十MB內(nèi)存的復雜應用領域,物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核都應該可以適應。同時,物聯(lián)網(wǎng)操作系統(tǒng)的內(nèi)核應該足夠節(jié)能,確保在一些能源受限的應用下,能夠持續(xù)足夠長的時間。比如,內(nèi)核可以提供硬件休眠機制,包括CPU本身的休眠,以便在物聯(lián)網(wǎng)設備沒有任務處理的時候能夠持續(xù)處于休眠狀態(tài)。在需要處理外部事件時,又能夠快速地喚醒。
物聯(lián)網(wǎng)首先要解決的是“連接”“區(qū)別”“識別”“溝通”和“操作”5大問題,只有這些問題解決了,才能繼續(xù)涉及安全性、易用性、低成本等問題。而傳統(tǒng)的PC操作系統(tǒng)、網(wǎng)絡操作系統(tǒng)和嵌入式操作系統(tǒng)等均無法有效解決以上問題。
在物聯(lián)網(wǎng)飛速發(fā)展和水平化轉型的大背景下,運行在資源受限設備之上的操作系統(tǒng)內(nèi)涵也將不斷豐富,例如硬件抽象、安全、協(xié)議連接、互聯(lián)互通和設備管理等。
物聯(lián)網(wǎng)有3個層次:終端應用層、網(wǎng)絡層和感知層。其中最能體現(xiàn)物聯(lián)網(wǎng)特征的就是物聯(lián)網(wǎng)的感知層。感知層由各種傳感器、協(xié)議轉換網(wǎng)關、通信網(wǎng)關和智能終端設備組成。物聯(lián)網(wǎng)操作系統(tǒng)就是運行在物聯(lián)網(wǎng)終端上,對終端進行控制和管理,并提供統(tǒng)一編程接口的操作系統(tǒng)軟件。
具體來說,物聯(lián)網(wǎng)操作系統(tǒng)除具備傳統(tǒng)操作系統(tǒng)的設備資源管理功能外,還具備下列功能:
●屏蔽物聯(lián)網(wǎng)碎片化的特征,提供統(tǒng)一的編程接口;
●物聯(lián)網(wǎng)生態(tài)環(huán)境培育;
●降低物聯(lián)網(wǎng)應用開發(fā)的成本和時間;
●為物聯(lián)網(wǎng)統(tǒng)一管理奠定基礎。
物聯(lián)網(wǎng)操作系統(tǒng)架構正在由原來的垂直沙漏模型向水平模型轉化,從水平化角度看,其發(fā)展趨勢是更重視設備管理和設備連接性,不再拘泥于特定操作系統(tǒng)的功能。如Wind River和ARM都將物聯(lián)網(wǎng)平臺定位在提供連接性和設備管理上。
物聯(lián)網(wǎng)操作系統(tǒng)按工作模式分為實時操作系統(tǒng)和非實時操作系統(tǒng)。
國際上常見的嵌入式操作系統(tǒng)大約有40種,如:Linux、uClinux、WinCE、PalmOS、Symbian、uCOS-II、VxWorks、Nucleus、ThreadX和QNX等。它們基本可以分為兩類:一類是面向控制、通信等領域的實時操作系統(tǒng),如windriver公司的vxWorks、QNX系統(tǒng)軟件公司的QNX、ATI的Nucleus等;另一類是面向消費電子產(chǎn)品的非實時操作系統(tǒng),這類產(chǎn)品包括個人數(shù)字助理(PDA)、移動電話、機頂盒、電子書、Webphone等,操作系統(tǒng)有Microsoft的WinCE,3Com的Palm,Google的Android,以及Symbian等。
“實時”的真正含義是指任務的完成時間可確定、可預知。操作系統(tǒng)面對的負載通常是變化的,有時任務少,有時任務多,實時操作系統(tǒng)要求無論負載多少,都必須保證滿足時間要求。
實時操作系統(tǒng)要求的不是運行速度,而是任務執(zhí)行時間的確定性。
物聯(lián)網(wǎng)操作按市場運作模式分為開源操作系統(tǒng)和商用操作系統(tǒng)。
開源操作系統(tǒng)(Open source operating system),是指源代碼公開的操作系統(tǒng)軟件,要遵循開源協(xié)議進行使用、編譯和再發(fā)布。在遵守相關開源協(xié)議的前提下,任何人都可以免費使用,隨意控制軟件的運行方式。開源操作系統(tǒng)最大的特點就是開放源代碼和自由定制,列舉優(yōu)勢如下:
●易理解:開源操作系統(tǒng)源代碼公開,開發(fā)人員更容易查看和理解代碼,獲取相關知識。
●公開透明:操作系統(tǒng)漏洞和缺陷更容易曝光,同時代碼的開發(fā)和維護也是公開的。
●可定制:用戶可以根據(jù)需求,依照不同的硬件平臺和應用場景進行定制。
●低成本:無商業(yè)版權費,節(jié)省了相關開發(fā)管理和人力投入成本。
●可持續(xù):操作系統(tǒng)開發(fā)公司無法提供后續(xù)服務,依靠開源社區(qū)的開發(fā)人員參與持續(xù)維護系統(tǒng)。
●集思廣益:因為開源操作系統(tǒng)是公開,可以讓更多的開發(fā)者參與開發(fā),匯集更多的智慧和想法。
對于物聯(lián)網(wǎng)發(fā)展而言,碎片化是主要的問題,其中,芯片、傳感器、通信協(xié)議、應用場景千差萬別,廠商、學派山頭林立。比如無線通信標準就有藍牙、Wi-Fi、ZigBee、PLC、Z-Wave、RF、Thread、Z-Wave、NFC、UWB、LiFi、NB-IoT和LoRa等。很明顯,技術方案不統(tǒng)一,體系結構不一致,阻礙了物聯(lián)網(wǎng)的發(fā)展,也局限了互聯(lián)互通的范圍。
各種操作系統(tǒng)可以支持不同的硬件、通信標準和應用場景。開源,有利于打破技術障礙和壁壘,提高互操作性和可移植性,減小開發(fā)成本,同時也適合開源社區(qū)的開發(fā)人員參與進來。
操作系統(tǒng)是物聯(lián)網(wǎng)中一個十分關鍵的環(huán)節(jié),開源更助推了物聯(lián)網(wǎng)的開放和發(fā)展。目前,開源操作系統(tǒng)在物聯(lián)網(wǎng)中的應用已經(jīng)十分廣泛,以后也必將在物聯(lián)網(wǎng)中扮演越來越重要的角色。
手機操作系統(tǒng)市場,經(jīng)過多年的市場優(yōu)勝劣汰,Android操作系統(tǒng)因為開源而占市場84%以上的份額,iOS操作系統(tǒng)因為蘋果公司科技領先的優(yōu)勢,占市場份額16%左右,形成兩家獨大的局面,其他手機操作系統(tǒng)基本被市場淘汰。在物聯(lián)網(wǎng)普及初期,由于物聯(lián)網(wǎng)通信協(xié)議的多樣性和微處理器芯片的多樣性,物聯(lián)網(wǎng)操作系統(tǒng)必然呈現(xiàn)出多樣性的特點,而幾年后,經(jīng)過市場風雨的洗禮,物聯(lián)網(wǎng)操作系統(tǒng)的種類會減少,優(yōu)質(zhì)的物聯(lián)網(wǎng)操作系統(tǒng)會存活下來。
另外,商用操作系統(tǒng)需要付費授權才可使用,一般不允許客戶改動操作系統(tǒng)核心編碼。
特點
物聯(lián)網(wǎng)操作系統(tǒng)的特點分為3個:連接、協(xié)同、智能。
1.連接
連接是各種各樣的終端設備能夠通過某種網(wǎng)絡技術,連接到一個統(tǒng)一的網(wǎng)絡上,任何終端之間都可以相互訪問。下一代的基礎通信網(wǎng)絡,包括5G通信技術和網(wǎng)絡架構重構,核心目標是為物聯(lián)網(wǎng)提供泛連接網(wǎng)絡。目前已經(jīng)有很多廠商推出了相應的解決方案,比如Google的thread/wave,華為的Hi-Link,以及NB-IoT等。
傳統(tǒng)的物聯(lián)網(wǎng)連接,都是指物聯(lián)網(wǎng)終端設備與物聯(lián)網(wǎng)云平臺之間的連接;
傳統(tǒng)的物聯(lián)網(wǎng)連接
在這種模式下,物聯(lián)網(wǎng)設備通過各種各樣的連接技術,比如Wi-Fi、Ethernet、BLE和ZigBee等技術,連接到位于云端的物聯(lián)網(wǎng)平臺上。需要注意的是,這僅僅是一個邏輯結構,在物理層面上,物聯(lián)網(wǎng)設備在接入云平臺之前可能需要一個物聯(lián)網(wǎng)網(wǎng)關。因為很多連接技術是無法直接連接到位于Internet上的物聯(lián)網(wǎng)云平臺的,比如ZigBee、BLE、Z-Wave和NFC等。這些技術的通信范圍是一個小的局域網(wǎng),比如一個家庭、一間辦公室等。而連入Internet的技術,則往往是Wi-Fi、Ethernet、2G/3G/4G等這類網(wǎng)絡技術,大部分物聯(lián)網(wǎng)設備并不能提供這種連接的能力。因此,需要有一個物聯(lián)網(wǎng)網(wǎng)關來彌補這個空隙,完成不同技術之間的轉換。如圖4.5所示為物聯(lián)網(wǎng)網(wǎng)關的功能和網(wǎng)絡位置。
含有物聯(lián)網(wǎng)網(wǎng)關的連接方式
物聯(lián)網(wǎng)網(wǎng)關具備相對強大的計算能力,具備豐富的網(wǎng)絡接口,同時具備消息或數(shù)據(jù)的匯聚和分解功能。
在這種連接模式下,物聯(lián)網(wǎng)云平臺是所有物聯(lián)網(wǎng)終端設備的大腦,云平臺統(tǒng)一指揮物聯(lián)網(wǎng)終端的行為,如果這種連接一旦斷開,那么物聯(lián)網(wǎng)終端將無所適從,完全失去控制。
更理想的連接,應該是物聯(lián)網(wǎng)設備之間也能實現(xiàn)本地的直接連接:
本地連接方式
物聯(lián)網(wǎng)設備之間也建立連接,同時保留與云平臺的連接。這樣的好處就是,一旦云平臺的連接中斷,物聯(lián)網(wǎng)終端可以采用本地之間的終端連接,繼續(xù)提供服務。同時,物聯(lián)網(wǎng)設備本地之間的交流和通信,直接通過本地連接完成,而不用再上升到云端。
要實現(xiàn)這種“云端連接”加“本地連接”的模型,需要物聯(lián)網(wǎng)設備支持消息中繼功能。即物聯(lián)網(wǎng)設備可以把另外的物聯(lián)網(wǎng)設備消息或數(shù)據(jù)轉發(fā)到云平臺,同時把云平臺下發(fā)的數(shù)據(jù)轉接給另外的物聯(lián)網(wǎng)設備。
2.協(xié)同
協(xié)同是指接入網(wǎng)絡的任何設備之間,能夠通過學習,實時地了解自己和對方的能力與狀態(tài),能夠根據(jù)特定的輸入條件或者特定的環(huán)境狀態(tài),多種設備間實現(xiàn)有效互動、協(xié)調(diào)工作,完成某種單一設備無法完成的工作。協(xié)同是物聯(lián)網(wǎng)的核心和本質(zhì),主要表現(xiàn)在下面幾個方面:
物聯(lián)網(wǎng)設備之間的自動發(fā)現(xiàn),尤其是不同功能、不同類別的設備的相互發(fā)現(xiàn)。比如在智慧交通領域,汽車靠近信號燈時,應該可以快速發(fā)現(xiàn)信號燈并建立聯(lián)系。這樣,信號燈就可以根據(jù)與自己建立聯(lián)系的汽車數(shù)量,來靈活調(diào)度信號燈的切換時間。
物聯(lián)網(wǎng)設備之間的能力交互。設備之間,只有相互了解對方的能力,了解對方能干什么,才能實現(xiàn)有效的交互和協(xié)同。類似中國人之間的“找關系”,只有知道對方是干什么的,有哪些能力,才會有目的地發(fā)起請求,從而一起協(xié)作互動達到目標。
新增物聯(lián)網(wǎng)成員(設備、功能)的自動傳播。在一個局域網(wǎng)(智慧家庭)中,加入了一個新(成員)的功能設備,這個新的(成員)設備需要盡快地“融入”原有的(網(wǎng)絡組織)設備群之中。新設備有能夠廣播自己的能力,同時原有的設備也可以快速地“理解”新加入的(成員)設備的功能和角色,達到一種統(tǒng)一的新網(wǎng)絡狀態(tài)。
3.智能
智能是指物聯(lián)網(wǎng)設備具備類似于人的智慧,比如根據(jù)特定條件和環(huán)境的自我調(diào)節(jié)能力,能夠通過持續(xù)的學習不斷優(yōu)化和改進,以便更人性化地為人類服務。
物聯(lián)網(wǎng)設備應該具備自我學習能力,能夠通過積累過往的經(jīng)驗或數(shù)據(jù),對未來進行預判,為人們提供更加智能的服務。這種機器學習的能力,屬于物聯(lián)網(wǎng)操作系統(tǒng)的一部分,能夠抽象成一些基本的服務或API,內(nèi)置到內(nèi)核中,提供給應用開發(fā)者或設備開發(fā)者調(diào)用。
機器學習服務不僅是位于終端操作系統(tǒng)中的一段代碼,還應該有一個龐大的云平臺作為支撐。大量的計算和預測功能在云平臺上執(zhí)行,而終端上只是做一些簡單計算和結果的執(zhí)行。這樣終端加云平臺軟件,就形成了一個分布式的計算網(wǎng)格,有效分工,協(xié)同計算,有序執(zhí)行,形成一個支撐物聯(lián)網(wǎng)的數(shù)字神經(jīng)系統(tǒng)。
架構
物聯(lián)網(wǎng)操作系統(tǒng)是支撐物聯(lián)網(wǎng)大規(guī)模發(fā)展的最核心軟件。根據(jù)上面總結的物聯(lián)網(wǎng)的主要特征,結合操作系統(tǒng)的主要功能和分層結構,總結出以下物聯(lián)網(wǎng)操作系統(tǒng)整體架構
物聯(lián)網(wǎng)操作系統(tǒng)整體架構
物聯(lián)網(wǎng)操作系統(tǒng)是由操作系統(tǒng)內(nèi)核、外圍功能組件、物聯(lián)網(wǎng)協(xié)同框架、通用智能引擎和集成開發(fā)環(huán)境等幾個大的子系統(tǒng)組成。這些子系統(tǒng)之間相互配合,共同組成一個完整的面向各種各樣物聯(lián)網(wǎng)應用場景的軟件基礎平臺。需要說明的是,這些子系統(tǒng)之間有一定的層次依賴關系,比如外圍功能組件需要依賴于物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核,物聯(lián)網(wǎng)協(xié)同框架需要依賴于外圍功能組件,而公共智能引擎,需要依賴于下層的內(nèi)核、外圍功能組件甚至是物聯(lián)網(wǎng)協(xié)同框架。
目前主流的物聯(lián)網(wǎng)操作系統(tǒng),比如Google的Brillo、Linux開放基金會的Ostro項目,以及HelloX項目,都遵循這種框架。根據(jù)這個框架,我們自下而上解析物聯(lián)網(wǎng)結構如下:
1.系統(tǒng)內(nèi)核
內(nèi)核是操作系統(tǒng)的核心組件,線程、任務管理、內(nèi)存管理、內(nèi)核安全和同步等機制,都是在內(nèi)核中實現(xiàn)的。從功能上說,大部分操作系統(tǒng)的內(nèi)核都相差不大,在功能的實現(xiàn)上,面向不同領域的操作系統(tǒng),其實現(xiàn)目標和實現(xiàn)技術是不同的。比如對傳統(tǒng)的通用個人計算機操作系統(tǒng)來說,內(nèi)核更加關注用戶交互的響應時間、資源的充分利用、不同應用程序之間的隔離和安全等。
物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核功能結構
物聯(lián)網(wǎng)操作系統(tǒng)的內(nèi)核也應該具備嵌入式操作系統(tǒng)的一些特征,比如可預知可計算的外部事件響應時間、可預知中斷響應時間、對多種多樣的外部硬件的控制和管理機制等。當然,物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核必須足夠可靠和安全,以滿足物聯(lián)網(wǎng)對安全性的需求。
物聯(lián)網(wǎng)操作系統(tǒng)的功能與其他操作系統(tǒng)基本類似,主要包括任務管理、內(nèi)存管理、中斷管理、內(nèi)核同步、安全與權限管理,以及應用管理等。為了確保內(nèi)核的正常運行,也應提供內(nèi)核統(tǒng)計與監(jiān)控功能,即監(jiān)視內(nèi)核的運行狀態(tài)、監(jiān)視內(nèi)核對象的數(shù)量和狀態(tài)等,為維護人員或開發(fā)人員提供故障定位的工具。在每一個內(nèi)核子模塊中,都會通過更加具體的機制或者算法,來滿足物聯(lián)網(wǎng)應用的需求,同時確保內(nèi)核的整體安全性和可靠性。
內(nèi)核也是直接與物理設備打交道的軟件,所有對物理設備的管理,包括物理設備檢測,以及物理設備驅(qū)動程序加載和卸載等功能,都是在內(nèi)核中實現(xiàn)的。為了有效地管理物理設備,內(nèi)核需要定義一套標準的設備管理框架,設備驅(qū)動程序需要遵循這套框架,才能納入內(nèi)核的管理。為了訪問多種多樣的物理設備,內(nèi)核同時也會定義一套叫做硬件抽象層的軟件,這本質(zhì)上是對一些常用硬件操作的抽象,比如讀寫設備配置空間,有的CPU是通過I/O接口來訪問設備空間的,有的則是把設備配置空間直接映射到內(nèi)存空間,通過常規(guī)內(nèi)存訪問來讀取設備配置空間。為了適應這種不同的情況,內(nèi)核一般會定義兩個叫做__device_read和__device_write的宏,根據(jù)設備類型的不同,這些宏定義的實現(xiàn)代碼也會不同,但是對操作系統(tǒng)內(nèi)核和設備驅(qū)動程序來說,只需要調(diào)用這兩個一致的宏,即可對設備配置空間進行訪問。這是典型的硬件抽象層的例子。
除此之外,物聯(lián)網(wǎng)操作系統(tǒng)的內(nèi)核還提供面向物聯(lián)網(wǎng)應用的常用連接功能,比如對藍牙的支持、對ZigBee的支持和對Wi-Fi的支持等。各類領域應用可以直接利用物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核的這些連接功能,實現(xiàn)最基本的通信需求。
2.外圍組件
物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核只是提供最基本的操作系統(tǒng)功能,供物聯(lián)網(wǎng)應用程序調(diào)用。但只有物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核是遠遠不夠的,在很多情況下,還需要很多其他功能模塊的支持,比如文件系統(tǒng)、TCP/IP網(wǎng)絡協(xié)議棧和數(shù)據(jù)庫等。把這些功能組件從物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核中獨立出來,組成一個獨立的功能系統(tǒng),稱為外圍組件。
之所以把這些功能組件稱為“外圍”,是因為在很多情況下,這些功能組件都是可選的。在實際的物聯(lián)網(wǎng)應用中,這些外圍組件不會全部用到,大部分情況下用到一個或兩個外圍組件就可以滿足需求了,其他的功能組件必須裁剪掉。在物聯(lián)網(wǎng)應用中,很多情況下的系統(tǒng)硬件資源非常有限,如果保留沒有用到的功能組件,會浪費很多資源。同時,保留一些用不到的組件,會對整個系統(tǒng)帶來安全隱患。這些外圍組件都是針對物聯(lián)網(wǎng)操作系統(tǒng)進行定制和開發(fā)的,與物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核之間的接口非常清晰,具備高度的可裁剪性。
在通用(PC)操作系統(tǒng)中,這些外圍組件的處理方式卻與物聯(lián)網(wǎng)操作系統(tǒng)不同,這些組件會被統(tǒng)一歸類到內(nèi)核中,隨內(nèi)核一起分發(fā),作為一個整體提供給用戶。即使應用程序不用這些組件,也不能把這些組件裁剪掉。之所以這樣做,是因為通用(PC)操作系統(tǒng)的資源相對豐富,多保留一些功能模塊對整體系統(tǒng)的影響并不大。同時,通用(PC)操作系統(tǒng)的安全性要求相對較低。
物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核和外圍組件結合起來可以解決物聯(lián)網(wǎng)的“連接”需求。這包括內(nèi)核提供的基本物聯(lián)網(wǎng)本地連接(藍牙、ZigBee、NFC和RFID等),以及外圍組件中的TCP/IP協(xié)議棧等提供的復雜網(wǎng)絡連接。
除TCP/IP網(wǎng)絡協(xié)議棧外,常見的外圍組件還包括文件系統(tǒng)、圖形用戶界面(GUI)、安全傳輸協(xié)議、腳本語言執(zhí)行引擎(比如JavaScript語言的執(zhí)行引擎等)、基于TCP/IP協(xié)議的安全傳輸協(xié)議(SSL、SSH等)、C運行庫和在線更新機制(軟件升級、在線更新補丁)等。需要說明的是,TCP/IP協(xié)議棧是面向互聯(lián)網(wǎng)設計的通信協(xié)議棧,由于物聯(lián)網(wǎng)本身特征與互聯(lián)網(wǎng)有很大差異,TCP/IP協(xié)議棧在應用到物聯(lián)網(wǎng)的時候,面臨許多問題和挑戰(zhàn),需要對TCP/IP協(xié)議棧做一番優(yōu)化和改造。我們把改造之后的TCP/IP協(xié)議棧稱為“面向物聯(lián)網(wǎng)的TCP/IP協(xié)議”,簡寫為TCP/IP IoT。
物聯(lián)網(wǎng)操作系統(tǒng)外圍功能組件結構
3.物聯(lián)網(wǎng)協(xié)同框架
物聯(lián)網(wǎng)協(xié)同框架實現(xiàn)物聯(lián)網(wǎng)“協(xié)同”功能,是物聯(lián)網(wǎng)系統(tǒng)架構的組成部分。物聯(lián)網(wǎng)操作系統(tǒng)的內(nèi)核和外圍組件實現(xiàn)了物聯(lián)網(wǎng)設備之間的“連接”功能。但是,僅僅實現(xiàn)物聯(lián)網(wǎng)設備的連接網(wǎng)絡,是遠遠不夠的。物聯(lián)網(wǎng)的精髓在于,物聯(lián)網(wǎng)設備之間能夠相互交互和協(xié)同,使物聯(lián)網(wǎng)設備能夠充分合作,相互協(xié)調(diào)一致,以達到單一物聯(lián)網(wǎng)設備無法完成的功能。物聯(lián)網(wǎng)協(xié)同框架,就是為物聯(lián)網(wǎng)設備之間的協(xié)同提供技術支撐。
物聯(lián)網(wǎng)協(xié)同框架是一組軟件的集合,由多個功能相互獨立,又相互依賴的軟件模塊組成。比如,Google的Weave物聯(lián)網(wǎng)協(xié)同框架,由云平臺組件Weave Cloud、面向設備端的LibWeave及面向智能手機客戶端的Weave Client等組件組成。WeaveCloud是整個框架的中心管理器,所有基于Weave的物聯(lián)網(wǎng)設備,首先都連接到Weave Cloud上,接收Weave Cloud下發(fā)的指令,并向Weave Cloud上報相關數(shù)據(jù)。Weave Client也需通過Weave Cloud來管理和控制基于Weave的物聯(lián)網(wǎng)設備。
物聯(lián)網(wǎng)協(xié)同框架包括如下功能:
●物聯(lián)網(wǎng)設備發(fā)現(xiàn)機制。物聯(lián)網(wǎng)設備一般不提供直接的用戶交互界面,需要通過如智能手機或計算機等設備連接,然后對設備進行管理和配置。在物聯(lián)網(wǎng)設備第一次加電并連接網(wǎng)絡之后,智能手機/計算機等如何快速準確地找到這個物聯(lián)網(wǎng)設備,就是物聯(lián)網(wǎng)設備發(fā)現(xiàn)機制要解決的問題。尤其是在物聯(lián)網(wǎng)設備數(shù)量眾多、功能多樣的情況下,如何準確快速地發(fā)現(xiàn)和連接到物聯(lián)網(wǎng)設備上,是一個很大的挑戰(zhàn)。設備發(fā)現(xiàn)機制的另外一個應用場景是設備與設備之間的直接交互。比如在同一個局域網(wǎng)內(nèi)的物聯(lián)網(wǎng)設備,可以相互發(fā)現(xiàn)并建立關聯(lián),在必要的時候能夠直接通信,相互協(xié)作,實現(xiàn)物聯(lián)網(wǎng)設備之間的協(xié)同。
●物聯(lián)網(wǎng)設備的初始化與配置管理,包括設備在第一次使用時的初始化配置、設備的認證和鑒權,以及設備的狀態(tài)管理等。
●物聯(lián)網(wǎng)設備之間的協(xié)同交互,包括物聯(lián)網(wǎng)設備之間的直接通信機制。物聯(lián)網(wǎng)協(xié)同框架需要能夠提供一套標準或規(guī)范,使得建立關聯(lián)關系的物聯(lián)網(wǎng)設備之間能夠直接通信,不需要經(jīng)過后臺服務器。
●云端服務。大部分情況下,物聯(lián)網(wǎng)服務需要云端的支持。物聯(lián)網(wǎng)設備要連接到云端平臺上,就需要進行認證和注冊。物聯(lián)網(wǎng)設備在運行期獲取的數(shù)據(jù),也需要傳送到云端平臺上進行存儲。如果用戶與物聯(lián)網(wǎng)設備距離很遠,無法直接連接,則用戶也需要經(jīng)過云端平臺來間接控制或操作物聯(lián)網(wǎng)設備。物聯(lián)網(wǎng)協(xié)同框架至少要定義并實現(xiàn)一套標準的協(xié)議來支撐這些操作。
除此之外,物聯(lián)網(wǎng)協(xié)同框架還必須實現(xiàn)一些基本的服務來支撐上述功能。比如,物聯(lián)網(wǎng)協(xié)同框架需要定義一套標準的物聯(lián)網(wǎng)設備命名體系,以能夠準確、唯一地標識每一臺物聯(lián)網(wǎng)設備。物聯(lián)網(wǎng)設備之間,以及用戶與物聯(lián)網(wǎng)設備之間,在相互操作之前還必須要完成認證和鑒權,以確保物聯(lián)網(wǎng)的安全。另外一個基礎服務就是標準的物聯(lián)網(wǎng)操作模式。比如在智能家電應用中,用戶可以通過一個標準的Open命令來遠程打開空調(diào);通過一個Adjust命令來調(diào)節(jié)空調(diào)的溫度。這些標準的命令必須由物聯(lián)網(wǎng)協(xié)同框架進行定義才能實現(xiàn)不同廠商、不同類型設備之間的互操作。如果沒有這些標準的操作模式(操作命令),那么要打開A廠商的空調(diào)是Open命令,要打開B廠商的空調(diào)則可能是Turn On命令,這樣就無法實現(xiàn)相互操作。
上述協(xié)同功能和基本服務都是建立在網(wǎng)絡通信基礎之上的,協(xié)同框架還必須實現(xiàn)或者選擇一種合適的網(wǎng)絡通信協(xié)議。物聯(lián)網(wǎng)的特征,要求這種通信協(xié)議盡可能地低功耗和高效率。一些常用的標準協(xié)議,比如CoAP或者MQTT可以承擔這個功能。大部分物聯(lián)網(wǎng)協(xié)同框架比如IoTivity,就是基于CoAP協(xié)議的。
物聯(lián)網(wǎng)協(xié)同框架結構
我們通過智慧商場的例子,進一步說明物聯(lián)網(wǎng)協(xié)同框架的作用。在智慧商場解決方案中,一般都會包括火警探測器與智慧門禁系統(tǒng)。這兩類物聯(lián)網(wǎng)設備在被安裝在商場之前,必須經(jīng)過安全的初始配置,以確保不會被惡意控制。初始配置完成之后,這兩類設備會連接到統(tǒng)一的協(xié)同框架云端系統(tǒng),并實時更新其狀態(tài)。與此同時,火警探測器也會通過物聯(lián)網(wǎng)協(xié)同框架的設備發(fā)現(xiàn)機制與門禁系統(tǒng)建立聯(lián)系,并相互知道自己的存在。一旦火警探測器探測到火警發(fā)生,則會直接告訴門禁系統(tǒng)打開門禁,以方便人們盡快逃生。這種情況下,如果沒有物聯(lián)網(wǎng)設備之間的直接通信功能,所有的通信都需要經(jīng)過后臺系統(tǒng)轉接,那么不但響應時間會增加,更致命的是,一旦與后臺之間的物理網(wǎng)絡中斷,則終端之間將無法實現(xiàn)自動聯(lián)動。這種網(wǎng)絡故障,在火警災難發(fā)生時是最常見的。
為支撐上述機制的有效運行,物聯(lián)網(wǎng)協(xié)同框架還必須提供一致的通信協(xié)議和通信技術,物聯(lián)網(wǎng)設備只要遵循這套協(xié)議,就能夠相互識別對方的消息。同時,物聯(lián)網(wǎng)協(xié)同框架還必須提供一套唯一的命名規(guī)范,確保任何一個物聯(lián)網(wǎng)終端設備都能獲取到唯一的名字,其他設備能夠通過這個唯一的名字與之交互。同時,這套唯一的命名規(guī)范,最好能夠把物聯(lián)網(wǎng)終端設備的功能也體現(xiàn)出來。這樣物聯(lián)網(wǎng)設備之間通過設備名字,就可以確定其提供的功能,從而做出有針對性的動作。比如上述例子,火警探測器可以命名為Fire alert detector,而門禁系統(tǒng)可以命名為Entrance accesscontrol,這樣這兩者可以通過名字知道對方的功能角色。當然,這只是一個例子,在實際的命名系統(tǒng)中,應該有一套計算機能夠識別的編碼體系。
目前物聯(lián)網(wǎng)行業(yè)內(nèi)的一些協(xié)同框架,基本都是與物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核獨立的,即這些協(xié)同框架可以被應用在基于任何操作系統(tǒng)的物聯(lián)網(wǎng)解決方案中,只要這些操作系統(tǒng)能夠提供必要的接口即可。但采取這種方式顯然有其明顯的弊端,那就是無法采用一套統(tǒng)一的代碼,來適應所有的操作系統(tǒng)。比如Google的Waeve,針對Linux和Android等復雜的操作系統(tǒng),采用C++語言開發(fā)了LibWeave組件。而針對資源受限的嵌入式應用場景,則又采用C語言開發(fā)了uWeave。這樣對物聯(lián)網(wǎng)設備的開發(fā)者來說,就不得不掌握兩套完全迥異的API,了解兩套機理完全不同的物聯(lián)網(wǎng)協(xié)同框架,顯然無法降低成本。
理想的實現(xiàn)方式是,物聯(lián)網(wǎng)協(xié)同框架能夠與物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核緊密綁定,只提供一套API給開發(fā)者,通過物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核本身的伸縮機制,來適應不同的應用場景。比如在沒有Wi-Fi支持的嵌入式場景中,物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核會裁剪掉TCP/IP等組件,而采用低功耗藍牙技術實現(xiàn)數(shù)據(jù)通信。而如果目標硬件配置了Wi-Fi或者Ethernet等網(wǎng)絡接口設備,則會保留TCP/IP協(xié)議棧。不論是哪種形態(tài),物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核都會提供統(tǒng)一的API給物聯(lián)網(wǎng)協(xié)同框架使用,即底層的通信機制對物聯(lián)網(wǎng)協(xié)同框架是透明的。基于這樣的設計原則,類似Google Weave這樣的物聯(lián)網(wǎng)協(xié)同框架就無須針對不同的目標硬件設計多套解決方案了,只需要一套就可解決問題。
4.公共智能
引擎通過物聯(lián)網(wǎng)協(xié)同框架,可以使物聯(lián)網(wǎng)設備之間建立關聯(lián),充分協(xié)作,完成單一物聯(lián)網(wǎng)設備無法完成的功能。但是這種協(xié)同的功能,還是局限于事先定義好的邏輯。比如上述智慧商場中火警探測器和門禁系統(tǒng)的例子,必須在領域應用中編寫代碼,告訴火警探測器,一旦發(fā)生火警就告訴門禁系統(tǒng)打開門禁。如果沒有這樣的程序邏輯,火警探測系統(tǒng)是不會通知門禁系統(tǒng)打開門禁的。
如果希望物聯(lián)網(wǎng)系統(tǒng)超出預定義的范圍,能夠達到一種自學習的程度,比如最開始火警探測器并不知道在發(fā)生火警時通知門禁系統(tǒng)打開門禁,而是隨著運行時間的增加,逐漸地學習到這種能力。這樣,只有物聯(lián)網(wǎng)協(xié)同框架是無法做到的,必須引入智能引擎的支持。
公共智能引擎
物聯(lián)網(wǎng)智能引擎,是指包含了如語音與語義識別、機器學習等功能模塊,以使得物聯(lián)網(wǎng)能夠超出事先定義好的活動規(guī)則,能夠像人一樣具備智慧的能力。在物聯(lián)網(wǎng)智能引擎內(nèi)的功能模塊,都是基礎能力,可以供各種物聯(lián)網(wǎng)應用所調(diào)用。比較典型的例子就是,在物聯(lián)網(wǎng)設備中加入語音識別功能,人們通過自然語言,與物聯(lián)網(wǎng)設備直接對話,以此達到下達指令的目的。
另外一個公共智能引擎中的重要模塊,是DSL語言與其對應的處理引擎。DSL(DomainSpecific Language,領域特定語言)是針對某一種特定的應用領域開發(fā)的編程或操作語言,專門應用于一個相對獨立的領域。這與計算機編程語言不一樣,計算機編程語言大部分都通用,可以為多種應用領域編寫程序。正是因為它的通用性,無法照顧到某一個具體的領域,因此采用通用計算機語言來實現(xiàn)某一個具體領域的應用時就非常麻煩,需要專業(yè)的程序員經(jīng)過復雜的編程工作來實現(xiàn)。DSL語言則是針對某一個很細的功能領域開發(fā),專門應用于這個特定的領域。這樣就可以針對這個特定的領域建立一些內(nèi)置對象,定義領域特定的動作,并根據(jù)領域的習慣定義領域特有的語法。采用DSL語言來編寫領域應用就非常簡單。