Docker部署ioBroker+Node-RED切换HDMI CEC至TV 0.0.0.0失败求助
解决方案
1. 修正CEC指令的源地址与目标地址
切换回TV源时,源地址应使用当前发送指令的设备地址(如HDMI 1的0x4),而非TV的地址0x0;同时目标地址直接指定TV的逻辑地址0x0,避免使用广播地址0x15:
msg.payload = { "source": "0x4", "target": "0x0", "opcode": "0x82", "args": "0.0.0.0" }; return msg;
逻辑地址说明:
0x0=TV,0x4=HDMI 1端口设备,广播地址0x15可能被部分电视忽略。
2. 先发送主动源失活指令
部分电视需要先收到当前活跃源的失活通知,才会切换到新源,可添加延迟执行:
// 发送当前源失活指令 msg.payload = { "source": "0x4", "target": "0x1f", // 全局广播地址 "opcode": "0x9d", "args": "0.0.0.0" }; // 延迟1秒后发送切换到TV源的指令 setTimeout(() => { node.send({ payload: { "source": "0x4", "target": "0x0", "opcode": "0x82", "args": "0.0.0.0" } }); }, 1000); return msg;
3. 使用0x44 opcode直接指定输入
如果0x82指令无效,尝试用0x44(设置菜单控制)的扩展参数指定输入,不同电视参数可能不同:
msg.payload = { "source": "0x4", "target": "0x0", "opcode": "0x44", "args": "0x00" // 测试0x00/0x01/0x02等,对应TV内置源 }; return msg;
4. 检查插件兼容性
卸载并重新安装node-red-contrib-cec插件,确保与容器内Node.js版本匹配:
在Node-RED管理面板 → 插件管理 → 搜索node-red-contrib-cec,先卸载再重新安装最新版本。
内容的提问来源于stack exchange,提问作者Unregistreirt
相关产品推荐
相关产品推荐

