用途:为 AI Desk Card 设备完成 Wi-Fi 配网,把 SSID 和密码一次性写入设备 NVS,设备自动连接后通过 mDNS 广播,daemon 发现后即可用 Wi-Fi 推帧。
先决条件:设备需能与 daemon 通信(USB serial 或已配对 BLE),否则先走 /card-onboard;daemon 需在运行,可用 /card-status 确认。
主要流程:先向用户说明密码仅经本地 daemon 一次性写入设备 NVS,不写入 daemon 日志、git 仓库或上传远程服务;再索取 Wi-Fi 名称(SSID)和密码,注意 SSID 是手机 Wi-Fi 列表里看到的名称,不是 MAC 或 IP。收到后执行:$CLAUDE_PLUGIN_ROOT/scripts/wifi_setup.sh "<SSID>" "<password>",SSID 必须加双引号以兼容空格、中文或特殊字符。脚本经 daemon 的 /provision-wifi HTTP endpoint 转发为 cmd:wifi_set 给设备。等待 15-20 秒后用 bash $CLAUDE_PLUGIN_ROOT/skills/card-onboard/scripts/probe.sh --quick 检查,期望 mdns_peer 非空并含 IP;也可查看 daemon 日志确认 wifi_connected:true 与 wifi_ip。最后执行 /card-stop && /card-start 重启 daemon,启动时才会扫 mDNS 并自动选择 Wi-Fi 传输。
失败诊断:设备长期 wifi_connected:false 时看错误码。status=1 表示 SSID 未找到,检查拼写并确认是 2.4GHz(ESP32 不支持 5GHz);status=4 表示鉴权失败,确认密码后重跑;status=6 表示 DHCP 失败,可能是路由器 MAC 过滤或客户端已满;其他情况把 daemon 日志最后 20 行给用户。常见问题是双频路由器下密码对应 5GHz 网络,建议单独建 2.4GHz SSID。
架构说明:凭据写入后,何时连 Wi-Fi 由电源状态决定。USB 供电时开机自动连、永远在线;电池供电时连一次后断开,等 daemon 的 cmd:wifi_wake_now 按需唤醒,用户无需额外操作。
限制与注意:不要把 SSID/密码记入日志、屏幕或 git;不要鼓励用复杂密码绕过 ESP32 的 WPA2 限制,反复连不上可建议路由器设为 WPA2/WPA3 mixed;不要默认密码长度至少 8 位,交由 ESP32 判断;不要跳过 daemon 重启步骤,因为 daemon 仅在启动时扫描 mDNS,运行中不会自动切换传输。