IoT设备WiFi配网

http://blog.csdn.net/u013686019/article/details/79149713

一、引言

现下,物联网(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
   download
5、802.11无线网络权威指南 第3章 802.11 MAC基础
6、深入理解Android:WiFi模块、NFC和GPS卷
   第3章 Wi-Fi基础知识
7、计算机网络(第五版)
   4.4 无线局域网

猜你喜欢

转载自blog.csdn.net/u013686019/article/details/79149713
今日推荐