249 lines
6.4 KiB
Markdown
249 lines
6.4 KiB
Markdown
# 📡 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 <esp_sleep.h>`
|
||
|
||
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省电管理器**
|
||
*让您的智能家居既智能又节能!*
|