# 客厅红外控制功能修复方案 ## 🎯 问题分析 ### 原始问题 1. **APP端UDP通信失败**: `plus.net.createSocket is not a function` 2. **客厅场景页面缺失**: 调试模式下客厅跳转到错误页面 3. **红外控制功能无法使用**: APP无法与ESP32通信控制红外插座 ### 根本原因 - APP端原生UDP功能在当前环境下不可用 - 客厅监控页面未创建,跳转目标错误 - 网络通信方式需要从UDP改为HTTP ## 🔧 解决方案 ### 1. 创建客厅监控页面 **文件**: `smart-home-app/pages/living/monitor.vue` **功能特性**: - ❄️ **空调控制**: 开关、温度调节(16-30°C)、模式切换(制冷/制热) - 🔌 **红外插座控制**: 开关、定时关闭(5/15/30/60分钟) - 📊 **连接状态监控**: 实时显示ESP32连接状态 - 📝 **操作日志**: 记录所有控制操作和结果 ### 2. 修复红外开关页面通信 **文件**: `smart-home-app/pages/control/ir-switch.vue` **修复内容**: ```javascript // 原来: 使用plus.net.createSocket (不可用) const udp = plus.net.createSocket('udp') // 修复后: 使用HTTP通信 const response = await uni.request({ url: `http://${this.esp32IP}/ir?cmd=${encodeURIComponent(cmd)}`, method: 'GET', timeout: 5000 }) ``` ### 3. 更新设置页面跳转 **文件**: `smart-home-app/pages/kitchen/settings.vue` **修改**: ```javascript // 客厅跳转到专门的监控页面 if (room.nameKey === 'livingRoom') { uni.navigateTo({ url: '/pages/living/monitor' }) } ``` ## 🏗️ ESP32端架构 ### HTTP接口支持 ESP32已支持完整的HTTP红外控制接口: **接口地址**: `http://ESP32_IP/ir?cmd=COMMAND` **支持的命令**: - `SOCKET:ON` - 红外插座开启 - `SOCKET:OFF` - 红外插座关闭 - `SOCKET:TIMER:5` - 定时5分钟关闭 - `SOCKET:TIMER:15` - 定时15分钟关闭 - `SOCKET:TIMER:30` - 定时30分钟关闭 - `SOCKET:TIMER:60` - 定时60分钟关闭 - `AC:ON` - 空调开机 - `AC:OFF` - 空调关机 - `AC:TEMP:26` - 设置温度 - `AC:MODE:COOL` - 制冷模式 - `AC:MODE:HEAT` - 制热模式 ### 红外编码配置 **文件**: `firefly_esp32/main/Controller/AppCommandHandler.cpp` 已预配置完整的NEC协议红外编码: - 插座开关编码 (9000, 4500 引导码) - 定时功能编码 (5/15/30/60/120分钟) - 空调控制编码 (美的空调协议) ### 执行流程 1. **HTTP请求接收** → `ir_handler()` 函数 2. **命令解析** → `parseCommand()` 函数 3. **设置待执行标志** → `setPendingCommand()` 原子操作 4. **主循环执行** → `processPendingCommand()` 在主任务中执行 5. **红外发射** → `executeSocketControl()` / `executeACControl()` ## 📱 使用方法 ### 开启调试模式 1. 进入 **厨房设置页面** 2. 找到 **"开发者选项"** 卡片 3. 开启 **"调试模式"** 开关 ### 进入客厅控制 1. 调试模式开启后,显示 **"其他房间"** 卡片 2. 点击 **"🛋️ 客厅"** 3. 进入客厅监控页面 ### 设备控制 - **空调**: 开关控制、温度调节、模式切换 - **红外插座**: 开关控制、定时关闭 - **状态监控**: 实时连接状态、操作日志 ## 🧪 测试验证 ### 测试脚本 **文件**: `test_ir_control.py` **测试内容**: - ESP32连接测试 - 红外插座控制测试 - 空调控制测试 - 设备状态获取测试 ### 运行测试 ```bash python test_ir_control.py ``` ### 预期结果 - ✅ 所有HTTP请求返回200状态码 - ✅ ESP32串口显示红外发射日志 - ✅ LED指示灯闪烁表示发射中 - ✅ APP显示操作成功日志 ## 🔍 故障排查 ### 1. 连接问题 **症状**: 显示"连接失败"或"连接异常" **解决**: - 检查ESP32 IP地址是否正确 - 确认ESP32已连接WiFi - 测试网络连通性: `ping ESP32_IP` ### 2. 红外发射无效 **症状**: 命令发送成功但设备无响应 **解决**: - 检查红外发射器硬件连接 - 观察ESP32串口日志确认发射 - 验证红外编码是否匹配设备 ### 3. APP操作无响应 **症状**: 点击开关无反应 **解决**: - 检查设备存储中的ESP32配置 - 确认调试模式已开启 - 查看APP操作日志 ## 📋 技术规格 ### 网络通信 - **协议**: HTTP/1.1 - **端口**: 80 (HTTP) - **超时**: 5秒 - **重试**: 自动重试机制 ### 红外发射 - **频率**: 38kHz载波 - **协议**: NEC标准协议 - **重复**: 2-3次发射确保可靠性 - **间隔**: 150-200ms ### 设备兼容性 - **红外插座**: NEC协议遥控插座 - **空调**: 美的品牌空调 (可扩展其他品牌) - **ESP32**: 支持RMT硬件红外发射 ## 🎉 功能特点 ### 用户体验 - 🎨 **现代化UI**: 卡片式设计,直观易用 - 🔄 **实时反馈**: 操作状态实时显示 - 📊 **状态监控**: 连接状态、设备状态一目了然 - 📝 **操作记录**: 详细的操作日志 ### 技术特性 - ⚡ **高可靠性**: HTTP通信 + 原子操作 - 🔒 **线程安全**: 跨任务通信安全机制 - 🎯 **精确控制**: 温度、定时精确设置 - 🔧 **易于扩展**: 模块化设计,易于添加新设备 客厅红外控制功能现已完全修复并优化,提供了完整的空调和红外插座控制解决方案!