使用 CEC 打开和关闭电视

使用 CEC 打开和关闭电视

我正在做一个项目,需要一个可以自动打开和关闭的显示器。

为了实现这一点,我想到使用一个 Linux 盒子(更具体地说是 Raspberry Pi)并通过 HDMI-CEC 连接到电视,然后使用一些 cron 作业在指定的时间打开和关闭电视。

但后来我想知道......这可能吗?

并且..关于如何实现自动打开和关闭显示器的目标还有其他建议吗?

答案1

我在工作中大约有 8 台机器用于数字标牌显示。我使用 DPMS 在晚上 10 点关闭它们,并在早上 6:45 重新打开它们xset。只有两个 cron 作业:

45 6 * * * root su <user who is auto-logged into the gui> -c "xset -display :0 dpms force on"

0 22 * * * root su <user who is auto-logged into the gui> -c "xset -display :0 dpms force off"

当然,这只有当计算机提供显示器上显示的内容时才有效。

答案2

还有其他解决方案。使用一个简单的模拟或者数字的定时器可以工作。有家庭自动化解决方案,例如X10,可编程。

答案3

当然可以,不过我猜你的项目已经结束了。2024 年的答案依赖于现代 HDMI-CEC 实现,例如包v4l-实用程序尤其是它的cec-ctl命令。要让它工作,只需将

dtoverlay=vc4-kms-v3d

在您的/boot/config.txt文件中,这将为您提供/dev/cec0第一个 HDMI 端口的设备。然后您可以执行一些拓扑发现命令,例如

sudo cec-ctl -S

例如,它可以显示你的电视是设备0和昵称TV。现在你几乎完成了,你可以使用关闭电视

sudo cec-ctl --standby --to TV

并且通常使用

sudo cec-ctl --user-control-pressed ui-cmd=power-on-function --to TV

显然,在同一总线上拥有多个 HDMI 端口、多个设备、多个不同的 HDMI-CEC 标准可能需要一些额外的参数,甚至可能会搞砸总线配置,所以要小心……但如果你设法让所有设备都正常工作,那会很有趣:你可以访问总线上的所有设备,向它们发送命令,更改它们的配置,模拟它们的远程按钮按下等等。sudo在与我的配置环境(即分布)不同的配置环境中,也可能没有必要piCorePlayer

请查看STM32 维基百科找到更多的例子。

相关内容