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)示用于用戶識(shí)別,SSID就是這個(gè)用于用戶標(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)驯耻,用戶需要先進(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),需要用戶進(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ì)可參考:
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ì)增加一些用戶的其他信息
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:查詢?cè)O(shè)備上云狀態(tài),注冊(cè)用戶
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:查詢?cè)O(shè)備上云狀態(tài)易阳,注冊(cè)用戶
因?yàn)锳P配網(wǎng)的弱點(diǎn)蟆盹,APP無(wú)法知曉設(shè)備是否上云,所以APP只能通過(guò)查詢?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