现在大多数电视的遥控都用的蓝牙遥控器,无法使用红外实现电视的开关机。
用过机顶盒的同学,不知道有没有试过有的机顶盒打开后,电视会跟随机顶盒一起开机,这就是用hdmi-cec功能实现的。
实现前提:
1.一个吃灰的树莓派,安装带桌面的树莓派镜像。(官方hassio的系统是否自带hdmi-cec支持未实测,本教程实例中使用的是树莓派官方镜像配合docker安装的homeassistant)
2.一台支持hdmi-cec的电视(目前大多数电视应该都有实现支持,需要打开hdmi-cec设置)
3.一根hdmi线
关于HDMI-CEC官方文档:
https://www.home-assistant.io/integrations/hdmi_cec/#libcec
但是从HomeAssistant 2021.7.0 开始,HomeAssistant Docker 中包含的 CEC 库不再支持 Linux 内核本身未包含的 CEC 接口。
有关说明:
https://github.com/home-assistant/core/issues/52802
https://www.home-assistant.io/blog/2021/07/07/release-20217/#breaking-changes
解决办法:
一、Supervisor安装PI CEC插件支持
如果你的HomeAssistant使用Docker运行在树莓派上
1.Supervisor / Add-ons” 添加存储库
https://github.com/samueltardieu/homeassistant-addons
配置方法:
在configuration.yaml文件中添加以下代码
hdmi_cec:
host: 58c14403-pi-cec
参考
https://github.com/samueltardieu/homeassistant-addon-pi-cec
二、HomeAssistant可以使用tcp控制树莓派方式打开电视
如果你的HomeAssistant运行在其他设备,而你刚好有个闲置的树莓派。将树莓派和电视连接。
1.编译安装libcec
https://github.com/Pulse-Eight/libcec
安装参考:https://github.com/Pulse-Eight/libcec/blob/master/docs/README.linux.md
2.安装pycec
https://github.com/konikvranik/pycec
pip install pycec
3.运行pycec
Python3 -m pycec
4.设置开机启动
touch /etc/systemd/system/pycec.service
vim /etc/systemd/system/pycec.service
粘贴如下内容
[Unit]
Description=hdmi-cec
After=network.target
[Service]
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/python -m pycec
User=pi
[Install]
WantedBy=multi-user.target
启动服务 sudo systemctl start mystart.service
设置开机启动 sudo systemctl enable mystart.service
5.HomeAssistant配置电视的开关
switch:
- platform: telnet
switches:
some_device_id:
name: "Some Device Name"
resource: 树莓派ip
port: 9526
command_on: '10:04'
command_off: '10:36'
command_state: '10:8f'
value_template: '{{ value == "01:90:00" }}'
timeout: 1
本文地址:https://www.blear.cn/article/homeassistant-hdmi-cec
转载时请以链接形式注明出处
评论