171 lines
4.6 KiB
Markdown
171 lines
4.6 KiB
Markdown
|
|
# 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接口响应
|