HomeAssistant使用HDMI-CEC实现电视的开机


现在大多数电视的遥控都用的蓝牙遥控器,无法使用红外实现电视的开关机。

用过机顶盒的同学,不知道有没有试过有的机顶盒打开后,电视会跟随机顶盒一起开机,这就是用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

转载时请以链接形式注明出处

评论
受监管部门要求,个人网站不允许评论功能,评论已关闭,抱歉!