隨著物聯(lián)網(wǎng)的大潮,無數(shù)的設(shè)備被安裝上WiFi模塊,接入到互聯(lián)網(wǎng)上。比如國內(nèi)的家電巨頭海爾、美的、格力、海信等,已經(jīng)在2014年推出了一系列帶WiFi的智能家電產(chǎn)品,包括空調(diào)、冰箱、洗衣機(jī)、熱水器、空氣凈化器、烤箱、電飯煲等等。等待了這么多年,智能家居終于開始成熟了。
相對于藍(lán)牙和ZigBee等其他無線網(wǎng)絡(luò)技術(shù),WiFi最大的優(yōu)勢是無需依賴手機(jī)或者其他中間設(shè)備,通過WiFi路由器,就能夠連接到互聯(lián)網(wǎng)上,直接與云服務(wù)器連接或者進(jìn)行遠(yuǎn)程控制。而且目前的WiFi模塊功耗和價(jià)格已經(jīng)下降得很多,很容易被嵌入到各種物聯(lián)網(wǎng)設(shè)備中,無需過多的擔(dān)心成本和功耗。
但是,將WiFi模塊用在物聯(lián)網(wǎng)設(shè)備中,也有一個(gè)麻煩,就是WiFi的初始設(shè)置。要讓這些設(shè)備連接上WiFi路由器,需要首先讓它們知道WiFi路由器的名稱(SSID)和密碼。但是不同于傳統(tǒng)的PC或者手機(jī),大多數(shù)物聯(lián)網(wǎng)設(shè)備沒有按鍵或者觸摸屏這樣的輸入接口,因此需要其他的方法將路由器的SSID和密碼告知物聯(lián)網(wǎng)設(shè)備。因?yàn)檫@些物聯(lián)網(wǎng)設(shè)備大多有與之配套的手機(jī)APP,問題也就變成了如何將SSID和密碼從手機(jī)APP傳送給這些設(shè)備。從目前已知的方法來看,主要有以下兩種。
第一種是基于WiFi模塊的SoftAP模式。在WiFi協(xié)議中,設(shè)備可以工作在AP模式,也可以工作在Station模式。比如WiFi路由器就是典型的AP,而手機(jī)和PC就是典型的Station。物聯(lián)網(wǎng)設(shè)備在絕大多數(shù)情況下都是工作Station模式,但是為了支持初始配置,許多WiFi模塊支持AP模式,當(dāng)然,不是全功能的AP模式,只是有限的功能,所以稱之為SoftAP。利用SoftAP進(jìn)行WiFi初始配置的流程如下:
使用這種方式的智能設(shè)備很多,比如小K智能開關(guān),第一次啟動(dòng)后會產(chǎn)生一個(gè)OK_SP3的熱點(diǎn),完成配置后就沒有了。
在具體APP的實(shí)現(xiàn)中,需要考慮Android和iOS的不同。比如WiFi路由器SSID一般是不用用戶輸入的,APP會提供一個(gè)周圍熱點(diǎn)的SSID列表,用戶選擇即可。但是iOS是不支持在APP中做WiFi掃描的,因此需要設(shè)備端先掃描一個(gè)SSID列表發(fā)給手機(jī),然后用戶在APP里面選擇。另外iOS是不支持在APP中切換WiFi連接的,因此用戶需要先手工連接到SoftAP,完成配置后,再切換回來。而Android中是可以的。Android的APP中可以先自動(dòng)連接SoftAP,配置完成后,再自動(dòng)切換到原來的AP,而用戶可能感覺不到這個(gè)過程,從而改善了用戶體驗(yàn)。
第二種是基于WiFi模塊的Sniffer模式。基于SoftAP的方式可以保證配置成功,但是用戶體驗(yàn)不太好。因?yàn)樗笫謾C(jī)先連接到SoftAP上,無論是手工的(iOS)還是自動(dòng)的(Android),配置完成后再切換回來。在此期間,手機(jī)因?yàn)殡x開了原先的WiFi路由器,因此失去了與互聯(lián)網(wǎng)的連接。這個(gè)是許多用戶感覺不爽的地方。而Sniffer模式不同。使用這種配置方式,用戶手機(jī)不需要斷開與當(dāng)前WiFi路由器的連接,從而可以保持與互聯(lián)網(wǎng)的連接。這也是這種方式經(jīng)常被稱為智能配置的原因。這種方式要求WiFi模塊支持Sniffer模式,也就是雜收模式(Promiscuous)。對無線通信熟悉的人都知道,無線通信本質(zhì)上是一種廣播。理論上,一個(gè)WiFi設(shè)備可以收到空氣中的所有包,只不過正常工作時(shí),底層將不需要的包過濾掉了。打開雜收模式,就是將底層收到的所有包,直接提交給上層處理。這樣,雖然WiFi模塊與路由器和手機(jī)之間沒有連接,但是它可以監(jiān)聽手機(jī)發(fā)出來的包,而手機(jī)APP也可以在這些包里面隱含配置信息,從而達(dá)到將配置信息傳送給WiFi模塊的目的。
手機(jī)發(fā)包時(shí),是連接在WiFi路由器上的。如果WiFi路由器是加密的,比如WEP和WPA,那么WiFi模塊收到的包必然也是加密的,模塊無法直接獲得包里面的信息,那么手機(jī)與模塊之間怎么傳遞信息呢?這就要深入理解一下WiFi幀的結(jié)構(gòu)。
?圖1,通用的WiFi幀結(jié)構(gòu)
從上圖可以看出,WiFi幀包括幀頭,幀體和校驗(yàn)和三部分。其中幀頭是不加密的,幀體部分根據(jù)幀類型的不同,有加密的,也有不加密的,比如管理幀ProbeRequest中的幀體部分就是不加密的。
另外,WiFi幀的長度也是很有用的信息。不管幀怎樣加密,對于一定的加密方式(WEP,CCMP,TKIP),加密后的幀長度總是原始數(shù)據(jù)長度加上一個(gè)固定的偏移。這樣手機(jī)APP就可以通過控制數(shù)據(jù)包長度的方式來傳遞有用信息。
總結(jié)起來,目前的智能配置一般有下面三種方式:
1, 第一種方式通過WiFi幀的長度傳遞信息。比如要傳遞一個(gè)字符串”abc”,三個(gè)字符a、b、c對應(yīng)的ASCII分別是97、98、99。手機(jī)APP可以生成數(shù)據(jù)包,控制其長度為97、98、99加上固定的偏移量。這樣WiFi模塊捕獲到包之后,就可以根據(jù)包長度提取有用的信息了。目前微信的airkiss就是使用這樣的方式。京東的通用智能家居APP也是使用的這樣的方式。
2, 第二種方式通過WiFi幀的MAC地址傳遞信息。WiFi幀頭雖然是不加密的,但是它的內(nèi)容都是底層WiFi驅(qū)動(dòng)填寫的,而手機(jī)APP處于應(yīng)用層,是無法控制其中的內(nèi)容的,但是有一個(gè)例外。就是手機(jī)APP發(fā)送UDP組播包時(shí),組播包的目的IP地址的后23位會映射到WiFi幀目的MAC地址后23位,這樣手機(jī)APP可以通過修改UDP包的組播地址,達(dá)到傳遞信息的目的。比如傳遞“abc”,可以發(fā)送3個(gè)組播包,目的地址分別是229.0.0.97,239.0.0.98,239.0.0.99。這樣WiFi模塊捕獲到包之后,就可以從MAC地址中提取到有用的信息了。比如海爾的U+智能設(shè)備就是采用這樣的方式。
3, 第三種方式是通過管理幀的幀體部分傳遞信息,一般使用ProbeRequest,因?yàn)樗鞘謾C(jī)APP可以在應(yīng)用層控制的。手機(jī)APP可以在應(yīng)用層構(gòu)造一個(gè)目標(biāo)SSID,啟動(dòng)掃描。比如傳遞”abc”,可以讓手機(jī)掃描名為“abc”的目標(biāo)SSID。WiFi模塊捕捉到這樣的掃描幀之后,就可以從中提取出有用的信息了。
當(dāng)然,上面說的只是原理,真正實(shí)現(xiàn)的時(shí)候,有許多細(xì)節(jié)需要考慮。比如WiFi模塊并不知道手機(jī)在哪個(gè)WiFi信道上發(fā)包,要捕捉到手機(jī)發(fā)出的包,首先要鎖定信道。這就需要一些技巧。另外,安全性也是一個(gè)問題。因?yàn)槭謾C(jī)要把WiFi路由器的密碼傳送給WiFi模塊,如果是明文的,很容易就被截取了,從而給WiFi網(wǎng)絡(luò)帶來極大的安全隱患,這就需要對數(shù)據(jù)做擾碼,這就需要八仙過海、各顯神通了。
另外,SoftAP和智能配置也不是完全互斥的。智能配置雖然方便,但是在WiFi環(huán)境很復(fù)雜的時(shí)候,還是有一定的失敗概率,而SoftAP是可以保證成功的。所以很多智能設(shè)備都是先用智能方式配置,如果失敗就切換到SoftAP,比如海爾的U+智能家居設(shè)備。
以阿里云和百度智能云物聯(lián)網(wǎng)平臺為例,進(jìn)行了相關(guān)產(chǎn)品的功能梳理,這樣就可以從大的層面感知一下常規(guī)的物聯(lián)網(wǎng)平臺都有哪些功能。其中阿里云的物聯(lián)網(wǎng)平臺是【阿里云物聯(lián)網(wǎng)平臺】,百度的物聯(lián)網(wǎng)平臺主要是【IOT core】,以上產(chǎn)品我們在各自的官網(wǎng)都可以找到。下面簡單列舉一下兩個(gè)平臺的功能點(diǎn):
從產(chǎn)品功能性和豐富程度上,阿里云的物聯(lián)網(wǎng)平臺感覺成熟很多,是將iaas層基礎(chǔ)設(shè)施、設(shè)備接入服務(wù)、消息通信服務(wù)、監(jiān)控運(yùn)維服務(wù)、安全服務(wù)、設(shè)備端以及服務(wù)端的開發(fā)SDK集成服務(wù)全部整合在一起了,而百度智能云IOT core功能相對單一些。下圖中加粗的黃色字體是阿里云比百度云物聯(lián)網(wǎng)平臺多出來的大的菜單,其他的菜單基本能對標(biāo)上,但是細(xì)看還是有不少差別(感興趣的朋友可以自己去文檔中心了解下)。
下面以阿里云物聯(lián)網(wǎng)平臺為例,加上之前做的平臺功能,結(jié)合起來介紹一下,設(shè)備接入物聯(lián)網(wǎng)平臺,需要的最小化的功能和配置,也可以認(rèn)為是B端產(chǎn)品中常說的MVP。
平臺提供的實(shí)例,作為設(shè)備接入和業(yè)務(wù)管理的底層資源,可以理解為服務(wù)器資源,只不過物聯(lián)網(wǎng)平臺的創(chuàng)建的企業(yè)實(shí)例會對物聯(lián)網(wǎng)這個(gè)場景更有針對性。
主要配置項(xiàng)包括:地域、同時(shí)在線設(shè)備數(shù)、可創(chuàng)建的設(shè)備數(shù)、消息上下行TPS( TransactionPerSecond)、規(guī)則引擎TPS等等。
阿里云在創(chuàng)建的實(shí)例頁面做了相應(yīng)的監(jiān)控,若設(shè)備接入后實(shí)際運(yùn)行起來,發(fā)現(xiàn)資源不夠出現(xiàn)了預(yù)警,也可以選擇升配操作;百度物聯(lián)網(wǎng)平臺實(shí)例創(chuàng)建只選擇了實(shí)例所在地域,沒有細(xì)化到支持的在線設(shè)備數(shù)以及按照消息數(shù)計(jì)費(fèi),可能創(chuàng)建的單個(gè)實(shí)例有一個(gè)默認(rèn)的配置。
設(shè)備接入過程,可以簡單理解為將設(shè)備端與物聯(lián)網(wǎng)平臺側(cè)進(jìn)行連接,進(jìn)而可以完成數(shù)據(jù)采集,解析,消息通信,對設(shè)備狀態(tài)進(jìn)行遠(yuǎn)程監(jiān)控運(yùn)維。
主要配置項(xiàng)包括:創(chuàng)建產(chǎn)品、創(chuàng)建設(shè)備(對應(yīng)一個(gè)設(shè)備端的產(chǎn)品,比如攝像頭)、創(chuàng)建物模型(定義設(shè)備的信息采集點(diǎn),設(shè)備屬性)、創(chuàng)建云網(wǎng)關(guān),關(guān)聯(lián)設(shè)備和物模型。阿里云物聯(lián)網(wǎng)平臺對設(shè)備進(jìn)行了分類,所以有產(chǎn)品的概念,即同類設(shè)備集合為一個(gè)產(chǎn)品類型,并且根據(jù)業(yè)務(wù)的成熟度也抽象出來了一些標(biāo)準(zhǔn)產(chǎn)品類型,比如說智能城市,智能工業(yè)等等,這些標(biāo)準(zhǔn)產(chǎn)品中定義了可以通用的標(biāo)準(zhǔn)功能,在此基礎(chǔ)上可以添加自定義功能。
設(shè)備管理可以理解為對設(shè)備全生命周期的管理,包括添加、刪除、上線/下線、禁用/啟用;一切和設(shè)備相關(guān)的能力都可以在設(shè)備管理中提現(xiàn)。
主要配置項(xiàng)包括:設(shè)備基本信息(設(shè)備名稱、產(chǎn)品類型、所在地域、設(shè)備三元組、激活時(shí)間、上線時(shí)間等);設(shè)備topic列表;設(shè)備物模型數(shù)據(jù);設(shè)備指令下發(fā)(遠(yuǎn)程控制設(shè)備);設(shè)備日志;設(shè)備分組等。
設(shè)備端開發(fā)主要是為設(shè)備端提供接入物聯(lián)網(wǎng)平臺的能力,可以根據(jù)設(shè)備端支持的協(xié)議不同選擇不同的SDK開發(fā)工具包,阿里云也可以支持自定義SDK,自動(dòng)生成完整的開發(fā)工具包。
主要配置項(xiàng)包括:設(shè)備OS、設(shè)備硬件形態(tài)(單板系統(tǒng)、mcu/soc通信模組)、連接物聯(lián)網(wǎng)平臺協(xié)議(MQTT\HTTPS\CoAP)、數(shù)據(jù)加密、設(shè)備認(rèn)證方案,生成SDK后,由后端開發(fā)人員集成代碼包,查看設(shè)備上報(bào)數(shù)據(jù)情況。
以阿里云為例,還包括以下功能,感興趣的朋友可以去官網(wǎng)學(xué)習(xí)。
以上是設(shè)備完成物聯(lián)網(wǎng)平臺接入的基本功能,比較完善的平臺會在這個(gè)基礎(chǔ)上提供更豐富更便利的功能配置,可以讓PM甚至是客戶可以通過平臺側(cè)的簡單配置,就完成開發(fā)運(yùn)維的相關(guān)工作,十分便利。
阿里云物聯(lián)網(wǎng)平臺產(chǎn)品架構(gòu)圖
本文由@Sara Leu 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
聯(lián)網(wǎng)(IoT)系統(tǒng)設(shè)計(jì)領(lǐng)域面臨的挑戰(zhàn)之一是配置。隨著越來越多的設(shè)備制造商轉(zhuǎn)向云配置,他們發(fā)現(xiàn)平衡可伸縮性和安全性是一個(gè)嚴(yán)重的障礙。
本文探討了配置與物聯(lián)網(wǎng)之間的關(guān)系;回顧不同配置方法的優(yōu)缺點(diǎn);并評估配置的類型以及何時(shí)執(zhí)行。
對于物聯(lián)網(wǎng)設(shè)備,配置設(shè)備連接到網(wǎng)絡(luò)和適當(dāng)?shù)膽?yīng)用程序。配置的三個(gè)基本步驟是:
1. 注冊:包括分配一個(gè)唯一標(biāo)識,通常以X.509證書的形式,為設(shè)備分配一個(gè)唯一的公鑰和私鑰。
2. 配置:包括網(wǎng)絡(luò)設(shè)置、安全設(shè)置和安裝任何軟件更新等方面。
3. 部署:包括設(shè)備的物理安裝、通電、連接到網(wǎng)絡(luò)以及能夠與云通信的位置。
將物聯(lián)網(wǎng)設(shè)備安全連接到云端并擴(kuò)展流程的能力已被證明是一項(xiàng)挑戰(zhàn),特別是在尋求具有成本效益的解決方案時(shí)。為了更好地理解這些問題,需要回顧物聯(lián)網(wǎng)配置的類型,包括它們的優(yōu)缺點(diǎn)。
以下是物聯(lián)網(wǎng)配置有三種基本方法:
手動(dòng)配置需要將特定于設(shè)備的信息(例如,密鑰或唯一標(biāo)識符)手動(dòng)輸入系統(tǒng)。雖然這種方法適用于小批量設(shè)備,但對于大規(guī)模設(shè)備部署來說,它就成了一個(gè)問題。另一方面,它是一種非常簡單的方法,不需要復(fù)雜的基礎(chǔ)設(shè)施,并提供了對配置過程的高度控制。同時(shí),它的可擴(kuò)展性很差,而且很容易出現(xiàn)人為錯(cuò)誤。
OTA配置,也稱為零接觸或自動(dòng)配置,發(fā)生在設(shè)備首次連接到網(wǎng)絡(luò)時(shí)自動(dòng)請求和下載其配置時(shí)。服務(wù)器通常由提供配置服務(wù)的公司所有,可以使用從云服務(wù)供應(yīng)商租用的服務(wù)器空間。OTA配置具有高度可伸縮性,并且消除了與手動(dòng)配置相關(guān)的人為錯(cuò)誤問題。潛在的問題包括安全性,因?yàn)榕渲梅?wù)器可能成為在線攻擊的目標(biāo)。
基于云的配置是OTA供應(yīng)的一個(gè)子集,它專門使用云存儲服務(wù),在本文中,它涉及結(jié)合了安全私鑰和證書的云識別服務(wù)。它提供了出色的可伸縮性(這對于大規(guī)模設(shè)備部署非常理想)和自動(dòng)化,以及通過單個(gè)平臺管理所有設(shè)備的能力,該平臺具有管理和監(jiān)視設(shè)備的工具。基于云的配置的潛在問題包括對互聯(lián)網(wǎng)連接的依賴,就像OTA配置一樣,潛在的安全挑戰(zhàn)。盡管如此,基于云的配置為大型部署提供了高效的可伸縮性,并且可能是三種方法中最安全的。
另一個(gè)與配置相關(guān)的因素涉及到何時(shí)執(zhí)行供應(yīng):
工廠配置,也稱為預(yù)配置,發(fā)生在芯片制造過程中。雖然它允許設(shè)備在接入網(wǎng)絡(luò)后立即使用,但它缺乏靈活性,如果需要進(jìn)行更改,可能會導(dǎo)致問題。
預(yù)部署配置提供了高級別的自定義,但是如果在部署之后進(jìn)行更改,可能會出現(xiàn)重大問題。這種類型的配置可能很耗時(shí),而且只適用于大規(guī)模部署。有利的一面是,它支持在部署前對物聯(lián)網(wǎng)設(shè)備進(jìn)行全面測試。
部署后配置提供了部署前可用的一些定制,同時(shí)支持高度的靈活性。使用這種方法,安全漏洞可能在配置過程中成為一個(gè)問題。
部署后配置是最靈活和適應(yīng)性最強(qiáng)的方法,適用于涉及定期更新安全性或功能的情況。這種類型的配置可能更復(fù)雜。
將證書分配給設(shè)備也是物聯(lián)網(wǎng)預(yù)配的重要組成部分。證書配置通常包括生成證書請求,將該請求提交給證書頒發(fā)機(jī)構(gòu),以及安裝已簽名的證書。
物聯(lián)網(wǎng)設(shè)備認(rèn)證的一個(gè)重要方面是它如何提供身份驗(yàn)證,以確保設(shè)備是它所聲稱的,從而防止網(wǎng)絡(luò)安全攻擊,如中間人、欺騙和假冒。它還支持設(shè)備與網(wǎng)絡(luò)其他部分之間的加密通信。最后,它支持可伸縮性、安全的設(shè)備管理和數(shù)據(jù)完整性。
使用預(yù)配置的證書從設(shè)備到云的典型方法非常漫長且復(fù)雜,難以大規(guī)模執(zhí)行。
在這種方法中,訂購一批具有預(yù)發(fā)放證書的預(yù)發(fā)放安全芯片。一旦收到芯片,就必須在設(shè)備制造過程中提取每個(gè)芯片的證書。然后將所有證書記錄在與產(chǎn)品云兼容的清單文件中。接下來,必須手動(dòng)將證書提供給產(chǎn)品云。最后,物聯(lián)網(wǎng)設(shè)備使用提供的證書連接到其產(chǎn)品云。
注意,這個(gè)過程需要從每個(gè)單獨(dú)的芯片中提取證書并創(chuàng)建一個(gè)兼容的清單文件,然后進(jìn)行手動(dòng)云配置。這些步驟中的每一步都有可能引入錯(cuò)誤。這個(gè)過程也很難擴(kuò)展,而且很耗時(shí)。
本文轉(zhuǎn)載自 雪獸軟件
更多精彩推薦請?jiān)L問 雪獸軟件官網(wǎng)