構筑基于物聯網操作系統的物聯網生態環境
最近跟物聯網行業和移動互聯網行業的一些資深從業人員做了深入交流,就物聯網操作系統的概念和必要性、定位等進行了充分深入的溝通。首先說明的是,物聯網操作系統的概念被廣泛認同。同時,對物聯網操作系統在整個物聯網領域的功能和地位,又有了更進一步的認識。下面簡單總結,供業界的朋友們參考評論。
物聯網操作系統的最基本功能,與Android操作系統在移動互聯網領域的地位和作用類似。先看一下Android,其***的貢獻在于,實現了智能終端硬件和軟件的分離。任何應用程序開發者,基本不用考慮智能終端的物理硬件配置(CPU型號、內存、各種外設等),只需根據Android提供的編程接口編寫應用程序,就可以運行在所有基于Android的智能終端上。硬件的功能是有限的,如果軟件和硬件緊密捆綁不分離,則整個系統的功能也是有限的。但是一旦把硬件功能剝離出來,則通過軟件的變動,可以使得整個系統的功能大大擴充。舉例來說,帶閃光燈的拍照手機,如果硬件和軟件捆綁,則其功能就僅僅局限于一臺照相機和一部手機。但是軟硬件分離后,就可以變成手電筒、信號燈等原來無法實現的功能。對于物聯網來說,要實現類似移動互聯網一樣的良性發展,也需要達到軟硬件分離的效果。物聯網終端的硬件功能很有限,比如一個傳統的車載OBD模塊,僅僅提供定位、GPRS、車輛信息讀取等功能。但是通過額外的應用軟件,則可以把OBD模塊變成一個防盜器(事先劃定位置范圍,超出后報警),甚至其它功能設備。保險公司也可以定制開發自己的程序,安裝到OBD上,獲取必要的數據。這種通過軟件創新,把已知(硬件功能)變成未知(軟件功能)的能力,才是激發人類興趣的源泉,也是為行業帶來活力的關鍵。
除此之外,物聯網還需要達到另外一種分離:硬件驅動程序與操作系統內核的分離。考慮這樣一種場景:電冰箱的內置攝像頭壞了,重新更換了一個新型號、功能更強大的攝像頭。這時候運行在冰箱內的操作系統,必須能夠根據新攝像頭的硬件特征(比如設備ID等),自動從網上下載對應的驅動程序,然后安裝。這個過程對運行在操作系統上的應用程序來說是透明的。Android貌似是無法做到硬件驅動程序與操作系統內核分離的,一旦增加一個新的硬件,必須編寫對應的驅動程序,然后重新編譯Android內核。
下圖示意了基于這兩種分離思想(應用軟件與硬件分離、設備驅動與操作系統內核分離),構筑的一個物聯網生態體系:
圖中的實線表示***邏輯連接,虛線表示臨時的邏輯交互。大概過程是這樣的:
1、 物聯網終端(大到汽車、冰箱,小到門鎖、追蹤卡、手環等)上運行物聯網操作系統,以及基于物聯網操作系統的應用(APP)。APP從“M2M APP Store”上下載;
2、 物聯網終端上運行的應用程序,由用戶通過智能手機進行控制。智能手機通過本地通道(比如藍牙、WiFi、Zigbee等)連接到物聯網終端,控制終端上的APP的安裝和卸載,以及M2M終端的相關配置(安全信息等);
3、 一旦物聯網終端上運行了一個APP,如果該APP是基于client-server模式(比如智能手機上的微信),則物聯網終端需要跟APP的“應用程序后臺”進行交互,實現業務邏輯;
4、 物聯網終端跟“終端管理后臺”建立持久的通信連接,用于實時更新物聯網操作系統內核版本、實時更新物聯網終端的硬件驅動程序等。還是上面講的例子,一臺冰箱更換了內置攝像頭,這時候物聯網終端需要連接到終端管理后臺,去下載對應的驅動程序。一般情況下,終端管理后臺由物聯網終端制造廠商建立并維護,比如針對家電領域,是由家電廠商建設的,針對汽車領域,則是由車廠建設;
5、 物聯網終端上運行的APP,由第三方開發者或者ICP/ISP開發,并上載到M2M APP Store,供用戶按照需求下載;
6、 物聯網終端之間能夠通過本地通信通道(藍牙、WiFi、Zigbee等)進行通信,這種通信無需借助后臺。比如,汽車到達路口后,可以跟信號燈通信,向信號燈注冊。這樣信號燈就能夠掌握各個方向的排隊汽車數量,然后根據數量來決定信號的變換,達到優化交通的目的。物聯網終端之間的直接通信(端端通信)是物聯網關鍵能力之一,也是物聯網區別于移動互聯網的關鍵地方之一。
為加深對這個生態模型的理解,舉一個餐飲行業的例子。先說一下需求吧,我經常去家門口的一家餐館吃飯,而且每次去,點的餐食基本都一樣。但現在的問題是,每次去都要排隊,點餐,交錢,然后拿餐牌,找座位,等待。顯然這是一個重復乏味的過程,如果能夠通過自動化的物聯網應用,使得這個過程簡化或者自動化,那就很理想了。
我們開發一種通用的智能手環,智能手環上運行物聯網操作系統。手環除了具備通用的鬧鐘提醒、身體生物指標測量和報告等功能外,還具備RFID功能,該功能的打開與否,由用戶控制,比如甩一下手環、按一個按鈕等。在餐館門口,安裝一套ID識別設備,一旦一個帶手環的人進入餐館,并打開了RFID功能,就立即被檢測到。檢測設備把進入者的ID上報給后端服務器,后端服務器進一步判斷這個人是否已經有消費記錄。如果沒有,OK,遵循通常的點餐、交錢、等待等流程,但是這個過程中,后臺系統會建立針對這個人的檔案,并記錄其點餐列表、等待時間、座位號等信息。
如果這個人第二次來就餐,那好了,運行在手環上的APP(由餐館開發并上載到M2M APP Store,由用戶安裝到手環上)會立即震動提醒消費者,并通過自帶的小屏幕,自動把上一次點的餐食列表等信息呈現給消費者,讓消費者確認是否點同樣的餐食。如果確認點同樣的餐食,則消費者只需要找個空閑的位置坐下,然后等待即可,手環上的APP會自動檢測出座位號,并聯系餐館的后臺服務器下訂單。吃完后,通過手環確認一下,可自動完成支付,甚至可以對本次消費滿意度點評。顯然,排隊、點餐、交錢等過程完全省略了,大大提升了就餐方便程度。
要實現這個過程,最關鍵的一點就是,手環上需要運行一個餐館特定的APP,這個APP能夠跟RFID聯動,并跟餐館后臺交互,完成就餐過程的自動化。這樣的APP可能有多個,因為你可能要去很多餐館就餐。如果沒有物聯網操作系統的支持,這是無法做到的。或者說也可以做到,但是你的手腕上需佩戴很多手環,一個餐館一個。這樣的話,你的職業也變了,變成餐館的活體廣告牌了。
這個餐飲行業的應用,幾乎把上面生態模型中的每個模塊都涉及到了:手環與餐館檢測系統的交互,屬于端端通信,手環上運行的APP,需要從M2M APP Store下載。具體下載哪些餐館的APP,由消費者通過智能手機控制。手環上的任何一個APP,都需要跟自己的后臺進行通信。假設手環上的某個配件(比如某個按鈕、甚至RFID等)壞了,需要更換一個新的,這時候手環需要跟終端管理后臺進行通信,下載新配件的驅動程序。
上述過程的最核心需求,就是物聯網操作系統支持的兩大分離特性:應用軟件和硬件分離,操作系統內核和硬件設備驅動程序的分離。
在物聯網領域,很多情況下,硬件終端的功能比手環簡單得多,無需或者無法運行第三方開發的APP。這種場景下,上述架構也可以很好的實現人與物的交互。舉例來說,為了實現對環境的實時檢測,未來可能會開發很多依靠太陽能供電、無顯示屏等外設的“環境監測器”,以公共服務的形式,安裝到任何可以安裝的地方。用戶通過智能手機,可以隨時讀取這些小玩意兒上的檢測數據。這時候,如果是***次讀取某種型號監測器上的數據,則首先用手機上的M2M APP Store客戶端軟件,掃一下監測器上的二維碼,客戶端會自動根據二維碼中記錄的信息,到M2M APP Store上下載一個應用程序。這個應用程序調用藍牙、Zigbee等無線服務,從監測器上獲取數據,然后顯示出來。
基于這樣的一個物聯網生態環境,可以改變很多既有的商業模式,達到更高效率的整體效果。比如下面這張圖,說明了這個效果:
如果沒有物聯網操作系統,那么應用程序提供商(騰訊/阿里等)就需要跟硬件設備提供商進行緊密捆綁,形成聯盟。這一個一個的聯盟,有點“龍虎結姻”的感覺,強強聯合,但又不是一類生物。對消費者來說,也非常麻煩。比如你買了跟阿里結成聯盟的家電,那么就必須購買阿里的智能家居服務,即使騰訊做得更好,你也無法更換。但是如果有了物聯網操作系統,那么就會打破這種緊密耦合的關系。硬件廠商只需要通過物聯網操作系統,把硬件的能力暴露出來即可。互聯網廠商只需要開發對應的應用程序,放到M2M APP Store即可。具體怎么組合,由最終用戶決定。可能的一種場景是,阿里的家電控制、節能等功能做得很好,而騰訊的用戶感知、大數據分析做得更好,用戶會在家電上同時安裝兩個APP,分別獲取***的體驗。顯然,這在沒有物聯網操作系統的時候是無法做到的。
還有一個好處,就是讓更專業的人,去做更專業的事。互聯網公司聚焦做用戶體驗,硬件廠商聚焦做硬件,God god and Satan unto Satan。
基于這樣一個生態環境架構,物聯網操作系統的架構大致如下:
通過定義標準的硬件驅動程序接口,實現操作系統內核與硬件驅動程序的分離。通過引入Java虛擬機,并定義基于C語言的標準API接口,實現應用程序與硬件的分離。這與Android的實現思路有雷同的地方,但是也有不同的地方:
1、 物聯網操作系統的整體映像尺寸,必須是能夠高度伸縮的,以適應硬件資源受限的應用場景。比如既能夠適應手環等硬件資源相對豐富的應用場景,也能夠適應環境監測器等不是非常智能的應用。具體來說,操作系統的尺寸,應該能夠從10幾K甚至更小,到數十M的伸縮量級;
2、 除提供Java接口外,物聯網操作系統還應該提供標準的C語言接口,以應對高效率、高實時性的應用。比如,物聯網終端的生產廠商可以使用C接口,開發針對該硬件的高效應用,第三方企業則可以使用Java接口,開發可廣泛移植到同類設備上的應用;
3、 物聯網操作系統的驅動程序框架,應該設計的足夠靈活和足夠兼容性,并能夠動態加載和卸載設備驅動程序;
4、 物聯網操作系統的版本分支或者變種數量,會非常大。針對每隔行業,甚至每種硬件(比如汽車、冰箱等),都會有一個對應的版本,這需要編譯開發工具進行良好的支持。
除此之外,物聯網操作系統還有很多其它不同于一般智能操作系統的不同之處,在此不做詳細描述。
***,還是為作者正在主導開發的物聯網操作系統Hello China做一番招聘廣告。首先說明的是,為了適應不同的文化背景和國際化需求,Hello China這個名字后續要修改為HelloX,其中的X可以代表任何東西。這樣就貌似有點打招呼的意思,比如“Hello,car”,“Hello,ring”…,通過這個操作系統,你能夠跟任何東西對話,符合物聯網的含義。英文的口號是“HelloX,through which you can talk to everything.”。
Hello China操作系統的大部分功能都已實現,后續將向本文描述的物聯網生態環境方向做進一步開發。這需要大量的相關人才的參與,不僅僅是操作系統內核的開發人員,更多的是生態環境相關模塊的開發人員:
1、 Java開發人員,聚焦Java虛擬機的移植和定制、優化,以及相關Java類庫和程序的開發;
2、 M2M APP Store開發人員,基于流行的分布式、大數據等架構,這部分也是整個物聯網生態環境的核心;
3、 編譯環境的開發和定制,當前基于Eclipse開放環境進行定制;
4、 硬件驅動程序開發人員,基于HelloX操作系統的驅動程序框架,開發各類底層硬件的驅動程序;
5、 操作系統內核優化和開發。
我們已經設計了合理的利益分配制度,相信任何參與的人,只要有實實在在的付出,總會得到意料之外的回報。而且您的有效付出,會立即得到反饋和確認。
同時,物聯網是被廣泛看好的未來IT發展方向,蘊藏著無數的機會。同時物聯網也一定是以軟件為主導的行業,這與移動互聯網一樣,硬件和網絡從來都是配角。因此,通過參與物聯網操作系統的開發,對準物聯網生態環境,直接切入物聯網領域的核心,對個人來說,也是非常難得的發展機會。
因此,物聯網操作系統,或者說物聯網軟件平臺生態圈的開發,期待您的參與。