smart-home/WiFi省电测试指南.md
2026-02-26 09:16:34 +08:00

6.4 KiB
Raw Permalink Blame History

📡 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设备测试

  1. 烧录固件

    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基本功能测试

# 测试启动厨房监控
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
连接稳定性 中等 优秀
数据传输速度 较慢 快速

🐛 故障排除

常见问题

  1. 编译错误esp_sleep_enable_wifi_wakeup未声明

    • 解决:添加 #include <esp_sleep.h>
  2. APP连接失败

    • 检查ESP32 IP地址是否正确 (192.168.1.3)
    • 确认WiFi连接正常
    • 检查HTTP服务器是否启动
  3. 省电模式不生效

    • 检查ESP32日志确认省电模式设置成功
    • 使用万用表测量实际功耗
  4. 自动超时不工作

    • 检查定时器是否正确启动
    • 确认processTasks()在主循环中被调用

调试技巧

  1. 启用详细日志

    esp_log_level_set("WiFiPowerMgr", ESP_LOG_DEBUG);
    
  2. 监控WiFi状态

    wifi_ps_type_t ps_type;
    esp_wifi_get_ps(&ps_type);
    ESP_LOGI(TAG, "当前WiFi省电模式: %d", ps_type);
    
  3. 测试API响应

    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省电管理器
让您的智能家居既智能又节能!