电视机看板

2023年3月20日 · 731 字 · 2 分钟

calendar

目标:

  1. 回家电视自动打开,作为看板显示
  2. 离家电视自动关闭,节约用电,保护电视

需要解决的问题:

  • 回家检测
  • 自动打开和关闭电视,参考文章1
  • 看板 APP 开发

整活

设备准备

  • Micro HDMI 转 HDMI 数据线(3m)
  • 前端:电视,海信 65E55H
  • 服务端:Raspberry 4B

HDMI CEC 介绍

HDMI-CEC是一种特殊的协议,用于电视与另一个设备通过HDMI电缆进行通信。该协议允许电视控制另一个设备,同时也允许该设备控制电视。2

大多数国外现代电视实现了对这一协议的支持,但通常需要在电视的设置中启用。搜索电视型号应该可以找到这个设置的名称。至于国内嘛,呵呵。早在 2005 年,HDMI-CEC 协议就成为 HDMI 1.2a 的一部分。号称 “中国第一,世界第二” 的海信电视,也是近两年的电视才支持这一协议,但是支持的不好。

sudo apt update
sudo apt upgrade
# 安装 cec-client 软件
sudo apt install cec-utils
# 扫描 HDMI-CEC 设备   
echo 'scan' | cec-client -s -d 1 

注意,Raspberry 有两个 Micro HDMI 输出接口,靠近电源的接口支持 HDMI CEC 协议

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:   unknown
power status:  standby
language:      ???


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


currently active source: unknown (-1)

从输出的内容可以看出,发现一台支持 HDMI-CEC 协议通信的电视(osd string: TV),编号(#0),地址(0.0.0.0)。但是还有很多字段是 Unknown,说明这台电视对该协议支持不好。支持良好的电视/设备,扫描结果如下:

device #0: TV
address:       0.0.0.0
active source: no
vendor:        Sony
osd string:    TV
CEC version:   1.4
power status:  standby
language:      eng

device #4: Playback 1
address:       3.0.0.0
active source: no
vendor:        Sony
osd string:    PlayStation 4
CEC version:   1.3a
power status:  standby
language:      ???

HDMI CEC 使用(自动开机)

echo 'on 0.0.0.0' | cec-client -s  -d 1

ADB 曲线救国,实现自动关机

adb connect [xx.xx.xx.xx]:5555
adb shell input keyevent 26

为啥不用 HDMI CEC 关机/待机,因为海信电视不支持,用 HDMI-CEC 发送待机消息,电视完全没有反应。

calendar