物聯(lián)網(wǎng)喊了多少年了,總是雷聲大雨點(diǎn)小,廠商多應(yīng)用少;在電商里也可以看到,智能硬件呈現(xiàn)三多三低的尷尬境地:品種多,廠商多,賣家多,銷量低,價(jià)格低,評(píng)價(jià)低;產(chǎn)業(yè)見都沒有見過藍(lán)海,就已經(jīng)在紅海擱淺了。究其原因,無法實(shí)現(xiàn)智慧互聯(lián),聯(lián)而不慧是主因。物聯(lián)網(wǎng)的中心思想在于連接之后的智慧,而現(xiàn)有產(chǎn)品,多呈現(xiàn)出孤島狀態(tài),頂多同一個(gè)廠商的產(chǎn)品之間,勉強(qiáng)實(shí)現(xiàn)互操作。
我在《物聯(lián)網(wǎng)技術(shù)上面臨的基本問題和操作系統(tǒng)設(shè)計(jì)》一文中提到,物聯(lián)網(wǎng)中有兩道很難繞過去的坎,一是物體識(shí)別,二是物體溝通。正是這兩道坎,導(dǎo)致了智能硬件之間互聯(lián)而不智慧的問題,并初步提出了局部的解決方案,所謂局部,就是說,該解決方案并不能解決全部問題,只能部分地化解問題。在這里,我將進(jìn)一步細(xì)化該解決方案。
識(shí)別和溝通,都沒有標(biāo)準(zhǔn),而且在可見到的將來,也不可能有標(biāo)準(zhǔn)。這使得網(wǎng)絡(luò)中的物體,各自自言自語,無法溝通對(duì)話,更加無法互操作,物聯(lián)網(wǎng)要實(shí)現(xiàn)智慧互聯(lián),路很長(zhǎng),很艱難。
雖然難,但不能不走,各開發(fā)工具廠商,都盯上了這塊肥肉,各自推出了其解決方案。下圖為一個(gè)典型的解決方案示意圖:
各家的方案,共同的特點(diǎn)是,在智能設(shè)備端,提供一個(gè)操作系統(tǒng),以及聯(lián)網(wǎng)所需的基本組件,高端些的,還提供腳本語言支持。在手機(jī)端,提供一個(gè)SDK包,該SDK包提供手機(jī)與智能硬件端互操所需要的api,自定義一套命令和數(shù)據(jù)格式。由于各廠家定義的命令和數(shù)據(jù)格式并不一致,導(dǎo)致其開發(fā)的產(chǎn)品,只能保證同一個(gè)廠家開發(fā)的產(chǎn)品互聯(lián)互通。要所有智能硬件互聯(lián)協(xié)作,這能一個(gè)廠商就包攬了網(wǎng)絡(luò)中的所有產(chǎn)品,號(hào)稱為一攬子解決方案,只用你一家的產(chǎn)品就可以了。這實(shí)質(zhì)是限制了用戶的選擇權(quán),用戶不可能為了讓智能家居運(yùn)轉(zhuǎn)起來,家里所有電器都選購(gòu)?fù)粋€(gè)廠商的的吧,生產(chǎn)電冰箱的廠家,也不太可能生產(chǎn)跑步機(jī)吧;又比如智能工廠,要求用戶的所有智能工業(yè)設(shè)備,使用同一個(gè)廠商的,也不可能;智能交通,要求路網(wǎng)中的所有設(shè)備和汽車來自同一個(gè)廠商,更加天方夜譚了。
不同的廠商,即使用相同的開發(fā)工具,所開發(fā)出來的APP和智能硬件,也是不能互聯(lián)互通的。以現(xiàn)在最火的智能家居為例,如果你家里安裝了海爾的智能冰箱,美的的智能微波爐,西門子的智能熱水器,創(chuàng)維的智能電視,格力的智能空調(diào),還有各種智能開關(guān),溫度、濕度傳感器等等。請(qǐng)問,你手機(jī)中需要安裝多少APP,會(huì)不會(huì)煩死用戶。
物與物之間的識(shí)別和溝通,解決起來很困難,我們能不能退而求其次,先解決物與人之間的溝通呢?
物與人之間,無非是通過人機(jī)界面,通過人機(jī)界面,不同廠商間設(shè)備不能互通,問題在哪里呢?問題在于,開發(fā)工具想多了,把簡(jiǎn)單問題復(fù)雜化了。比如空調(diào),一個(gè)“溫度下降”按鈕,無論哪家的設(shè)計(jì),用戶都能一眼就認(rèn)出來,用戶按下該按鈕后,開發(fā)平臺(tái)開始不安分了,把“按下降溫按鈕”這個(gè)事件,翻譯成一個(gè)特定的命令碼,例如0x80,發(fā)下去給空調(diào)??照{(diào)如果是同一個(gè)廠商開發(fā)的,就知道代碼0x80代表溫度下降。如果是別的廠家開發(fā)的呢,天知道0x80代表什么意思,說不定就關(guān)機(jī)了呢。進(jìn)一步地,如果你在空調(diào)本身的人機(jī)接口界面上直接按按鈕,還會(huì)有問題么?立馬腦洞大開,只要你不翻譯,讓用戶的界面遠(yuǎn)程顯示在手機(jī)上,用戶按手機(jī)上的按鈕,就像按空調(diào)上的按鈕一樣,互通的問題,不就被繞過去了么?這,不就是遠(yuǎn)程桌面么?原來,遠(yuǎn)程桌面能解決物聯(lián)網(wǎng)中缺乏標(biāo)準(zhǔn)的情況下的物與人之間的協(xié)作問題。
標(biāo)準(zhǔn)包含了巨大的利益,標(biāo)準(zhǔn)之爭(zhēng)是政治斗爭(zhēng),就是無賴扯皮,物聯(lián)網(wǎng)中物體的的識(shí)別和溝通標(biāo)準(zhǔn),不要說不可能有,即使能定出來,也是猴年馬月的事。與其企圖制作標(biāo)準(zhǔn),或者等待標(biāo)準(zhǔn),還不如繞過去,不需要標(biāo)準(zhǔn),也能實(shí)現(xiàn)功能,這就是遠(yuǎn)程界面。遠(yuǎn)程界面把復(fù)雜的聯(lián)網(wǎng)開發(fā),變成簡(jiǎn)單的單機(jī)開發(fā)。原來需要同時(shí)開發(fā)智能硬件和手持設(shè)備(通常是手機(jī))端的應(yīng)用程序,現(xiàn)在只需要開發(fā)智能硬件端的了。
遠(yuǎn)程界面的實(shí)現(xiàn)方案,有兩個(gè),HTML和遠(yuǎn)程桌面,具體的論述,已經(jīng)在《物聯(lián)網(wǎng)技術(shù)上面臨的基本問題和操作系統(tǒng)設(shè)計(jì)》中介紹了一些,在這里進(jìn)一步細(xì)化一下HTML5和遠(yuǎn)程桌面各自的特點(diǎn)和適用范圍。
HTML5:智能硬件端需要webserver,技術(shù)相對(duì)復(fù)雜,很靈活,編程難度較大,CPU資源要求高,且容易引起不兼容的問題,網(wǎng)銀以及很多網(wǎng)站挑瀏覽器的問題,大家都知道的。HTML5在動(dòng)畫等動(dòng)態(tài)顯示方面有無可比擬的優(yōu)勢(shì),適合于界面要求很花哨的消費(fèi)品。對(duì)于工業(yè)物聯(lián)網(wǎng)應(yīng)用,要求高可靠性和高實(shí)時(shí)性,遵循簡(jiǎn)單可靠的原則,一般仍然使用C語言開發(fā),不太喜歡HTML5這樣復(fù)雜的技術(shù)的。本地有LCD時(shí),需要獨(dú)立設(shè)計(jì)本地UI,難于保證本地UI和遠(yuǎn)程UI一致性。
遠(yuǎn)程桌面:可以直接使用djygui,或使用其他支持遠(yuǎn)程桌面的rtos,技術(shù)簡(jiǎn)單可靠,編程難度低,CPU資源需求低,沒有兼容性問題,無論本地有沒有LCD都可以自動(dòng)適應(yīng)。流量中等,如果是WiFi本地通信,動(dòng)畫也不成問題,遠(yuǎn)程則比較消耗流量。非常適合工業(yè)控制場(chǎng)合,例如智能工廠內(nèi)部。
如果使用HTML5,在頁(yè)面設(shè)計(jì)時(shí),必須如實(shí)地把用戶的操作“告訴”智能硬件,而不能自作聰明地做編碼轉(zhuǎn)換,例如把用戶的控制命令翻譯成編碼命令。例如用戶按下空調(diào)向下的按鈕,你就告訴智能硬件,用戶按了向下的按鈕,不要用諸如03表示降溫,04表示升溫這樣的編碼。這是許多用戶都容易犯的錯(cuò)誤,遠(yuǎn)程桌面則沒有這個(gè)問題。
遠(yuǎn)程界面,還是打破巨頭壟斷的利器,你想,巨頭們布下一張網(wǎng),網(wǎng)中設(shè)備,都按他們的SDK開發(fā),例如騰訊的QQ物聯(lián),他們會(huì)定義好所有的接口,你只要按照接口實(shí)現(xiàn)功能,中小創(chuàng)業(yè)者幾乎沒有任何創(chuàng)新空間,只能淪為替騰訊搬磚。即使如此,不同廠商之間的設(shè)備,依然無法互通。而如果是遠(yuǎn)程桌面,因?yàn)槭謾C(jī)僅僅充當(dāng)智能硬件的顯示器和觸摸屏,具有天生的開放性,任何廠商的設(shè)備,只要支持遠(yuǎn)程界面,都可以自由接入,完全自己定義自己的功能,不受APP預(yù)設(shè)的功能限制。
加速物聯(lián)網(wǎng)產(chǎn)業(yè)的發(fā)展,物體識(shí)別和溝通的問題,是阻礙物聯(lián)網(wǎng)發(fā)展的兩大門檻,遠(yuǎn)程界面方案,雖然沒有解決物與物之間的溝通問題,但解決了物與人之間的溝通問題,必定會(huì)促進(jìn)物聯(lián)網(wǎng)產(chǎn)業(yè)的發(fā)展。