目录
📌 BLE 配网(Bluetooth Assisted Wi-Fi Provisioning)
👉 阶段 1:设备广播 BLE 信号(BLE Advertising)
📌 BLE 配网(Bluetooth Assisted Wi-Fi Provisioning)
一般智能家居设备,比如桥接器Hub 采用的是 BLE 辅助配网,即 蓝牙发现设备 -> 选择 Wi-Fi -> 输入密码 -> 设备连接 Wi-Fi,这个过程可以分为 发现、配对、Wi-Fi 配置、连接、验证 五个阶段。
📌BLE 配网流程(以桥接器hub为例)
👉 阶段 1:设备广播 BLE 信号(BLE Advertising)
- 设备上电后,进入 BLE 广播模式,开始发送 广播包(Advertising Packet),让手机 App 能够发现它。
- 广播包通常包含以下信息:
- 设备名称(Device Name)(如
BLE_Device_XXXX
) - 设备 UUID(用于唯一标识设备)(MAC 地址 / SN 号)
- 设备类型(如智能窗帘电机、Hub)
- 信号强度(RSSI)
- 其他厂商自定义字段(可选,比如是否已经配网)
- 设备名称(Device Name)(如
⭐ 技术要点:
- 广播模式采用 BLE GAP(Generic Access Profile)。
- 广播间隔一般在 100ms - 1s 之间,间隔越短,发现速度越快,但功耗更高。
- 设备广播的数据包通常为 ADV_IND(可连接非定向广播),表示设备可被 App 连接。
- 低功耗设计:BLE 广播时 CPU 处于低功耗模式,仅周期性广播数据,减少能耗。
👉 阶段 2:手机 App 发现设备并建立 BLE 连接
- App 开启 BLE 扫描(BLE Scanning),查找匹配的设备(如
BLE_Device_XXXX
) - 匹配设备 UUID,确认设备身份(根据 MAC / SN 号匹配),过滤出目标设备,然后在 App 上显示可选设备列表。
- 用户选择设备,App 发送连接请求(BLE Connection Request)。
- Hub 进入已连接状态(Connected Mode),不再继续广播。
⭐ 技术要点:
- BLE 设备角色:
- Hub 作为 BLE Peripheral(外设)
- 手机作为 BLE Central(主设备)
- 连接时使用 GATT(Generic Attribute Profile) 进行数据交互。
- App 通过 GAP Central Mode 进行扫描,监听 BLE 设备广播数据。
- BLE 设备的广播间隔(如 500ms)会影响发现速度,间隔越短,发现越快,但功耗越高。
- 信号过滤:如果有多个 BLE 设备,App 可以根据 RSSI(信号强度) 选择最近的设备。
👉 阶段 3:BLE 传输 Wi-Fi 账号和密码
-
App 发送 Wi-Fi 扫描请求(Scan Wi-Fi):
- Hub 通过 Wi-Fi 扫描(Wi-Fi Scan) 搜索周围 Wi-Fi SSID 列表,并返回给 App。
- App 在 UI 上展示 Wi-Fi 列表,供用户选择。
-
用户选择 Wi-Fi,并输入密码
- App 将 Wi-Fi SSID + 密码 通过 BLE 发送到 Hub。
-
Hub 接收 Wi-Fi 账号和密码,存储到 Flash(NVS)
- 设备会将 SSID 和密码加密存储,以便重启后仍然可以连接 Wi-Fi。
📌 技术要点:
- 设备使用 BLE GATT 传输数据:
- SSID 和密码通过 GATT Characteristic 传输。
- 数据分包传输(BLE 单次最大传输 MTU 约为 20-512 字节,具体视芯片支持情况)。
- App 作为 GATT Client,设备作为 GATT Server。
- 设备信息存储在 GATT Service 中:
- 设备 ID(如
Device_Info_UUID
)。 - 设备 Wi-Fi 状态(是否已连接)。
- 设备 ID(如
- 配对认证:
- 部分设备可能需要 BLE 加密配对(LE Secure Connections),防止非法接入。
- 加密传输:
- 通常使用 AES-128 / AES-256 加密,防止中间人攻击。
👉 阶段 4:Hub 连接 Wi-Fi
-
Hub 关闭 BLE 连接,进入 Wi-Fi 连接模式(STA 模式)。
-
Hub 尝试连接目标 Wi-Fi:
- 通过
Wi-Fi Station Mode
连接路由器(AP)。 - 发送 DHCP 请求,获取 IP 地址。
- 成功连接后,Hub 会尝试访问互联网。
- 通过
-
连接成功后,Hub 上报状态
- 连接成功后,Hub 可能会:
- 上报配网成功状态到 App(通过 MQTT、HTTP 等方式)。
- 连接云服务器,完成设备注册(如 MQTT 认证)。
- 继续执行设备初始化,如升级固件、同步时间等。
- 连接成功后,Hub 可能会:
⭐ 技术要点:
- 设备连接 Wi-Fi 失败时,通常会:
- 重新进入 BLE 配网模式。
- 降低 Wi-Fi 连接重试间隔,避免过度功耗。
- 设备连接 Wi-Fi 成功后,会定期发送心跳包,确保连接稳定。
- 设备调用 Wi-Fi 驱动(如 ESP8266 / ESP32 / MTK Wi-Fi 模块) 进行 Wi-Fi 连接。
- DHCP 过程:
- 设备向路由器发送 DHCP 请求,获取 IP 地址。
- 设备可能会先尝试上次使用的 IP(DHCP Lease 续租)。
👉 阶段 5:验证配网成功
-
App 轮询 Hub 状态,判断是否成功联网:
- 方式 1:Hub 通过 BLE 反馈连接状态(不推荐,Wi-Fi 连接成功后 BLE 可能关闭)。
- 方式 2:App 通过 HTTP/MQTT 向服务器请求 Hub 状态,查看是否在线。
-
配网完成
- 配网完成后,Hub 可正常使用 Wi-Fi 进行远程控制。
- BLE 关闭,进入低功耗模式(如果支持)
- App 通过设备唯一 ID(MAC / SN 号)在云端注册设备,完成用户绑定。
⭐ 技术要点:
- Wi-Fi 连接成功 = 设备能够成功 PING 互联网(如
8.8.8.8
)。 - 云端绑定:设备需要上传 设备 ID + Wi-Fi MAC 地址,以便后续远程控制。
- 设备会定期上报 心跳包(Heartbeat),通知 App / 云端其在线状态。
- 若 BLE 断开,App 仍可通过 Wi-Fi 或云端控制设备。
- 设备切换到正常工作模式,BLE 连接断开,进入节能模式。
📌 BLE 配网流程完整架构
[ 设备(BLE 广播) ]
↓ (App 发现设备)
[ App 连接 BLE 设备 ]
↓ (App 发送 Wi-Fi 配置信息)
[ 设备解析 Wi-Fi,切换至 STA 模式 ]
↓ (设备连接 Wi-Fi)
[ 设备上线,App 绑定设备 ]
↓
[ 配网完成 ]