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