发帖
5 0 0

AI-WB2 配网【中】

WildboarG
论坛元老

23

主题

160

回帖

3666

积分

论坛元老

积分
3666
Ai-WB2系列 79 5 5 天前
[i=s] 本帖最后由 WildboarG 于 2025-3-27 17:07 编辑 [/i]

AI-WB2 smartconfig配网


Static Badge Static Badge Static Badge

一键配网(Smart Config)


smartConfig 是一种用于 Wi-Fi 设备快速联网的技术,最早由 TI(德州仪器)提出。它允许无显示屏或输入设备的 IoT 设备(如 AI-WB2)通过智能手机等设备获取 Wi-Fi 连接信息,实现快速联网。

原理

利用 IEEE 802.11 协议中的广播(Broadcast)和组播(Multicast)报文,将 Wi-Fi SSID 和密码等信息通过 特定的数据编码方式,封装到 Wi-Fi 数据包中发送,IoT 设备通过 监听和解析 Wi-Fi 数据包,提取出 Wi-Fi 信息并进行连接。

  • 编码WIFI信息
    • 手机端应用(如 ESPTouch、TI SmartConfig App)将 Wi-Fi 名称(SSID)和密码(Passphrase)编码成多个数据包。
    • 这些数据包通常使用 UDP 广播或多播发送,或者通过数据帧的长度、间隔等方式编码信息。
  • 设备监听并解析
    1. 设备进入sniffer模式(又叫混杂模式,即不过滤数据报文),监听环境中所有的802.11报文;
    2. 设备需要在所支持的信道(2.4G通常1-13)上轮询监听(因为设备不知道用户手机和目标路由器的信道);
    3. 捕获到符合配网规则的数据报文后停止信道轮询,尝试在在此信道上接收完成所有报文;
    4. 当前信道接收失败或超时重新回到步骤2;
    5. 数据报文接收完成则关闭sniffer模式
  • 设备连接WIFI
    • IoT 设备解析出 Wi-Fi 账号密码后,退出 SmartConfig 模式,使用 STA 模式 连接 Wi-Fi。
    • 连接成功后,可反馈给手机应用,完成配置。

流程

设备端进入 SmartConfig 模式

  • 设备开启 Wi-Fi 并进入监听模式(混杂模式)。
  • 等待 Wi-Fi 连接信息的广播。

手机端发送配网信息

  • 用户打开手机应用,输入 Wi-Fi 名称和密码,点击“配网”。
  • 手机通过 UDP 广播/组播方式,向网络中发送编码后的 SSID 和密码。

设备解析数据

  • 设备监听 Wi-Fi 网络中的 UDP 数据包,解析 SSID 和密码。
  • 设备解析完成后,退出 SmartConfig 模式,切换为 Wi-Fi STA 模式。

设备连接 Wi-Fi 并反馈结果

  • 设备使用获取的 Wi-Fi 账号密码连接 Wi-Fi。
  • 连接成功后,设备可以通过 UDP 发送 ACK(确认包)给手机端,表示配网成功。

流程图:

image.png

数据传输方式

数据的承载方式有两种,一种广播方式,另一种是组播方式。下面分别介绍。

设备在接入路由器之前,没有获得对应密钥,无法解密路由器局域网内的数据报文(包括连接到目标路由器的用户手机的报文)。

如下图所示,设备在sniffer模式收到的数据报文主体即Frame Body部分是加密的,仅帧头和整个报文长度是不加密的。要通过手机将配网信息传给设备,那么就得考虑使用这些信息。

MAC帧格式:

image.png

字段 长度(字节) 描述
帧控制(Frame Control) 2 指示帧类型、子类型等
时序(Duration/ID) 2 网络分片、QoS 相关
地址 1(DA) 6 目标 MAC 地址
地址 2(SA) 6 源 MAC 地址
地址 3(MESHBSSID) 6 AP 的 MAC 地址
序列控制(Sequence Control) 2 数据分片信息
帧体(Frame Body) 变长 数据部分,如 SSID、数据负载
FCS(Frame Check Sequence) 4 用于校验帧完整性

📌 1. 广播包长(Broadcast Packet Length)

🔹 原理

  • 通过 UDP 广播数据包 传输 Wi-Fi SSID 和密码。
  • 主要利用 广播包的长度(Length)来编码数据,而不是数据包的内容。
  • loT 设备开启 混杂模式(Promiscuous Mode) 监听广播数据包,根据不同长度的数据包解析出 Wi-Fi 信息。

🔹 传输过程

  1. 手机端:
    • 发送多个 UDP 广播包,每个包的长度按照特定编码规则表示 Wi-Fi SSID 和密码。
    • 例如,数据包长度 100 代表字符A 101 代表B`,依次类推。
  2. 设备端:
    • 在监听模式下捕获所有广播数据包。
    • 解析数据包的长度,恢复 Wi-Fi SSID 和密码。
    • 退出混杂模式,连接到 Wi-Fi。

🔹 优缺点

优点

  • 兼容大多数路由器,不依赖组播功能。
  • 只需单方向数据传输(手机 → 设备),设备无需回应。

缺点:

  • 对于部分 Wi-Fi 环境,广播包可能被丢弃或限流,导致成功率降低。
  • 传输数据受限,不能用于较复杂的数据交换。

📌 2. 组播地址(Multicast Addressing)

🔹 原理

  • 通过 UDP 组播(Multicast) 发送 Wi-Fi SSID 和密码。
  • 主要利用 组播 IP 地址 作为数据编码方式,而不是数据包的内容或长度。
  • IoT 设备监听特定的组播 IP 地址,解析出 Wi-Fi 信息。

🔹 传输过程

1 . 手机端(发送方)

  • 生成UDP 组播数据包,其中包含 Wi-Fi SSID 和密码(可能经过加密或编码)。
  • 目标 IP 组播地址 一般是 239.x.x.x(私有组播地址)。
  • 通过 UDP 协议向该组播地址发送数据。
  1. Wi-Fi 路由器(AP)
  • 接收到 IP 组播包,并将其转换为 MAC 组播帧,再广播到整个局域网。
  • 目标 MAC 组播地址 由 IP 组播地址转换而来,通常形如 01:00:5E:XX:XX:XX
  1. AI-WB2 设备(接收方)
  • 进入 Wi-Fi 混杂模式,监听 MAC 帧。
  • 过滤出 MAC 组播帧,提取其中的 UDP 负载,解析 Wi-Fi SSID 和密码。
  • 退出混杂模式,连接到 Wi-Fi。

🔹 优缺点

优点

  • 相比广播方式,组播更容易被局域网内的设备捕获,丢包率较低。
  • 避免了广播包长度的限制,适用于更复杂的 Wi-Fi 信息编码。

缺点

  • 部分路由器会禁用或屏蔽 UDP 组播,导致设备无法解析数据。
  • 设备端需要解析 IP 地址,稍微增加了计算负担。

📌 3. 两种方式对比

方式 数据编码方式 优势 劣势 适用场景
广播包长 通过 UDP 广播包的长度传输 Wi-Fi 信息 兼容性较好,适用于大多数 Wi-Fi 网络 部分 Wi-Fi 网络可能丢弃广播包 适用于低干扰环境或 Wi-Fi 兼容性较好的场景
组播地址 通过 UDP组播 IP 地址(其实是mac地址)传输 Wi-Fi 信息 组播数据包更稳定,丢包率低 部分路由器可能屏蔽 UDP 组播 适用于较新路由器,减少广播拥堵的环境

示例

typedef enum {
  smartconfig,
  airkiss,
} wifi_network_configuration_mode;

wifi_network_configuration_mode network_configuration_mode =
    smartconfig; // 这里选择对应的配网方式

static wifi_conf_t conf = {
    .country_code = "CN",
};

安心可提供的wb2sdk中例程有smartconfig和airkiss两种不同的快速配网方式

Airkiss 使用 Wi-Fi 数据包长度编码 方式:

  • 发送端(手机)通过 控制 UDP/TCP 数据包长度来编码 Wi-Fi SSID 和密码。
  • **接收端(设备)监听 不同长度的 Wi-Fi 数据包,然后解码出 Wi-Fi 信息。

由于 AirKiss 直接利用数据包长度,而非 UDP 负载内容,因此某些不支持 UDP 组播的低端路由器也可能适用。

对比 smartconfig Airkiss
数据传输方式 广播包/组播包 wifi数据包长度编码
编码方式 变长UDP(广播/组播) UDP/TCP数据包长度
使用范围 通用WIFI设备(esp8266/esp32/ai-wb2) 腾讯生态(微信loT,小程序)

测试:

这里用的微信小程序配网巴法云的一键配网。

smartconfig模式

image.png

接收到数据[0x18 0x08 0xd7 0x10 0xbd 0xc0 0xa8 0x00 0x01 0x48 0x59 0x47 0x53 0x33 0x33 0x30 0x35]

观察数据后8位,刚好与我的密码HYGS3305对应,前边的编码没有源码也不好分析,查看sdk里边是编译后的 .a 库文件,没有源码。

image.png

image.png

已经连接上了,分配了IP.

Airkiss模式

修改例程中,选择airkiss方式配网

wifi_network_configuration_mode network_configuration_mode =airkiss;

编译烧录测试:

切换为airkiss配网方式;

image.png

image.png

image.png

image.png

──── 0人觉得很赞 ────

使用道具 举报

nice~
厉害
一键配网需要软件支持,还是网页配网方便
5 天前
HaydenHu 发表于 2025-3-26 17:52
一键配网需要软件支持,还是网页配网方便

小程序也还好

小程序也是程序呀,而且断网就不能用了,比如只需要局域网连接的情况
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28215 个
  • 话题数: 40141 篇