# 通过虾哥的封装修改
# ESP32 Wi‑Fi 连接
该组件封装了esp32的 Wi‑Fi 配网连接流程。
它会先使用存储在闪存中的凭据尝试连接 Wi‑Fi;如果失败,则启动接入点(AP)与 Web 服务器,供用户配置并连接到 Wi‑Fi 网络。
访问 Web 服务器的地址为 `http://192.168.4.1`。
## 截图:Wi‑Fi 配置

## 截图:高级选项

- 新增日语 / 繁体中文(ja / zh‑TW)。
- 新增“高级”选项卡。
- 添加 "Connection: close" 响应头以节省打开的套接字。
- 支持语言请求。
- 支持 ESP32 SmartConfig(ESPTouch v2)。
- 改进 Wi‑Fi 连接逻辑。
- 支持多 Wi‑Fi SSID 管理。
- 自动切换到最佳 Wi‑Fi 网络。
- 提供用于 Wi‑Fi 配置的强制门户(Captive Portal)。
- 支持多语言(英语、中文)。
## 配置
Wi‑Fi 凭据保存在闪存的 "wifi" 命名空间下。
键包括 "ssid"、"ssid1"、"ssid2" … "ssid9",以及 "password"、"password1"、"password2" … "password9"。
## 使用
```cpp
// 初始化默认事件循环
ESP_ERROR_CHECK(esp_event_loop_create_default());
// 初始化 NVS 闪存(用于 Wi‑Fi 配置)
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
ESP_ERROR_CHECK(ret);
// 读取 Wi‑Fi 配置
auto& ssid_list = SsidManager::GetInstance().GetSsidList();
if (ssid_list.empty()) {
// 启动用于配置的 Wi‑Fi AP
auto& ap = WifiConfigurationAp::GetInstance();
ap.SetSsidPrefix("ESP32");
ap.Start();
return;
}
// 否则,连接到 Wi‑Fi 网络
WifiStation::GetInstance().Start();
```
idf.py add-dependency "chujie-cre/esp_wifi_connected^1.0.0"