1、專(zhuān)業(yè)術(shù)語(yǔ)
AP(Access Point):無(wú)線接入點(diǎn),是一個(gè)無(wú)線網(wǎng)絡(luò)的創(chuàng)建者,是網(wǎng)絡(luò)的中心節(jié)點(diǎn)。簡(jiǎn)單來(lái)講就像是無(wú)線路由器一樣,設(shè)備打開(kāi)后進(jìn)入AP模式,在手機(jī)的網(wǎng)絡(luò)列表里面,可以搜索到類(lèi)似TPLink_XXX的名字。
STA(Station):任何一個(gè)接入無(wú)線的設(shè)備都可以成為一個(gè)站點(diǎn),也就是平時(shí)接入路由器的設(shè)備。
SSID(Service Set Identifer):每個(gè)無(wú)線AP都應(yīng)該有一個(gè)標(biāo)示用于用戶(hù)識(shí)別,SSID就是這個(gè)用于用戶(hù)標(biāo)識(shí)的名字,也就是我們經(jīng)常說(shuō)到的wifi名。
BSSID(Service Set Identifer):每一個(gè)網(wǎng)絡(luò)設(shè)備都有其用于識(shí)別的物理地址,稱(chēng)作MAC地址,一般情況下出廠會(huì)有一個(gè)默認(rèn)值,可更改,也有其固定的命名格式,也是設(shè)備識(shí)別的標(biāo)識(shí)符。BSSID是針對(duì)設(shè)備說(shuō)的,對(duì)于STA的設(shè)備來(lái)說(shuō),拿到AP接入點(diǎn)的MAC地址就是這個(gè)BSSID
ESSID(Service Set Identifer):是一個(gè)比較抽象的概念,它實(shí)際上就和SSID相同(本質(zhì)也是一串字符),只是能如果有好幾個(gè)無(wú)線路由器都叫這個(gè)名字,那么我們就相當(dāng)于把這個(gè)SSID擴(kuò)大了,所以這幾個(gè)無(wú)線路由器共同的這個(gè)名字就叫ESSID。
舉個(gè)例子,如果在一臺(tái)路由器上釋放的WiFi信號(hào)叫某個(gè)名字如"Feng",這個(gè)名字“Feng”就成為SSID;如果在好幾個(gè)路由器上都釋放了這個(gè)WIFI信號(hào),那么大家都叫“Feng”,這個(gè)時(shí)候大家都遵循的這個(gè)名字就是ESSID。
總結(jié)一下:
BSSID就是具體的某個(gè)連鎖店編號(hào)或地址
SSID就是連鎖店的名字或照片
ESSID就是連鎖店的總公司或招牌或品牌
然后一般SSID和ESSID都是相同的
2、配網(wǎng)兩大技術(shù)
物聯(lián)網(wǎng)時(shí)代技術(shù)開(kāi)始規(guī)模化服務(wù)民眾,方便快捷顯得尤為重要,WIFI直連便是一個(gè)典型案例。目前主流的WIFI配置模式有以下兩種:
2.1、AP配網(wǎng)
設(shè)備熱點(diǎn)配網(wǎng),智能硬件處于AP模式(類(lèi)似路由器,組成局域網(wǎng)),手機(jī)用于STA模式
手機(jī)連接到處于AP模式的智能硬件后組成局域網(wǎng),手機(jī)發(fā)送需要連接路由的ssid和pwd以及自定義的一些信息至智能硬件,智能硬件接收后,找到對(duì)應(yīng)的路由器主動(dòng)去連接路由器,完成配網(wǎng)。
2.2、一鍵(smartConfig)配網(wǎng)
又叫智能配網(wǎng)、快速配網(wǎng)、簡(jiǎn)單配網(wǎng)。智能硬件處于混雜模式下,監(jiān)聽(tīng)網(wǎng)絡(luò)中的所有報(bào)文,抓取空口包。手機(jī)APP按照一定的協(xié)議格式將ssid和pwd及自定義的一些信息編碼,以UDP報(bào)文格式通過(guò)廣播包或組播包發(fā)送,智能硬件接收到UDP報(bào)文后解碼,得到正確的ssid和pwd及自定義信息,然后找到對(duì)應(yīng)的路由器主動(dòng)去連接路由器,完成配網(wǎng)。
2.3、優(yōu)劣勢(shì)對(duì)比
2.3.1、smartConfig
優(yōu)勢(shì):
相對(duì)于AP配網(wǎng),簡(jiǎn)單易操作,更加貼近市場(chǎng)
相對(duì)于AP配網(wǎng),能明確的知道硬件設(shè)備端是否連接了路由器??梢酝ㄟ^(guò)設(shè)備端連接路由器后告知APP端已經(jīng)連接路由器你可以停止發(fā)送廣播包了。
劣勢(shì):
smartConfig需要路由器的參與,需要考慮到路由器的兼容性問(wèn)題,所以配網(wǎng)成功率有所限制,比如路由器的信道,bgn模式(速率)、品牌、以及2.4G/5G、2.4G/5G同名路由器、同一場(chǎng)景下多個(gè)wifi同名等等的一系列兼容性問(wèn)題。因?yàn)椴还苁墙M播還是廣播方式,都是一種UDP報(bào)文,需要靠路由器轉(zhuǎn)發(fā),設(shè)備端監(jiān)聽(tīng)空口包。
2.3.2、AP配網(wǎng)
優(yōu)勢(shì):
AP配網(wǎng)是局域網(wǎng)直連模式,這種配網(wǎng)沒(méi)你有路由器參與,所以沒(méi)有路由器兼容性問(wèn)題,所以配網(wǎng)成功率相比一鍵配網(wǎng)要高,目前國(guó)內(nèi)智能設(shè)備生態(tài)鏈做的最好的企業(yè)也是一直沿用AP配網(wǎng)方式,配網(wǎng)成功率相對(duì)市場(chǎng)同類(lèi)產(chǎn)品要高一些。
劣勢(shì):
AP配網(wǎng)相對(duì)復(fù)雜,需要涉及到手機(jī)的兼容性、還需要手動(dòng)切換WIFI,如需要手機(jī)先連接上設(shè)備的AP熱點(diǎn),用戶(hù)需要先進(jìn)入WIFI列表頁(yè)面然后手動(dòng)切換到設(shè)備的AP熱點(diǎn),連接成功操作上云有需要切換到路由器的熱點(diǎn),有的手機(jī)也不能自動(dòng)切換熱點(diǎn),比如蘋(píng)果iOS11.0系統(tǒng)以下的手機(jī),無(wú)法自動(dòng)切換熱點(diǎn),需要用戶(hù)進(jìn)入WIFI列表頁(yè)面,選擇新熱點(diǎn)。過(guò)于復(fù)雜,這是設(shè)備熱點(diǎn)配網(wǎng)沒(méi)有普及的原因之一,因?yàn)闆](méi)有一鍵配網(wǎng)方便
AP配網(wǎng)是局域網(wǎng)模式,所以無(wú)法判斷是否連上路由器,需要借助設(shè)備上云來(lái)判斷。
3、配網(wǎng)流程
3.1、一鍵配網(wǎng)實(shí)現(xiàn)過(guò)程
此處大致介紹一下流程,當(dāng)然實(shí)際為增加成功率考慮到安全性或者業(yè)務(wù)不同,肯定比這復(fù)雜豐富的多。比如為了安全性,會(huì)對(duì)定義的UDP廣播協(xié)議采用自定義的一種安全性定義,增加校驗(yàn)增加加密等。比如為了增加成功率會(huì)才有一定的優(yōu)化策略等等。
詳細(xì)可參考:
微信wifi airkiss一鍵配網(wǎng) Demo和關(guān)鍵點(diǎn)
自定義組播配網(wǎng)【待更新】
Step1:初始化硬件設(shè)備,使設(shè)備進(jìn)入混雜模式;
Step2:手機(jī)連接路由器WIFI(獲取路由器名稱(chēng));
Step3:獲取WIFI信息,WiFi 名字和密碼;iOS 獲取系統(tǒng)wifi列表方法
android可以直接獲取到所有路由器WIFI 信息,沒(méi)必要連接要發(fā)送的WIFI,所以可以直接使用輸入;但iOS9.0之前沒(méi)有接口獲取WiFi List,iOS9.0有獲取WiFi List的接口,但是需要蘋(píng)果授權(quán),需要申請(qǐng)比較復(fù)雜。所以現(xiàn)在市面上比較通用的方法還是直接獲取當(dāng)前連接的wifi
Step4:通過(guò)組播或廣播方式發(fā)送WiFi的ssid和pwd或其他的信息比如bssis,userData等
此處一般會(huì)APP和設(shè)備端會(huì)定義一套完成的UDP報(bào)文協(xié)議協(xié)議數(shù)據(jù)除了WiFi的ssid和pwd,一般會(huì)增加一些用戶(hù)的其他信息UDP報(bào)文協(xié)議為了安全考慮,一般會(huì)想辦法增加一些復(fù)雜度,也會(huì)增加加密方法目前報(bào)文協(xié)議大致就兩種:長(zhǎng)度編碼和MAC地址編碼比如微信的airkiss就是通過(guò)長(zhǎng)度編碼的廣播方式
Step4:設(shè)備端通過(guò)廣播方式回發(fā)設(shè)備端相關(guān)信息,比如設(shè)備id,token
手機(jī)端能接收到設(shè)備端回發(fā)的信息,說(shuō)明手機(jī)端發(fā)送的WIFI信息是正確的且設(shè)備端已連接上路由器
Step5:查詢(xún)?cè)O(shè)備上云狀態(tài),注冊(cè)用戶(hù)
3.2、AP配網(wǎng)實(shí)現(xiàn)過(guò)程
此處大致介紹一下流程,當(dāng)然實(shí)際為增加成功率考慮到安全性或者業(yè)務(wù)不同,肯定比這復(fù)雜豐富的多,比如傳輸ssid和pasword,有的廠商使用HTTPS方式,有的采用LAN Mode來(lái)交換密鑰,后在在傳輸時(shí)加密ssid和password以及其他信息
Step1:初始化硬件設(shè)備,使設(shè)備進(jìn)入 AP 模式;
Step2:手機(jī)連接路由器WIFI(獲取路由器名稱(chēng));
Step3:獲取WIFI信息,WiFi 名字和密碼;iOS 獲取系統(tǒng)wifi列表方法
android可以直接獲取到所有路由器WIFI 信息,沒(méi)必要連接要發(fā)送的WIFI,所以可以直接使用輸入;但iOS9.0之前沒(méi)有接口獲取WiFi List,iOS9.0有獲取WiFi List的接口,但是需要蘋(píng)果授權(quán),需要申請(qǐng)比較復(fù)雜。所以現(xiàn)在市面上比較通用的方法還是直接獲取當(dāng)前連接的wifi
Step4:手機(jī)切回 AP WiFi:接入上述 設(shè)備出現(xiàn)的 WiFi 名字(SSID)的網(wǎng)絡(luò) (類(lèi)似 TPLINK_XXX)。連上設(shè)備后,通過(guò)HTTP發(fā)送 step2獲取到的WiFi名字和密碼
有的方案也會(huì)發(fā)送一些其他信息,比如token。方便后面注冊(cè)以此來(lái)確定是當(dāng)前session的
Step5:查詢(xún)?cè)O(shè)備上云狀態(tài),注冊(cè)用戶(hù)
因?yàn)锳P配網(wǎng)的弱點(diǎn),APP無(wú)法知曉設(shè)備是否上云,所以APP只能通過(guò)查詢(xún)?cè)O(shè)備上云狀態(tài)來(lái)判斷注冊(cè)的時(shí)候一般會(huì)攜帶一些參數(shù),比如token此步驟,需要手機(jī)切換到路由器WIFI,所以配網(wǎng)成功后,設(shè)備端需切換到非AP模式,以此消除AP熱點(diǎn),手機(jī)自動(dòng)切換到到其他路由WIFI
