Wi-Fi AP配网失败后的恢复流程与验收测试
Wi-Fi配网流程达到产品交付条件,意味着用户遇到密码错误、路由器缺席、配置中断和断电后,仍能恢复,而不需要重新刷机。应将配网设计成有时间边界、有明确结果、能保护凭据并能受控重返设置的状态机。向设备成功提交一次HTTP请求,只是流程中的一步。
本文讨论设备先提供配网热点,再接入客户路由器的流程,适用于Linux和MCU产品;具体API取决于所选驱动与SDK。全部时间示例和测试均为设计建议,不是产品实测声明。
设计界面前先定义成功条件
将四个里程碑分开:手机提交了候选配置;设备完成关联与认证;取得可用IP配置;访问了规定的应用服务。本地控制器的最终要求可能是能够在局域网被发现;云端产品则可能需要认证注册或健康检查交互。必须明确到哪个阶段才提交新配置。
不能把云服务故障当成Wi-Fi密码错误。如果Wi-Fi和DHCP成功,但后端服务不可用,应保留“网络已配置,服务不可用”的独立状态。由产品策略决定这种状态是否允许完成安装,而不是反复让用户填写密码。
写清支持的路由器频段、安全模式、SSID编码与长度、隐藏网络流程和企业网络要求。仅支持2.4 GHz的模组无法通过重试接入仅有5 GHz的网络。WPA-Enterprise、上游强制认证门户和受管理的企业网络,都需要明确支持方案或排除说明。

将配置变更设计成事务
将上一次已知可用配置与正在测试的候选配置分开保存。每次尝试分配一个标识;相同标识的重复提交应返回同一次尝试的状态,而不是启动多个并行连接操作。新尝试应以受控方式取消或取代旧尝试。
平台支持时,先测试候选凭据,不立即覆盖持久保存的已知可用记录。达到约定成功条件后,再原子提交带版本的记录。保存完整性信息和结构版本,并定义提交过程中断电后的启动行为。静态加密需要合适的密钥存储设计,也不能代替经过认证的配网流程。
部分SDK管理器会在应用完成自身验证之前持久保存凭据。例如,ESP-IDF 5.2.6的Wi-Fi配网指南说明了基于已存凭据的配网状态检查,以及失败和重启行为。这属于特定版本的集成约束。应验证所选管理器的重置与重新配网API,并围绕它实现产品状态模型,不能假定“有凭据”等于“安装成功”。
保留有意触发的恢复入口
定义什么操作能重新进入配网:经过认证的命令、物理按键序列或安装工具。明确按住时长、LED反馈,以及意外短按是否会改变设置。网络重置通常应保留校准数据、设备身份和无关应用配置。恢复出厂设置应作为单独且提示明确的操作。
一种建议策略是开放十分钟配网窗口,为一次路由器连接尝试设置可配置截止时间,超时后允许重试或恢复旧配置。具体数值必须根据支持的路由器和安装流程确定。不能因为首次失败,就永久暴露不受限制的配网网络。
配网自动关闭时,手机需要明确获知结果。可以在仍可连接时轮询状态、在切换前显示成功凭证、使用LED状态,或在目标网络重新发现设备。TCP连接中断本身无法区分成功与设备崩溃。
考虑手机失去连接路径
手机可能优先使用移动数据、离开无互联网的Wi-Fi网络,或打开功能受限的强制门户浏览器。对支持的Android/iOS版本,分别在移动数据开启和关闭时测试。提供自动门户检测失败时仍能使用的本地URL或应用流程。必须离线工作的设置页,不应依赖互联网托管的脚本或字体。
AP与STA并存有具体无线平台限制。ESP32文档说明站点/AP模式共享工作信道,站点优先;接入其他信道上的路由器可能影响配网连接。可参考厂商的Wi-Fi驱动指南,随后按实际SDK和模组版本验证。Linux芯片同样需要驱动支持相应接口组合,不能根据单独演示过AP和STA,就推定AP+STA可用。
状态接口应能应对重新连接。尝试结果要独立于HTTP连接保存,返回尝试ID、阶段和不含敏感信息的原因码。确保过期浏览器页面不能覆盖较新的成功配置。
保护凭据传输与诊断信息
使用适合产品的单设备配网密钥或其他经过认证的注册设计。开放AP加上未认证的密码表单会暴露敏感配置入口。应同时考虑传输安全和设备身份验证;没有信任与发现机制的随机自签名证书,可能只会让安装人员习惯忽略安全警告。
不要照搬会打印Wi-Fi密码的示例日志。记录阶段、耗时、SDK断开原因、重试次数、固件版本和脱敏网络标识。限制诊断导出,并在不再需要时清除临时候选凭据。限制尝试次数和并发会话,明确两部手机同时配置同一设备时的控制权。
不同原因对应不同处理。认证被拒绝时,检查凭据或安全模式;找不到匹配AP时,检查频段、距离、隐藏SSID和扫描策略;DHCP超时指向地址服务或本地网络;TLS或注册失败属于应用链路,可能涉及时间、证书或账户策略。
让验收矩阵证明恢复能力
| 测试 | 预期恢复行为 | 保留证据 |
|---|---|---|
| 先提交错误密码,再提交正确密码 | 无需刷机或清除设备身份即可接受新尝试 | 尝试ID、失败原因和最终连接状态 |
| 连接时路由器消失 | 在规定时间内超时;可恢复旧配置或配网入口 | 阶段时间线、重试和资源计数 |
| 关联成功但阻断DHCP | 地址分配故障与认证故障分别显示 | Wi-Fi事件和DHCP抓包 |
| 网络正常但云端不可用 | 识别服务故障;按策略保留有效Wi-Fi配置 | 不含凭据的IP、DNS和应用状态 |
| 接收、测试、提交时分别断电 | 启动到有效旧配置、新配置或明确恢复模式 | 启动日志、记录版本和完整性检查 |
| 手机离开AP,第二部手机加入 | 保持尝试控制权,并能读取最新结果 | 客户端状态和并发请求行为 |
| 配网超时及物理网络重置 | 入口按时关闭;授权操作可重开且不丢失校准 | 无线扫描、按键/LED记录及设置对比 |
围绕状态转换重复注入故障,不要只在任意时刻断开。覆盖路由器换信道、弱信号和无线/应用并发负载。统计成功恢复次数与总尝试次数,记录全部失败,并测量到可用状态的耗时。不能只报告平均值;少量没有结束边界的尝试也可能主导售后成本。
提供精简的诊断协议
下面的状态文档是应用协议示例,不是SDK API。原因码与阶段名称应随手机应用共同维护版本:
{
"schema": 1,
"attempt_id": "setup-0042",
"phase": "waiting_for_ip",
"result": "pending",
"elapsed_ms": 12400,
"reason": null,
"can_retry": false
}
尝试截止时间应使用单调时钟,避免校时意外延长或缩短重试。看门狗应识别工作线程卡死,而不是仅因外部路由器不在线就重启健康设备。连续失败尝试期间跟踪内存与套接字使用,找出一次成功演示无法暴露的泄漏。
约定完整的配网交付物
欧蓓特的设备联网服务可用于梳理设备、手机与路由器的集成范围。已交付的ESP32 Wi-Fi与蓝牙网关项目描述了AP/STA相关方向;其中独立的Mesh角色,不代表本文配网流程已实现或完成验证。
请提供模组与SDK版本、目标手机清单、支持的路由器和安全模式、当前故障日志,以及安装人员必须完成的流程。交付内容除了成功路径设置界面,还应包括状态定义、手机可见错误、凭据处理、重置语义和可重复的故障测试。