1. 程式人生 > >IoT裝置WiFi配網

IoT裝置WiFi配網

一、引言

現下,物聯網(IoT/IoE)中智慧產品普遍採用WiFi與路由器完成連線,然後通過手機和雲端進行資料互動,拓撲結構如下:

由上圖可見,APP和智慧產品之間並沒有直接的互動,而是夾雜了”雲“端(當然,我們也可以直接走區域網)。問題來了:智慧硬體如智慧插座、智慧空調、智慧空氣淨化器等,由於不具備人機互動介面,所以不能像電腦一樣的搜尋、選擇指定的AP並輸入連線密碼。WiFi配網,就是用來解決智慧裝置的聯網需求的。進一步來說就是通過某種方式把AP的名稱(SSID)和密碼告知智慧裝置中的WiFi模組,之後智慧裝置根據收到的SSID和密碼連線指定AP。

二、主流配網方式

目前流行的WiFi配置模式一般有以下兩種:
1、SoftAP配網:智慧硬體處於AP模式,手機用於STA模式,手機連線智慧裝置的AP後組成區域網;手機發送需要連線路由的SSID及密碼至智慧裝置,智慧硬體主動去連線指定路由後完成連線。
2、一鍵配置(SmartConfig)模式:智慧裝置中的WiFi模組處於混雜模式(Promiscuous Model)下,監聽網路中的所有報文;手機APP將SSID和密碼編碼到UDP報文中,通過廣播包或組播包傳送,智慧硬體接收到UDP報文後解碼,得到正確的SSID和密碼,然後主動連線指定SSID的路由,完成連線。可見,兩者都需要硬體支援。SoftAP配網需要硬體支援AP模式,SmartConfig配網需要硬體支援混雜模式(有些WiFi晶片廠家為了省電關閉了混雜模式)。

三、SoftAP配網

以Linux終端為例:首先,切AP模式,指令碼示例:
#!/bin/sh

killall -q wpa_supplicant
killall -q udhcpc
killall -q udhcpd
killall -q hostapd

# 以上:清除當前網路相關程序
echo "start switch to AP mode..."

mkdir -p /var/lib/misc
touch /var/lib/misc/udhcpd.leases
ifconfig wlan0 down
ifconfig wlan0 10.168.1.1 up
# 以上:當前網絡卡IP為10.168.1.1

hostapd -B /etc/wifi/hostapd.conf
# 以上:進入AP模式。不同驅動進入AP模式的方式不同
udhcpd /etc/wifi/udhcpd.conf
# 以上:啟動udhcpd,為連線到AP上的裝置分配IP

/etc/wifi/hostapd.conf指令碼示例:

/etc/wifi/hostapd.conf
# hostapd服務配置檔案
interface=wlan0
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
hw_mode=g
channel=1
beacon_int=100
driver=nl80211
ignore_broadcast_ssid=0
macaddr_acl=0
#auth_algs=1
#wpa=2
#wpa_passphrase=12345678
#rsn_pairwise=CCMP TKIP

/etc/wifi/udhcpd.conf指令碼示例:

/etc/wifi/udhcpd.conf
# udhcpd服務配置檔案
interface	wlan0
start	10.168.1.2
end	10.168.1.254
opt	dns	10.168.1.1
opt	router	10.168.1.1
option subnet 255.255.255.0
option domain localhost
option lease 864000

其次,終端AP起一個server socket等待裝置連線自己,之後雙方通過socket通訊。終端收到WiFi資訊,儲存到/etc/wifi/wpa_supplicant.conf檔案

最後,智慧裝置退出AP模式並連線指定的路由器。指令碼示例:

#!/bin/sh

ifconfig wlan0 down
killall -q wpa_supplicant
killall -q udhcpd
killall -q udhcpc
killall -q hostapd
ifconfig wlan0 up
# 以上:清除當前網路相關程序

wpa_supplicant -B -Dnl80211 -iwlan0 -c/etc/wifi/wpa_supplicant.conf
# 以上:連線路由器

udhcpc -R -i wlan0
# 以上:向路由器請求IP等資訊

四、SmartConfig配網

來自參考資料3由於無線網路中的訊號是以廣播模式傳送,所以使用者就可以在傳輸過程中截獲到這些資訊。但是,如果要截獲到所有訊號,則需要將無線網絡卡設定為監聽模式。只有在這種模式下,無線網絡卡才能接收到所有流過網絡卡的資訊。
1、網絡卡的工作模式
無線網絡卡是採用無線訊號進行資料傳輸的終端。無線網絡卡通常包括 4 種模式,分別是廣播模式多播模式直接模式混雜模式。如果使用者想要監聽網路中的所有訊號,則需要將網絡卡設定為監聽模式。監聽模式就是指混雜模式,下面將對網絡卡的幾種工作模式進行詳細介紹。如下所述:
(1)廣播模式(Broad Cast Model):它的實體地址(Mac)是 0XFFFFFF 的幀為廣播幀,工作在廣播模式的網絡卡接收廣播幀。
(2)多播傳送(MultiCast Model):多播傳送地址作為目的實體地址的幀可以被組內的其他主機同時接收,而組外主機卻接收不到。但是,如果將網絡卡設定為多播傳送模式,它可以接收所有的多播傳送幀,而不論它是不是組內成員。
(3)直接模式(Direct Model):工作在直接模式下的網絡卡只接收目的地址是自己 Mac地址的幀。
(4)混雜模式(Promiscuous Model):工作在混雜模式下的網絡卡接收所有的流過網絡卡的幀,通訊包捕獲程式就是在這種模式下執行的。


2、工作原理
WiFi網路由無線網絡卡、無線接入點(AP)、計算機和有關裝置組成,其拓撲結構如圖所示:

在該網路中,正常情況下每個客戶端在接收資料包時,只能接收發給自己網絡卡的資料。如果採用混雜模式,一個站點的網絡卡將接收同一網路內所有站點所傳送的資料包。這樣,就可以達對網路資訊監視捕獲的目的。參考資料:2、Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications
   Chapter 8 Frame formats
5、802.11無線網路權威指南 第3章 802.11 MAC基礎6、深入理解Android:WiFi模組、NFC和GPS卷   第3章 Wi-Fi基礎知識7、計算機網路(第五版)   4.4 無線區域網

相關推薦

IoT裝置WiFi及現狀

一、引言 現下,物聯網(IoT/IoE)中智慧產品普遍採用WiFi與路由器完成連線,然後通過手機和雲端進行資料互動,拓撲結構如下: 由上圖可見,APP和智慧產品之間並沒有直接的互動,而是夾雜了”雲“端(當然,我們也可以直接走區域網)。問題來了:智慧硬體如智慧插座、智慧空調、智慧空氣淨化

IoT裝置WiFi

一、引言現下,物聯網(IoT/IoE)中智慧產品普遍採用WiFi與路由器完成連線,然後通過手機和雲端進行資料互動,拓撲結構如下:由上圖可見,APP和智慧產品之間並沒有直接的互動,而是夾雜了”雲“端(當然,我們也可以直接走區域網)。問題來了:智慧硬體如智慧插座、智慧空調、智慧空

IoT】物聯網之 WIFI 一鍵 smartConfig 淺析(ESP32)

一、背景 物聯網時代技術開始規模化服務於民眾,方便快捷顯得尤為重要,WIFI 直連便是一個典型案例。 目前主流的 WIFI 配置模式有以下 2 種: 1、智慧硬體處於 AP 模式(類似路由器,組成區域網),手機用於 STA 模式 手機連線到處於 AP 模式的智慧硬體後

聲波:通過特定的聲波序列將wifi密碼發到無螢幕的裝置

聲波配網,即通過手機發出聲波,將ssid、password等資訊傳給裝置的一種配網方式。適用於沒有觸屏或觸屏較小不易於資訊輸入,但是擁有麥克風的智慧裝置,如智慧音箱、智慧家庭助手等。其優點是配網速度快、可人耳感知,缺點是受環境干擾較大。 實現聲波配網,首先需要一套特定的演算

加密終端(配電終端加密單元裝置

2017年前存量的配網自動化FTU-DTU-TTU等配網自動化終端,只採用軟加密,並且只對遙控報文加密的方式實現。由於技術條件的發展成熟,2017年中國電科院始進行配電終端硬加密的安全測試,要求對三遙資料全部加密,並且要採用硬加密的方式進行,即內建國網加密晶片。所以2017年底開始所有新型的配網終端均通過國家

一種加速WiFi模組一鍵速度的實現

今天在看udp廣播配網的東西,中午吃完飯在外面溜達,想到一種可以加速配網速度的方法。 目前大家都在用的配網方式,主要是用於wifi iot的裝置。採用廣播 組播或者probe request 等單獨或者聯合的方式來將ssid和密碼的資訊傳遞到裝置端,裝置端再一一接收,直至接

wifi一鍵smartconfig原理及應用

智慧家居/家電現階段還處於普及階段,由於家庭wifi網路的普及,目前普遍採用wifi與路由器完成連線,與手機/雲端進行資料互動. 智慧硬體,如智慧插座,智慧空調,智慧空氣淨化器由於不具備人機互動介面,

WIFI模組各種常見的方式說明及其比較

《Wi-Fi一鍵配置原理》!對於一般企業來說,想要讓裝置聯網,從成本、維護、週期等等角度考慮,那選擇什麼樣的的方案是最快捷、安全可靠的聯網方式了?1wifi模組可以連線路由器,是不是就能實現遠端控制呢?          wifi模組可以連線路由器,說明實現路由器的區域網控制沒有問題。 2 遠端控制的過程

IoT時代:Wi-Fi“”技術剖析總結

導讀 近年來,物聯網市場競爭激烈,從物聯網平臺廠商,裝置生產商,到服務提供商,都在湧入這片紅海。預計到2020年,全球聯網裝置數量將達到260億個,年複合增長率達到20%;全球聯網裝置帶來的資料將達到44ZB,這一資料將是2012年的22倍,年複合增長率48%。   物聯網時代對網路的需求

android推斷是否連接wifi絡狀態的推斷

ack sco font ctx fin null article con nec <span style="font-size:18px;">// 是否連接WIFI public static boolean isWifiConnected(Cont

WiFi信號弱?大型場館高密度WiFi無線絡覆蓋

WiFi覆蓋 高密度 場館 如今,全球移動化、社交化消費需求正以極高的速度在影響人類生活,各類大型活動層出不窮,花樣多多,無論是企業的年會,還是品牌發布會,或者動漫展等等,現場都可能超過200人,甚至上千人,那麽就需要一個大型場館來開展這些活動。但想要辦好一個活動,除了要布置好場館之外,還需要布置

[BZOJ5251][九省聯考2018]劈(絡流)

整數 limit 沒有 開始 ems 舉例 我們 led ans 5251: [2018多省省隊聯測]劈配 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 33 Solved: 22[Submit][Status][D

AliOS-Things--ESP8266-linkkitapp-(一)

linkkitapp例程中,主要有兩個c檔案 linkkit_entry.c linkkit_sample_solo.c  可以這麼理解,整個工程編譯後,程式執行時,linkkit_entry.c中的檔案將會呼叫linkkit_sample_solo.c中的函式。

OPPO手機如何獲得WiFi無線密碼?

1.前提:你已經通過WiFi萬能鑰匙或者已經從其他渠道連過了某個WiFi,我們現在才能看這個WiFi的密碼。 2.按照下面的步驟: 給你的手機新建一個備份,桌面上有“備份與恢復”軟體 選擇系統資料即可。然後開始備份。你備份的檔案在backup資料夾下。 開啟桌面上的檔案管理

ESP32的SDK開發之blufi一鍵

            ESP32 是整合 2.4 GHz Wi-Fi 和藍芽雙模的單晶片方案,採用臺積電 (TSMC) 超低功耗的 40 納米工藝,擁有最 佳的功耗效能、射頻效能、穩定性、通用性和可靠性,適用於各種應用和不同功耗需

基礎知識

IP地址 英文名:Internet Protocol Address,即網際協議地址 作用:區域網中的唯一標識,類同家庭住址的門牌號 分類: IPV4(32位):4位元組二進位制分4段(每個段1位元組)表示,每段使用10進製表示,.間隔

一種適應10KV建設的智慧通訊管理單元(帶加密模組)分散式DTU綜合測控通訊單元

SDAF-8600智慧通訊管理單元(帶加密模組)分散式DTU綜合測控通訊單元裝置概述SDAF-8600分散式公共單元是分散式DTU的組成部分,與DTU間隔單元配套使用。負責彙集各個DTU間隔單元遙信資料、遙測資料、保護事件、錄波資料、執行狀態、電能量資料等相關資訊,並通過通訊裝置遠傳至主站。DTU公共單元獲取

一種適應10KV建設的智能通訊管理單元(帶加密模塊)分布式DTU綜合測控通信單元

超級 模式 tex 通過 roc 部分 保護 設計 分布 SDAF-8600智能通訊管理單元(帶加密模塊)分布式DTU綜合測控通信單元裝置概述SDAF-8600分布式公共單元是分布式DTU的組成部分,與DTU間隔單元配套使用。負責匯集各個DTU間隔單元遙信數據、遙測數據、保

[網路篇]ESP8266-SDK教程(五)之SmartConfig、Airkiss等多種方式

在前面網路篇TCP通訊中,我們用到了Wi-Fi功能,但是沒有細講,今天我們在這篇文章中仔細探討一下ESP8266的Wi-Fi聯網過程,以及各種方式的配網過程是如何實現的。文章中難免有疏漏或不正確的地方,如遇不正確的表述還請指出,本系列文章現在在知乎和簡書同步更新。 IAMLIUBO-知乎專欄 IAMLIU

【Alios-things筆記】alios-things esp32錯誤

錯誤日誌: [37m<DEBUG> [aes_decrypt_string#88] : security level: 3[0m [37m<DEBUG> [get_ssid_pa