# 📡 WiFi省电管理器测试指南 ## 🎯 功能概述 WiFi省电管理器实现了ESP32的智能WiFi功耗管理,根据专业IoT省电建议设计: ### ✅ 核心特性 - **事件驱动WiFi**:平时省电模式,重要事件时自动唤醒 - **WIFI_PS_MAX_MODEM + Light Sleep**:深度省电,功耗2-8mA - **高响应模式**:用户监控时切换到WIFI_PS_NONE,功耗150-200mA - **自动超时管理**:5分钟无操作自动恢复省电 - **HTTP + JSON通信**:完全替代UDP,符合现代IoT标准 ## 🔧 ESP32端实现 ### 1. WiFi省电模式 ```cpp // 省电模式 (2-8mA) esp_wifi_set_ps(WIFI_PS_MAX_MODEM); esp_wifi_set_max_tx_power(8); // 8dBm最低功率 esp_sleep_enable_wifi_wakeup(); // 高响应模式 (150-200mA) esp_wifi_set_ps(WIFI_PS_NONE); esp_wifi_set_max_tx_power(20); // 20dBm最大功率 ``` ### 2. HTTP API接口 - `POST /api/kitchen/monitor` - 厨房监控控制 - `POST /api/kitchen/alarm` - 硬件报警数据 - `GET /api/kitchen/data` - 获取厨房数据 ### 3. 事件驱动逻辑 ```cpp // 重要事件自动唤醒WiFi if (fireDetected || temperature > 60.0f || (temperature > 45.0f && !personDetected)) { setFullPowerMode(); // 立即切换高响应模式 // 上报事件到云端 // 30秒后自动恢复省电(除非用户正在监控) } ``` ## 📱 APP端集成 ### 1. 智能省电管理器 ```javascript import { smartPowerManager } from '@/utils/wifiPowerClient.js' // 进入厨房监控页面时 await smartPowerManager.enterKitchenMonitor() // 离开厨房监控页面时 await smartPowerManager.exitKitchenMonitor() ``` ### 2. API调用示例 ```javascript // 启动厨房监控 await startKitchenMonitor({ commMode: 'local', // 本地模式 timeout: 300 // 5分钟超时 }) // 停止厨房监控 await stopKitchenMonitor() ``` ## 🧪 测试步骤 ### 第一步:ESP32设备测试 1. **烧录固件** ```bash cd d:\XinJiaPo\Firefly_code\smart-home\firefly_esp32 idf.py -p COM7 flash monitor ``` 2. **观察启动日志** ``` I (xxx) WiFiPowerMgr: ✅ WiFi深度省电模式设置成功 (MAX_MODEM + Light Sleep) I (xxx) WiFiPowerMgr: 📉 预期功耗: 2-8 mA I (xxx) main: WiFi省电管理器初始化成功 I (xxx) main: 厨房监控API: http://192.168.1.3:80/api/kitchen/monitor ``` 3. **测试省电模式切换** - 默认启动后应该是省电模式 - 发送HTTP请求测试API响应 ### 第二步:APP测试 1. **打开WiFi省电测试页面** - 在APP中导航到 `/pages/test/wifi-power` - 或在厨房设置页面添加测试入口 2. **测试连接状态** - 点击"🔍 测试连接"按钮 - 观察连接状态和响应时间 3. **测试手动控制** - 点击"📈 启动厨房监控" - 应该切换到高响应模式 - 点击"📉 停止厨房监控" - 应该恢复省电模式 - 观察ESP32日志确认模式切换 4. **测试自动管理** - 进入厨房监控页面 (`/pages/kitchen/monitor`) - 观察ESP32日志,应该看到: ``` I (xxx) WiFiPowerMgr: 📈 事件触发:切换到WiFi高响应模式 ``` - 退出页面,应该看到: ``` I (xxx) WiFiPowerMgr: 📉 恢复WiFi省电模式 ``` ### 第三步:功耗测试 1. **测量省电模式功耗** - 使用万用表测量ESP32电流 - 省电模式应该在2-8mA范围内 2. **测量高响应模式功耗** - 启动厨房监控后测量电流 - 高响应模式应该在150-200mA范围内 3. **测量切换响应时间** - 记录从省电模式到高响应模式的切换时间 - 应该在几百毫秒内完成 ## 🔍 测试用例 ### 用例1:基本功能测试 ```bash # 测试启动厨房监控 curl -X POST http://192.168.1.3:80/api/kitchen/monitor \ -H "Content-Type: application/json" \ -d '{"cmd":"KITCHEN_MONITOR","action":"ON","comm_mode":"local","timeout":300}' # 预期结果:ESP32切换到高响应模式 ``` ### 用例2:超时自动恢复测试 ```bash # 启动监控后等待5分钟 # 预期结果:ESP32自动恢复省电模式 ``` ### 用例3:事件驱动测试 ```cpp // 在ESP32代码中模拟高温事件 WiFiPowerManager::getInstance()->handleImportantEvent("HIGH_TEMP", "85.5°C"); // 预期结果:自动切换到高响应模式并上报事件 ``` ## 📊 性能指标 ### 功耗对比 | 模式 | 功耗 | 响应时间 | 适用场景 | |------|------|----------|----------| | 省电模式 | 2-8mA | 较慢 | 平时待机 | | 高响应模式 | 150-200mA | <100ms | 用户监控/紧急事件 | ### 网络性能 | 指标 | 省电模式 | 高响应模式 | |------|----------|------------| | WiFi发射功率 | 8dBm | 20dBm | | 连接稳定性 | 中等 | 优秀 | | 数据传输速度 | 较慢 | 快速 | ## 🐛 故障排除 ### 常见问题 1. **编译错误:esp_sleep_enable_wifi_wakeup未声明** - 解决:添加 `#include ` 2. **APP连接失败** - 检查ESP32 IP地址是否正确 (192.168.1.3) - 确认WiFi连接正常 - 检查HTTP服务器是否启动 3. **省电模式不生效** - 检查ESP32日志确认省电模式设置成功 - 使用万用表测量实际功耗 4. **自动超时不工作** - 检查定时器是否正确启动 - 确认processTasks()在主循环中被调用 ### 调试技巧 1. **启用详细日志** ```cpp esp_log_level_set("WiFiPowerMgr", ESP_LOG_DEBUG); ``` 2. **监控WiFi状态** ```cpp wifi_ps_type_t ps_type; esp_wifi_get_ps(&ps_type); ESP_LOGI(TAG, "当前WiFi省电模式: %d", ps_type); ``` 3. **测试API响应** ```bash curl -v http://192.168.1.3:80/api/kitchen/monitor ``` ## 🎉 成功标准 ✅ **基本功能** - ESP32成功编译和烧录 - WiFi省电管理器正常初始化 - HTTP API正常响应 ✅ **省电效果** - 省电模式功耗 < 10mA - 高响应模式功耗 > 100mA - 模式切换时间 < 1秒 ✅ **用户体验** - APP进入厨房监控页面自动唤醒WiFi - 退出页面自动恢复省电 - 5分钟超时自动恢复省电 ✅ **稳定性** - 长时间运行无崩溃 - 模式切换无异常 - 网络连接稳定 ## 📈 后续优化建议 1. **云端中转配置** - 实现30-60秒轮询窗口 - 减少直连依赖 2. **更智能的省电策略** - 根据时间段调整策略 - 学习用户使用习惯 3. **功耗进一步优化** - 考虑Deep Sleep模式 - 优化唤醒频率 --- **🔥 萤火虫ESP32智能家居系统 - WiFi省电管理器** *让您的智能家居既智能又节能!*