智能家居/家電現階段還處於普及階段,由於家庭wifi網絡的普及,目前普遍採用wifi與路由器完成連接,與手機/雲端進行數據交互.
智能硬件,如智能插座,智能空調,智能空氣淨化器由於不具備人機交互界面,不能像電腦一樣的搜索/選擇指定路由器,輸入連接密碼的界面,所以必須先解決正確連接路由問題;
目前流行的wifi配置模式一般有以下2種:
1:智能硬件處於AP模式,手機用於station模式,手機連接智能插座的AP後組成局域網,手機發送需要連接路由的SSID及密碼至智能插座,智能硬件主動去連接指定路由後,完成連接
2:一鍵配置(smartconfig)模式:智能硬件處於混雜模式下,監聽網絡中的所有報文;手機APP將SSID和密碼編碼到UDP報文中,通過廣播包或組播報發送,智能硬件接收到UDP報文後解碼,得到正確的SSID和密碼,然後主動連接指定SSID的路由,完成連接
以上兩種方式都可以達到讓智能硬件連接至指定路由的效果,但是AP模式需要手動切換手機wifi連接的網絡,先連接智能硬件的AP網絡,配置完成後再恢復連接正常wifi網絡.有一定的複雜性;
但是smartconfig由於路由器品牌及手機品牌衆多,存在一定的兼容性問題,所以目前一般廠家仍保留AP模式,作爲smartconfig失敗後的備用配網方案;
下面重點講解一下一鍵配置模式原理及應用;當前主流IOT的wifi方案有:
|
廠商 |
芯片方案 |
技術名稱 |
發包方式 |
1 |
TI |
CC3200 |
SmartConfig |
往某一固定IP發udp包 |
2 |
高通 |
QCA4004/QCA4002 |
SmartConnection |
|
3 |
聯發科MTK |
MTK7681 |
SmartConnection |
組播地址編碼 |
4 |
MARVELL |
MC200+8801/MW300 |
EasyConnect |
組播地址編碼 |
5 |
Reltek |
AMEBA |
SimpleConfig |
組播地址編碼 |
6 |
樂鑫 |
Esp8266 |
SmartConfig |
組播,通過長度編碼 |
7 |
新案線 |
NL6621 |
SmartConfig |
組播地址編碼 |
8 |
微信 |
|
AirKiss |
全網廣播,通過長度編碼 |
這個功能最早是TI提出並應用於CC3200上;不過從原理上講,只要芯片驅動支持開啓混雜模式(WiFi Promiscuous),就可以支持一鍵配網功能,只是各個廠家叫法及實現編碼方式不同而已;
手機編碼發送採用有UDP組播或廣播,不同的發送方式和編碼,對應的解碼過程也不一樣.,當前測試發現,微信是通過UDP廣播包實現的;TI是通過往一固定IP地址發送udp包;其他芯片廠家提供的一般爲UDP組播方式;
由於無線數據傳播必定是廣播的,所以必然可以被監聽到;如果AP沒有加密的話,UDP直接可以把相關的信息發送出來.但是路由器AP一般都是加密的,而且加密方式不固定.wifi模塊在無法直接解析出數據包
我們通過分析802.11的MAC幀格式,可以知道,鏈路層載荷數據(即網絡層的頭部及網絡層數)在數據幀中是清晰可見的,只要接到到802.11幀就可以立刻提取出載荷數據.
常見兩種數據幀格式:
Station to AP
AP to Station
DA:目標MAC地址
SA:源MAC地址
LENGTH:表示後面數據的長度
LLC:表示LLC頭
SNAP:表示3byte的廠商代碼和2byte的協議類型表示
DATA:載荷數據
FCS:幀檢驗序列
發送端:可以採用2種不同的編碼發送方式UDP廣播和組播;
一:UDP廣播:小規模測試後,發現當前只有微信的AirKiss採用了全網廣播模式,爲啥微信會採用廣播模式,原因未知;TI採用的是固定IP地址的UDP數據包,原理和微信基本一致;
從802.11幀格式分析中獲知,無線信號監聽方的角度來說,不管無線信道有沒有加密,DA、SA、LENGTH 、LLC、SNAP、FCS字段總是暴露的,因此信號監聽方可以從這6個字段獲取有效信息.從發送方講,由於操作系統的限制,如果採用廣播只剩下LENGTH發送方可通過改變其所需要發送數據包的長度進行控制.所以只要指定出一套利用長度編碼的通訊協議,就可利用數據包的Lenght字段進行數據傳遞;
二:UDP組播:
組播地址是保留的D類地址從224.0.0.0-239.255.255.255
IP地址與MAC地址映射關係爲:將MAC地址的前25位設定爲01.00.5e,而MAC地址的後23位對應IP地址的位;
故發送端可以將數據編碼在組播ip的後23bit中,通過組播包發送,接收端進行解碼即可;
接收端進入一鍵配置功能後,wifi智能硬件從信道1開始監聽路由上的數據,如當前監聽信道有符合規則的數據包,就停止信道切換,停留在當前信道接收完全部數據.否則就依次切換至信道2.3.4....直到信道14後又從信道1開始繼續監聽依次循環;
當然,wifi智能硬件可以在開啓混雜模式之前,先行掃描當前環境下存在的AP獲取所有當前AP的信道,然後只對當前掃描到的信道進行依次監聽,如當前環境下只存在2個路由,分別在1.6信道,只需輪流掃描channel1和channel6,這樣可以提高配置效率