最近跟物聯網行業和移動互聯網行業的一些資深從業人員作了深刻交流,就物聯網操做系統的概念和必要性、定位等進行了充分深刻的溝通。首先說明的是,物聯網操做系統的概念被普遍認同。同時,對物聯網操做系統在整個物聯網領域的功能和地位,又有了更進一步的認識。下面簡單總結,供業界的朋友們參考評論。編程
物聯網操做系統的最基本功能,與Android操做系統在移動互聯網領域的地位和做用相似。先看一下Android,其最大的貢獻在於,實現了智能終端硬件和軟件的分離。任何應用程序開發者,基本不用考慮智能終端的物理硬件配置(CPU型號、內存、各類外設等),只需根據Android提供的編程接口編寫應用程序,就能夠運行在全部基於Android的智能終端上。硬件的功能是有限的,若是軟件和硬件緊密捆綁不分離,則整個系統的功能也是有限的。可是一旦把硬件功能剝離出來,則經過軟件的變更,可使得整個系統的功能大大擴充。舉例來講,帶閃光燈的拍照手機,若是硬件和軟件捆綁,則其功能就僅僅侷限於一臺照相機和一部手機。可是軟硬件分離後,就能夠變成手電筒、信號燈等原來沒法實現的功能。對於物聯網來講,要實現相似移動互聯網同樣的良性發展,也須要達到軟硬件分離的效果。物聯網終端的硬件功能頗有限,好比一個傳統的車載OBD模塊,僅僅提供定位、GPRS、車輛信息讀取等功能。可是經過額外的應用軟件,則能夠把OBD模塊變成一個防盜器(事先劃定位置範圍,超出後報警),甚至其它功能設備。保險公司也能夠定製開發本身的程序,安裝到OBD上,獲取必要的數據。這種經過軟件創新,把已知(硬件功能)變成未知(軟件功能)的能力,纔是激發人類興趣的源泉,也是爲行業帶來活力的關鍵。後端
除此以外,物聯網還須要達到另一種分離:硬件驅動程序與操做系統內核的分離。考慮這樣一種場景:電冰箱的內置攝像頭壞了,從新更換了一個新型號、功能更強大的攝像頭。這時候運行在冰箱內的操做系統,必須可以根據新攝像頭的硬件特徵(好比設備ID等),自動從網上下載對應的驅動程序,而後安裝。這個過程對運行在操做系統上的應用程序來講是透明的。Android貌似是沒法作到硬件驅動程序與操做系統內核分離的,一旦增長一個新的硬件,必須編寫對應的驅動程序,而後從新編譯Android內核。安全
下圖示意了基於這兩種分離思想(應用軟件與硬件分離、設備驅動與操做系統內核分離),構築的一個物聯網生態體系:服務器
圖中的實線表示永久邏輯鏈接,虛線表示臨時的邏輯交互。大概過程是這樣的:微信
一、 物聯網終端(大到汽車、冰箱,小到門鎖、追蹤卡、手環等)上運行物聯網操做系統,以及基於物聯網操做系統的應用(APP)。APP從「M2M APP Store」上下載;網絡
二、 物聯網終端上運行的應用程序,由用戶經過智能手機進行控制。智能手機經過本地通道(好比藍牙、WiFi、Zigbee等)鏈接到物聯網終端,控制終端上的APP的安裝和卸載,以及M2M終端的相關配置(安全信息等);架構
三、 一旦物聯網終端上運行了一個APP,若是該APP是基於client-server模式(好比智能手機上的微信),則物聯網終端須要跟APP的「應用程序後臺」進行交互,實現業務邏輯;框架
四、 物聯網終端跟「終端管理後臺」創建持久的通訊鏈接,用於實時更新物聯網操做系統內核版本、實時更新物聯網終端的硬件驅動程序等。仍是上面講的例子,一臺冰箱更換了內置攝像頭,這時候物聯網終端須要鏈接到終端管理後臺,去下載對應的驅動程序。通常狀況下,終端管理後臺由物聯網終端製造廠商創建並維護,好比針對家電領域,是由家電廠商建設的,針對汽車領域,則是由車廠建設;分佈式
五、 物聯網終端上運行的APP,由第三方開發者或者ICP/ISP開發,並上載到M2M APP Store,供用戶按照需求下載;工具
六、 物聯網終端之間可以經過本地通訊通道(藍牙、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的實現思路有雷同的地方,可是也有不一樣的地方:
一、 物聯網操做系統的總體映像尺寸,必須是可以高度伸縮的,以適應硬件資源受限的應用場景。好比既可以適應手環等硬件資源相對豐富的應用場景,也可以適應環境監測器等不是很是智能的應用。具體來講,操做系統的尺寸,應該可以從10幾K甚至更小,到數十M的伸縮量級;
二、 除提供Java接口外,物聯網操做系統還應該提供標準的C語言接口,以應對高效率、高實時性的應用。好比,物聯網終端的生產廠商可使用C接口,開發針對該硬件的高效應用,第三方企業則可使用Java接口,開發可普遍移植到同類設備上的應用;
三、 物聯網操做系統的驅動程序框架,應該設計的足夠靈活和足夠兼容性,並可以動態加載和卸載設備驅動程序;
四、 物聯網操做系統的版本分支或者變種數量,會很是大。針對每隔行業,甚至每種硬件(好比汽車、冰箱等),都會有一個對應的版本,這須要編譯開發工具進行良好的支持。
除此以外,物聯網操做系統還有不少其它不一樣於通常智能操做系統的不一樣之處,在此不作詳細描述。
最後,仍是爲做者正在主導開發的物聯網操做系統Hello China作一番招聘廣告。首先說明的是,爲了適應不一樣的文化背景和國際化需求,Hello China這個名字後續要修改成HelloX,其中的X能夠表明任何東西。這樣就貌似有點打招呼的意思,好比「Hello,car」,「Hello,ring」…,經過這個操做系統,你可以跟任何東西對話,符合物聯網的含義。英文的口號是「HelloX,through which you can talk to everything.」。
Hello China操做系統的大部分功能都已實現,後續將向本文描述的物聯網生態環境方向作進一步開發。這須要大量的相關人才的參與,不只僅是操做系統內核的開發人員,更多的是生態環境相關模塊的開發人員:
一、 Java開發人員,聚焦Java虛擬機的移植和定製、優化,以及相關Java類庫和程序的開發;
二、 M2M APP Store開發人員,基於流行的分佈式、大數據等架構,這部分也是整個物聯網生態環境的核心;
三、 編譯環境的開發和定製,當前基於Eclipse開放環境進行定製;
四、 硬件驅動程序開發人員,基於HelloX操做系統的驅動程序框架,開發各種底層硬件的驅動程序;
五、 操做系統內核優化和開發。
咱們已經設計了合理的利益分配製度,相信任何參與的人,只要有實實在在的付出,總會獲得意料以外的回報。並且您的有效付出,會當即獲得反饋和確認。
同時,物聯網是被普遍看好的將來IT發展方向,蘊藏着無數的機會。同時物聯網也必定是以軟件爲主導的行業,這與移動互聯網同樣,硬件和網絡歷來都是配角。所以,經過參與物聯網操做系統的開發,對準物聯網生態環境,直接切入物聯網領域的核心,對我的來講,也是很是可貴的發展機會。
所以,物聯網操做系統,或者說物聯網軟件平臺生態圈的開發,期待您的參與。歡迎聯繫:
QQ/微信:89007638
Email:garryxin@gmail.com
QQ羣:38467832
轉載請註明做者和出處。