時下,在操作系統(tǒng)界,有一個熱得發(fā)紫的名詞“物聯(lián)網(wǎng)操作系統(tǒng)”,但物聯(lián)網(wǎng)和操作系統(tǒng)究竟是什么關系,物聯(lián)網(wǎng)將面臨什么問題,操作系統(tǒng)又能為其解決什么問題呢?許多人都說協(xié)議是物聯(lián)網(wǎng)的最大問題,但物聯(lián)網(wǎng)需要哪些協(xié)議,什么問題能用協(xié)議解決,什么問題不能用協(xié)議解決,為什么有些協(xié)議永遠不會有,本文和大家一起探討上述問題。
操作系統(tǒng)和其他電子產(chǎn)品一樣,是個不斷迭代、與時俱進的一個東西,由用戶需求、軟件積累、硬件成本等共同推動發(fā)展,反過來又激發(fā)需求、定義硬件。在物聯(lián)網(wǎng)時代,大家都在談論物聯(lián)網(wǎng)操作系統(tǒng),我們要分析物聯(lián)網(wǎng)的核心問題是什么,操作系統(tǒng)對于物聯(lián)網(wǎng),能做什么,不能做什么,它如何影響操作系統(tǒng)設計。最后,我們會發(fā)現(xiàn),物聯(lián)網(wǎng)的核心問題中,大多數(shù)問題,操作系統(tǒng)會表示很無奈,無能為力,OS能做的事情很少,只能解決非常有限的問題。我們設計操作系統(tǒng),要服務于物聯(lián)網(wǎng)應用的話,就要分析清楚物聯(lián)網(wǎng)面臨的問題,要集中精力于解決核心問題,有的放矢,不要人云亦云地跟著感覺走。
物聯(lián)網(wǎng),我們首先要解決的是“連接、區(qū)別、識別、溝通、操作”這五大問題,只有這些問題解決了,才有機會談論安全性、易用性、低成本等問題。
物聯(lián)網(wǎng)是物體的社會,就是人類企圖組建一個智慧的物體網(wǎng)絡,來替人類服務,要發(fā)揮物體網(wǎng)絡的智慧,其實跟人類社會網(wǎng)絡有很多共同點。人與人之間,也存在連接、區(qū)別、識別、溝通、互動(也就是物聯(lián)網(wǎng)說的互操作)這些問題。人和人之間,首先要通過見面、電話、信函等方式建立連接,才有機會交流吧。不同的人,必須能夠區(qū)別開來吧,世界上沒有完全一樣的兩張臉,就提供了區(qū)別的基礎;有了區(qū)別后,你和你交流的對象,必須認識吧,你不能稀里糊涂就跟人走吧;能識別還是不行啊,必須能溝通啊,雞跟鴨講是不行的,得有相同的語言,配翻譯也行。以上條件都具備了,才有互動(物聯(lián)網(wǎng)中的互操作)的可能。以上過程,由于人具有高級智慧而變得簡單,例如語言不通的人之間,還可以通過場景、手勢、畫畫、眼神等來交流;對于只有非常有限的智慧的電子產(chǎn)品來說,會變得復雜和困難。
物聯(lián)網(wǎng)中,連接問題是最簡單最基本的問題,也是當今操作系統(tǒng)支持最為充分的,業(yè)內(nèi)很多人都在談論的所謂協(xié)議,多數(shù)指的是通信協(xié)議。為什么說它簡單呢?俗話說,能用錢解決的問題,都不是問題。這句話套用到物聯(lián)網(wǎng)中就是,能用技術解決的問題,都不是問題。連接就是一個能用技術解決的問題,我們接下來會談到,物聯(lián)網(wǎng)面臨的問題,大多數(shù)都不是技術能解決的問題,設計操作系統(tǒng),要充分認識物聯(lián)網(wǎng)面臨的問題的基礎上,把現(xiàn)階段能解決的問題做到極致,尚不具備條件的,逐步地提出解決方案,或者為解決這些問題提供一些必要的支持。當前,連接的技術方面,雖然還有些紛擾,但也就WiFi、ZigBee、藍牙等少數(shù)幾個協(xié)議在競爭,已經(jīng)算是進入了諸侯爭霸時代,無論是連接還是組網(wǎng)方式,技術上都比較成熟。而事關設備識別和溝通方面,還一盤散沙呢。還有一些物聯(lián)網(wǎng)開發(fā)平臺,或者操作系統(tǒng),發(fā)展自己的網(wǎng)絡協(xié)議,企圖形成技術準入門檻,進而壟斷。巨頭可以這樣做,但我認為那是不可能成功的,為什么呢?Android、iOS能形成壟斷的原因是什么?那是因為它足夠復雜,一般人做不出來,而且手機操作系統(tǒng)作為應用分發(fā)和服務投送的平臺,其生態(tài)系統(tǒng)上的APP廠商客觀上不希望有太多平臺,做一個APP,需要同時推出iOS、Android、win-mobile三個版本,已經(jīng)夠煩的了,再多幾個操作系統(tǒng)的話,還不暈死,所以廠商會主動地選擇少數(shù)幾個最受歡迎的操作系統(tǒng)予以支持。所以在通用操作系統(tǒng)上,容易形成一將功成萬骨枯的壟斷局面。而對于物聯(lián)網(wǎng)的接入?yún)f(xié)議來說,接入公網(wǎng)的技術已經(jīng)成型,就是TCPIP,沒什么好爭的了,它是個公共協(xié)議,大家都能用;而局域無線網(wǎng)絡,分兩大類,一類是像智能家居一樣,需要接入不同廠家的設備的,這種網(wǎng)絡,必須使用統(tǒng)一的網(wǎng)絡協(xié)議,一致性高的網(wǎng)絡協(xié)議,不要搞成不同廠家的芯片互不兼容;另一類是不需要接入不同廠家設備的無線局域網(wǎng),例如某些工業(yè)控制網(wǎng)。大多數(shù)無線局域網(wǎng)應用都比較簡單,其所承載的業(yè)務也往往單一,就像開關插座不可能形成壟斷一樣,局部物聯(lián)網(wǎng)的網(wǎng)絡協(xié)議,也不太可能像IP網(wǎng)絡那樣,形成一個協(xié)議獨大的局面,大家都有機會,更不可能形成少數(shù)幾家開發(fā)工具壟斷的局面,操作系統(tǒng)也會呈百花齊放的精彩。
對于網(wǎng)絡,無非是以下幾種,就物聯(lián)網(wǎng)整體來說,應該是以下多種網(wǎng)絡的混合體。
中心服務網(wǎng)廣域,就是有一個數(shù)據(jù)和運算中心,執(zhí)行各種各樣的服務,如數(shù)據(jù)存儲、分析、分發(fā)、查詢等。
無中心網(wǎng)廣域,任何終端都可以找到另一個終端,而無需通過任何服務器,從安全性角度來講,它能避開不受信任的服務器,這是未來組網(wǎng)的發(fā)展方向之一。
固定局域網(wǎng),例如一個固定位置安裝的無線傳感器網(wǎng)絡,這種網(wǎng)絡,往往內(nèi)部組成一個mesh網(wǎng),然后通過一個公共出口連接到公網(wǎng),或者根本就不連接到公網(wǎng)。
流動區(qū)域網(wǎng),例如智能交通,汽車到了哪一個路口,就和哪一個路口的信號燈聯(lián)網(wǎng);跑到哪條路上,就跟那條路的路燈聯(lián)網(wǎng),是否連入公網(wǎng),并不重要。
連接也包含組網(wǎng)、維持網(wǎng)絡連接、設備發(fā)現(xiàn)的問題,維持連接在物聯(lián)網(wǎng)中是一個很重要的問題,為什么呢?因為物聯(lián)網(wǎng)中有許多低功耗設備,這些設備絕大部分時間是休眠的,又要省電,又要不丟失連接,需要有點智慧。維持連接一般是用心跳的方式,對低功耗設備,合理的心跳間隔、快速喚醒、快速連接,連接完后快速返回休眠狀態(tài),就非常重要了。操作系統(tǒng)能做啥?只需要支持常見的無線連接如ZigBee、藍牙、WiFi等,并實現(xiàn)組網(wǎng),在低功耗上做足文章就可以了。至于幾種連接方式,諸侯爭霸最終誰執(zhí)牛耳,沒操作系統(tǒng)什么事,只能隔岸觀火、且看風云。
談到設備區(qū)別,就開始出現(xiàn)問題了,網(wǎng)絡中的兩個設備,你必須能夠區(qū)別出他們是不同的個體,就像人的身份證號一樣,每個設備也必須有一個身份證號,或者在你所在的區(qū)域網(wǎng)中有一個唯一的號碼也行。這個唯一的號碼,誰來分配呢,就成了問題,分配號碼的人,就成了老大,誰是誰啊,憑什么你當老大?其實設備區(qū)別這個問題,很早就有人想解決了,IPV4有一個32位地址,當時覺得32位足夠大了,網(wǎng)卡考慮的周全些,有48位MAC地址,也不夠大。maxim公司的iButton以及802.15.4,都有一個64位的唯一地址,理論上,64位夠用了,但maxim公司是一個企業(yè),自然無法成為老大;802.15.4綁定了特殊的連接方式,也無法成為老大,WiFi節(jié)點、有線網(wǎng)絡的MAC節(jié)點,都會站出來反對你。那只剩下IPV6了,將來,只要需要接入網(wǎng)絡的物聯(lián)網(wǎng)節(jié)點,都會有一個固定的IPV6號碼。但802.15.4的64位地址,802.11n的48位地址也不會消亡,有許多設備根本就不上廣域網(wǎng),只要在其局域網(wǎng)內(nèi)有唯一地址就足夠了。當然,IPV6也有問題,萬物聯(lián)網(wǎng)時代,一個生產(chǎn)水杯的小工廠,怎么低成本地獲得IP呢?又如何收回其IP呢?如果不收回,垃圾桶里,每天都會有無數(shù)的IP,即使128位的IP,也遲早會消耗完的。這個問題,操作系統(tǒng)能做什么?操作系統(tǒng)不需要做多少事,只需要支持IPV6就可以了。
說到設備識別,頭痛的問題,就開始來了,就目前而言,并沒有任何一個物聯(lián)網(wǎng)方案能完美解決設備識別的問題。一個最簡單的智能交通系統(tǒng),要實現(xiàn)這樣的功能,哪個方向有車來,就開哪個方向的綠燈,都有車來,就根據(jù)流量智能調(diào)整紅綠燈周期。問題就來了,你如何判斷路上過來的是一輛車,還是一條狗!東西向有車來,南北向跑來一只狗,綠燈給誰放行?
識別車和狗,還是最基本的識別問題,只是識別物種,還沒有要你識別個體呢。識別有兩個層次,一是人和物之間的互相識別,當然主要是人識別物,另一個是物和物之間的識別。由于人的智慧,人會根據(jù)許多的參考條件來進行模糊識別,人工智能也可以這樣做,但人工智能畢竟無法跟人比,只能在有限條件下,做簡單的輔助識別。物聯(lián)網(wǎng)不是要有智慧么?要為個體提供專屬服務么?做不到識別,一切妄談。有些朋友會想到,用它的128位IP,或者唯一的MAC地址,不就可以了么?對不起,地址只能起到區(qū)別的作用,是起不到識別作用的,除非你為地球上的每一類物體都進行分類,不同種類的物體,給分配不同的IP段。可行么?拉倒吧,不說自然界每天都在誕生的新物種,或者新發(fā)現(xiàn)的物種,就是在創(chuàng)客之都深圳,創(chuàng)客們每天新設計出來的新奇玩意,你都數(shù)不過來。自描述是一個辦法,因為絕大多數(shù)的物聯(lián)網(wǎng)應用,只是要求識別部分類別的物體,回到前面所講的智能交通,只要所有的汽車,都用一句“Iamacar,。。。”來描述,就不會跟跑過來的狗弄混。當然,對于具體應用而言,它不需要識別全地球的智能設備,能夠識別跟具體應用相關的設備就行了,可以自己定義識別規(guī)則,這純粹是應用自己的事,操作系統(tǒng)真的沒有太多事做,你只能做些輔助線的工作,例如把物體的身份證號和自描述語句傳遞給應用程序,僅此而已。
最大的問題是溝通,溝通也分為人和物溝通與物和物之間溝通,就是互相明白對方在說什么。讓“物體”說同樣的話,互相聽懂,這是最困難也最缺乏標準也是不可能有標準的。如果是物與人之間溝通,就好辦多了,舉個例子吧,一個智能溫控器,顯示一個按鈕,無論在按鈕上顯示向上箭頭,還是三角符號,或者英文“up”,或者中文“上”,人一看,都能知道這是控制溫度上升用的。但機器不行,你必須轉化為編碼,像“03”表示溫度上升,“04”表示下降,其他廠家生產(chǎn)的主控設備,如何知道“03”而不是“08”表示上升,如何讓所有廠家生產(chǎn)的溫控器也用“03”表示溫度上升,“04”表示下降,這就有很大的問題。能夠用標準去統(tǒng)一千萬種物聯(lián)網(wǎng)節(jié)點輸出的數(shù)據(jù)和接受的控制信息格式呢嗎?你能窮舉物聯(lián)網(wǎng)中數(shù)以千萬計的物體所需要輸出的數(shù)據(jù)和接受的控制命令,一一予以編號么?即使現(xiàn)有的物體都編號了,新冒出來的物種如何及時編號呢?即使解決了編號問題,還有傳輸順序呢?數(shù)據(jù)包里面如果有溫度,有濕度,也有告警信息,這些東西在數(shù)據(jù)包里面怎么排列,都能搞出無數(shù)種組合出來。所以,根本不可能有標準去規(guī)范物聯(lián)網(wǎng)中萬千種物體的狀態(tài)、測量、控制命令的格式,各智能硬件的生產(chǎn)廠家,一定是自由飛翔的。事實上,也確實有通過窮舉網(wǎng)絡中所有需要傳輸?shù)男畔⒌囊?guī)范,例如CANOPEN的“對象字典”,每一個CANopen設備里,都存儲了一部字典,其主要構成部分是通用字典,這樣的話設備與設備之間就能直接進行對話了。ZigBee協(xié)議通過profile和clusterID編碼,來列舉部分ZigBee設備常“說”的話,使ZigBee設備之間互相聽懂。但這兩協(xié)議,都沒有局限于窮舉,都是開放的,CANOPEN允許在通用字典外,定義個性化字典,ZigBee也沒有允許使用非標準定義的profile和cluster。無論是對象字典,還是profile,都只是在極小的一個領域中窮舉,它所規(guī)范的信息,與物聯(lián)網(wǎng)中的信息相比,滄海一栗而已啊。而且標準其實是很不靠譜的,所有標準,都是圍繞一個非常小的領域進行,尚且無法避免人們閱讀標準后的不同理解,不同理解導致的是不同的執(zhí)行結果。變電站自動化,這么小的一個領域,有嚴謹規(guī)范的協(xié)議,全國只有幾十個廠家,而且在國家電網(wǎng)的強力推動下,花了不下幾十億,幾年時間,做過無數(shù)次互操作測試,才基本統(tǒng)一了設備間傳輸?shù)男畔⒏袷?,設備之間才勉強可以對話。
如果能解決設備識別和設備間“溝通”問題,那么智能設備間的互操作就水到渠成了,由于在“識別”和“溝通”方面,無法形成一個開放的、廣泛適用的標準,許多物聯(lián)網(wǎng)系統(tǒng)就另辟蹊徑,盡可能繞過標準問題。同時提供智能硬件開發(fā)平臺以及通用操作系統(tǒng)的中間件,或者開發(fā)一個跨界系統(tǒng),使物聯(lián)網(wǎng)中不同設備上使用相同的開發(fā)工具,例如liteOS,就提供了iOS和Android上的中間件,我則直接把操作系統(tǒng)設計成既適用于通用設備,又可以在智能硬件上跑。人與物之間的操作問題,可以通過遠程終端的方案,完美地解決。傳統(tǒng)的非智能設備,人和物直接的操作,是通過文字、圖形、按鍵、觸屏這些介質(zhì)來完成的,在物聯(lián)網(wǎng)世界里,無非是操作介質(zhì)和執(zhí)行操作的智能硬件之間,隔了個空間距離而已。手持的操作界面,就是一個顯示和操作終端而已,所有操作,對于設備來說,就像在設備上直接操作一樣,這樣才能規(guī)避沒有標準的實事。例如空調(diào)的控制命令,你就告訴空調(diào),用戶按了向下的箭頭就好了,空調(diào)自己知道那是要降溫。但如果手機把遙控命令翻譯成命令碼下發(fā)的話,因為沒有標準,每家的命令碼都不一樣,怎么辦?這不是踏進沒有標準的泥潭了么?下面我們來談一種不靠譜但廣泛使用的方案,和兩種比較靠譜的方案。
先談談不靠譜的方案,現(xiàn)在有些智能硬件廠家,開發(fā)專門的APP讓用戶操作智能硬件,這是死路一條,為什么呢?就以智能家居為例吧,假設家里安裝了海爾的智能冰箱,美的的智能微波爐,西門子的智能熱水器,創(chuàng)維的智能電視,格力的智能空調(diào),還有各種智能開關,溫度、濕度傳感器等等。你的手機要為每個智能設備安裝一個APP,密密麻麻擺滿你的手機,那些密集恐懼癥的患者,非跳樓不可。所以,需要安裝廠家專門開發(fā)的APP才能操作的物聯(lián)網(wǎng)方案,都是不靠譜的。
兩種靠譜的方案,是HTML和遠程桌面。
遠程桌面是一個很好的解決方案,手機只是一個遠程顯示終端,而不是一個功能終端,手機只充當節(jié)點的顯示器和觸摸屏,這就要求,節(jié)點上的操作系統(tǒng),其gui必須支持遠程桌面,該遠程桌面必須具備以下特性:
極其省資源,必須能夠在只有幾十K內(nèi)存的節(jié)點上運行,你總不能要求一個微波爐控制器擁有數(shù)M的內(nèi)存吧。
極其節(jié)省帶寬,有些節(jié)點的功耗非常低,低功耗意味著低主頻,即使你用WiFi接口,其傳輸帶寬也必然非常小,要在非常低的速率下實現(xiàn)遠程桌面,是一個挑戰(zhàn)。我做過測試,普通的非動畫桌面,串口就可以流暢傳輸。
無論節(jié)點本身是否有顯示器、觸摸屏、按鈕,都可以實現(xiàn)遠程界面。
使用遠程桌面后,你的手機只需要安裝一個智能設備APP,點開該APP后,你家里的所有智能設備都會被羅列在里面。
遠程桌面的缺點是,動畫顯示很困難,尤其是大面積的動畫,有些消費品是有這個需求的,這種時候,就要使用HTML了。除了動畫外,遠程界面的優(yōu)勢還是很明顯的。
首先是兼容性問題,瀏覽器的標準化程度其實不高,網(wǎng)銀挑瀏覽器大家都知道了,就是準備這次視頻之前,測試過幾個直播網(wǎng)站,既挑瀏覽器,又挑操作系統(tǒng),很令人失望。
其次是一致性問題,有許多智能硬件,本機是有顯示界面的,比如冰箱,在家里,你可能習慣于直接在冰箱上操作,用冰箱本身的界面操控設備,在外面,你就用手機操作,界面跟冰箱上的界面完全一樣,就像站在冰箱前操作一樣,無須學習兩套界面。如果冰箱上和手機上的界面不一樣的話,你會抓狂的,遠程桌面天生就是完全一樣的。而使用HTML的話,你則要自己維護兩份界面的一致性,不要小看維護這個一致性問題,搞過硬件的人就知道,維護原理圖和bom表的一致性,是一個致命的工作;維護過兩個以上并行軟件版本的人也應該清楚,確保兩個版本應該相同的部分是一致的,是非常困難的。
大家來看一個有趣的圖片,某網(wǎng)站的NBA轉播界面,比分以不同的形式,出現(xiàn)在同一個界面的3個位置,居然都不一樣。
物聯(lián)網(wǎng)技術上面臨的基本問題和操作系統(tǒng)設計
說了那么多物聯(lián)網(wǎng)應用,氣質(zhì)在工業(yè)控制上,才是遠程界面真正體現(xiàn)價值的地方,有興趣的同學,歡迎私下跟我交流。
以上是物聯(lián)網(wǎng)的核心基礎問題,其實物聯(lián)網(wǎng)的問題遠遠不止這些,試舉幾個:
信息安全問題,斯諾登事件,使人無法相信網(wǎng)絡,特別是中心服務器,過去,人們認為閉源可以確保安全,但斯諾登事件,使人們不相信閉源服務器的運維組織,反而開源更易于獲得信任。無中心的可信連接,點對點通信可以繞開不受信任的云。
普通老百姓對于安全性的擔心,更為直接些,例如,智能門鎖會不會被人破解呢?黑客賊是否可以通過家里電器的開關情況知道何時家里沒人而方便下手呢?家里的攝像機是否會被黑客控制?
使用壽命問題,長壽命的基礎設施,長期維護和服務很困難,壞了誰來修,供應商倒閉了呢?比如智能門鎖,普通門鎖用幾十年基本不會壞,而智能門鎖則不然,電子設備普遍不能超過10年,大多數(shù)5年就壞了。
電子設備可靠性問題,智能燈泡的控制器壞了,開不了或者關不掉怎么辦?
降低研發(fā)成本,操作系統(tǒng)需要提供提供易學易用的開發(fā)方法和開箱即用的解決方案。
稍微總結一下,操作系統(tǒng)究竟解決了物聯(lián)網(wǎng)的什么問題。
連接:操作系統(tǒng)通過集成常見的網(wǎng)絡協(xié)議棧,例如TCP/IP、ZigBee、藍牙、WiFi驅(qū)動等,算是為解決連接問題作出了貢獻。
智能硬件間的區(qū)別和識別:這兩個問題,似乎真的跟操作系統(tǒng)沒啥關系,基本上只能為同一廠家產(chǎn)品之間的“區(qū)別和識別”提供部分幫助。
溝通和互操作:物和物之間的溝通和互操作,操作系統(tǒng)基本上看熱鬧而已,同樣只能對使用同一個廠商提供的開發(fā)工具開發(fā)的特定應用提供一些幫助,其互操作,基本僅限于使用它們的開發(fā)工具開發(fā)的智能硬件,且主要是物和人之間;人和物之間的互操作,支持支持遠程桌面和webserver的操作系統(tǒng)能夠提供比較完善的幫助。