smart-home/WiFi配置云端同步部署说明.md
2026-02-26 09:16:34 +08:00

171 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WiFi配置云端同步功能部署说明
## 🎯 功能概述
本功能实现了ESP32设备WiFi配置信息的云端同步解决了以下问题
1. **移除硬编码WiFi信息** - 不再有固定的"315"WiFi配置
2. **用户自主配置** - 用户通过SoftAP模式配置WiFi后信息会自动同步到云端
3. **数据持久化** - WiFi配置信息既保存在本地NVS也备份到云端服务器
4. **设备管理** - 甲方可以通过云端API查看和管理所有设备的WiFi配置
## 🔧 修改内容
### ESP32代码修改
1. **移除硬编码WiFi信息**
- `NetworkManager.cpp` - 移除"315"WiFi回退逻辑
- `SystemInitializer.cpp` - 移除硬编码WiFi配置
- `SimpleWiFiConfig.cpp` - 移除WiFi扫描结果中的硬编码信息
2. **新增云端同步模块**
- `WiFiCredentialSync.h/cpp` - WiFi凭据云端同步功能
- 集成到`SimpleWiFiConfig.cpp`中保存WiFi配置时自动同步到云端
3. **修复配置逻辑**
- 修复WiFi配置模式被错误判断为初始化失败的问题
- 移除重复的WiFi配置实例创建
### 云端服务器
1. **WiFi凭据存储API**
- `wifi_credential_server.py` - Flask服务器提供WiFi凭据的CRUD操作
- 支持密码加密存储Base64编码
- 提供设备管理接口
## 🚀 部署步骤
### 1. 部署云端服务器
```bash
# 1. 安装依赖
pip install flask requests
# 2. 启动服务器
cd python_test
python wifi_credential_server.py
```
服务器将在 `http://47.239.124.130:8080` 启动提供以下API
- `POST /api/wifi-credentials` - 上传WiFi凭据
- `GET /api/wifi-credentials/<device_id>` - 下载WiFi凭据
- `GET /api/wifi-credentials` - 列出所有设备
- `DELETE /api/wifi-credentials/<device_id>` - 删除WiFi凭据
- `GET /health` - 健康检查
### 2. 编译ESP32代码
确保在CMakeLists.txt中添加新的源文件
```cmake
set(SOURCES
# ... 其他文件 ...
"Module/WiFiCredentialSync.cpp"
)
```
### 3. 测试功能
```bash
# 测试云端同步功能
python test_wifi_credential_sync.py
```
## 📱 用户使用流程
### 首次配置
1. **长按按键** - ESP32进入SoftAP配置模式
2. **连接AP** - 手机连接"FireFly_Config" WiFi密码12345678
3. **打开配置页面** - 浏览器访问 `http://192.168.4.1:9090`
4. **填写WiFi信息** - 输入用户的WiFi账号和密码
5. **自动同步** - 设备保存配置并自动同步到云端
6. **重启连接** - 设备重启后连接用户配置的WiFi
### 后续使用
- 设备重启后自动连接上次配置的WiFi
- 如果WiFi连接失败自动进入配置模式
- 所有配置信息都有云端备份
## 🔐 安全特性
1. **密码加密** - WiFi密码使用Base64编码存储
2. **设备标识** - 使用MAC地址作为设备唯一标识
3. **本地优先** - 优先使用本地NVS存储的配置
4. **云端备份** - 云端同步失败不影响本地功能
## 📊 管理接口
甲方可以通过以下方式管理设备:
### 查看所有设备
```bash
curl http://47.239.124.130:8080/api/wifi-credentials
```
### 查看特定设备
```bash
curl http://47.239.124.130:8080/api/wifi-credentials/aabbccddeeff
```
### 删除设备配置
```bash
curl -X DELETE http://47.239.124.130:8080/api/wifi-credentials/aabbccddeeff
```
## 🐛 故障排除
### 常见问题
1. **设备一直处于配置模式**
- 检查WiFi账号密码是否正确
- 检查WiFi信号强度
- 查看串口日志确认错误信息
2. **云端同步失败**
- 检查网络连接
- 确认服务器地址正确
- 云端同步失败不影响本地功能
3. **配置页面无法访问**
- 确认已连接到"FireFly_Config" WiFi
- 尝试访问 `http://192.168.4.1:9090`
- 检查防火墙设置
### 日志分析
关键日志标识:
- `SimpleWiFiConfig` - WiFi配置相关
- `WiFiCredentialSync` - 云端同步相关
- `SystemInitializer` - 系统初始化相关
## 📈 后续扩展
1. **数据库存储** - 可以将JSON文件存储改为数据库
2. **用户认证** - 添加用户登录和权限管理
3. **设备分组** - 支持设备分组管理
4. **配置模板** - 支持WiFi配置模板
5. **监控告警** - 设备离线告警功能
## ✅ 验证清单
部署完成后,请验证以下功能:
- [ ] ESP32启动后不再尝试连接"315"WiFi
- [ ] 长按按键可以进入配置模式
- [ ] 配置页面可以正常访问和使用
- [ ] WiFi配置保存后设备可以正常连接
- [ ] 云端API可以正常访问
- [ ] 设备重启后自动连接上次配置的WiFi
- [ ] 配置信息已同步到云端服务器
## 📞 技术支持
如有问题,请检查:
1. ESP32串口日志
2. 云端服务器日志
3. 网络连接状态
4. API接口响应