『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 4419|回复: 11

[进阶教程] HomeAssistant使用HDMI-CEC实现电视的开机

[复制链接]

4

主题

132

帖子

1906

积分

论坛技术达人

积分
1906
金钱
1769
HASS币
10
QQ
发表于 2022-11-29 18:23:35 | 显示全部楼层 |阅读模式
本帖最后由 Blear 于 2022-11-30 13:14 编辑

看了眼论坛里关于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

2.在configuration.yaml文件中添加以下代码
hdmi_cec:
  host: 58c14403-pi-cec
接下来就可以调用hdmi_cec.send_command服务去发送开机指令了
service: hdmi_cec.send_command
data:
  raw: '10:04'


二、HomeAssistant使用tcp控制树莓派方式打开电视
如果你的HomeAssistant运行在其他设备,而你刚好有个闲置的树莓派。将树莓派和电视连接。
(比如我的homeassistant运行在群辉,为了实现电视的开机,接了个树莓派放置在客厅电视旁)
1.编译安装libcec
安装完成后执行
echo scan | cec-client -s -d 1
如果能返回如下信息,说明树莓派已经能发现hdmi设备了
opening a connection to the CEC adapter...
requesting CEC bus information ...
CEC bus information
===================
device #0: TV
address:       0.0.0.0
active source: no
vendor:        Unknown
osd string:    TV
CEC version:   1.4
power status:  on        #电源状态
language:      ???


device #1: Recorder 1
address:       1.0.0.0
active source: no
vendor:        Pulse Eight
osd string:    CECTester
CEC version:   1.4
power status:  on
language:      eng

pip install pycec

3.运行pycec
Python3 -m pycec

4.设置开机启动
touch /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 pycec.service

设置开机启动
sudo systemctl enable pycec.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


评分

参与人数 2金钱 +25 HASS币 +10 收起 理由
w11235 + 5 感谢楼主分享!
+ 20 + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

8

主题

70

帖子

1914

积分

金牌会员

Rank: 6Rank: 6

积分
1914
金钱
1844
HASS币
0
发表于 2022-11-30 06:09:17 来自手机 | 显示全部楼层
树莓派hassio自带这个插件,但不知道怎么配置
回复

使用道具 举报

0

主题

608

帖子

2520

积分

金牌会员

Rank: 6Rank: 6

积分
2520
金钱
1912
HASS币
0
发表于 2022-11-30 08:31:58 | 显示全部楼层
好帖子,前排留名
回复

使用道具 举报

18

主题

218

帖子

1822

积分

论坛技术达人

积分
1822
金钱
1604
HASS币
10
发表于 2022-11-30 08:39:01 | 显示全部楼层
但是cec打开之后。 会显示hdmi的信号源吧。 不会进入系统界面
回复

使用道具 举报

4

主题

132

帖子

1906

积分

论坛技术达人

积分
1906
金钱
1769
HASS币
10
QQ
 楼主| 发表于 2022-11-30 13:07:12 | 显示全部楼层
lhy741059930 发表于 2022-11-30 08:39
但是cec打开之后。 会显示hdmi的信号源吧。 不会进入系统界面

不会,我这边开机进入的电视自己的源,非树莓派的源
回复

使用道具 举报

4

主题

132

帖子

1906

积分

论坛技术达人

积分
1906
金钱
1769
HASS币
10
QQ
 楼主| 发表于 2022-11-30 13:12:57 | 显示全部楼层
sircoco 发表于 2022-11-30 06:09
树莓派hassio自带这个插件,但不知道怎么配置

开机命令调用hdmi_cec.send_command服务
你也可以在开发者工具=》服务里 调用测试。
service: hdmi_cec.send_command
data:
  raw: '10:04'


回复

使用道具 举报

3

主题

30

帖子

486

积分

中级会员

Rank: 3Rank: 3

积分
486
金钱
456
HASS币
0
发表于 2022-12-4 17:41:22 | 显示全部楼层
您好,请问我用appletv可以通过遥控器打开电视,这也应该是通过hdmi cec实现的吧,但是怎么实现打开电视就直接跳转到hdmi,通常我还需要用原生遥控切换
回复

使用道具 举报

4

主题

132

帖子

1906

积分

论坛技术达人

积分
1906
金钱
1769
HASS币
10
QQ
 楼主| 发表于 2022-12-4 21:31:03 | 显示全部楼层
liangfeel 发表于 2022-12-4 17:41
您好,请问我用appletv可以通过遥控器打开电视,这也应该是通过hdmi cec实现的吧,但是怎么实现打开电视就 ...
service: hdmi_cec.select_device
data:
  device: 0.0.0.0
回复

使用道具 举报

3

主题

30

帖子

486

积分

中级会员

Rank: 3Rank: 3

积分
486
金钱
456
HASS币
0
发表于 2022-12-5 05:36:12 | 显示全部楼层

研究研究,感谢
回复

使用道具 举报

31

主题

413

帖子

2053

积分

金牌会员

Rank: 6Rank: 6

积分
2053
金钱
1640
HASS币
0
发表于 2022-12-5 21:30:48 | 显示全部楼层
群晖docker装的ha要怎么装啊?大佬,求教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 14:30 , Processed in 0.668506 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表