拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何在树莓派上使用 HDMI-CEC

如何在树莓派上使用 HDMI-CEC

白鹭 - 2022-01-05 2626 0 0

HDMI-CEC 是一种特殊协议,旨在让电视通过 HDMI 电缆与其他设备进行通信。此协议允许电视控制另一台设备,同时允许该设备控制电视。

大多数现代电视都支持此协议,但通常必须在电视设置中启用。搜索电视型号将帮助您了解此设置的名称。

使用HDMI-CEC协议,您可以使用Raspberry Pi以多种方式控制电视,例如打开和关闭,或改变音量。

如何在树莓派上使用HDMI-CEC的图片1

您可以使用树莓派以多种方式控制电视

在树莓派上安装cec-client

在本节中,本文将向您展示在 Raspberry Pi 上安装 cec-client 软件的简单步骤。 cec-client 是一个软件包,将在 Raspberry Pi 上使用,通过 HDMI-CEC 协议控制设备。

步骤 1.第一个任务是更新 Raspberry Pi 上的软件包列表以及升级当前安装的软件包。运行以下两个命令。

sudo apt update sudo apt upgrade

第一个命令将更新包列表。第二个命令将升级已安装的包。

第 2 步。下一步是安装 cec-utils该软件包包含将在本教程后面使用的 cec-client 软件。

您可以通过运行以下命令将此软件包安装到您的 Raspberry Pi 上。

sudo apt install cec-utils

使用此捆绑包提供的工具,您可以使用 CEC 通过连接到 Raspberry Pi 的 HDMI 电缆发送命令。

使用 Raspberry Pi 通过 HDMI-CEC 与电视互动

在本节中,本文将向您展示如何使用不同的cec-client 软件与其他设备进行交互。

在本节中,您会注意到每一步都需要做一些事情。

首先是使用echo| 。使用这两个直接向cec-client软件传递命令,无需启动。

此外,-s-d 选项也与 cec-client 软件一起使用。

-s 选项告诉软件您将发出单个命令。软件将启动,发出命令,然后立即退出。

选项 -d 1 设置软件的调试级别。通过将其设置为 1 ,cec-client 软件将仅显示错误。

此设置显着减少了填充控制台的文本量。

从树莓派扫描 HDMI-CEC 设备

第 1 步。您需要做的第一件事是扫描宣传它们具有 CEC 功能的可用设备。通过在 Raspberry Pi 上运行以下命令来扫描启用 HDMI-CEC 的设备。

echo 'scan' | cec-client-s-d 1

第 2 步。通过此命令,您将看到 Raspberry Pi 当前有权访问的设备列表。

您需要确定要与之交互的设备。通常,'os string:''vendor:' 字段将帮助您确定要与之交互的设备。

确定正确的设备后,记下'地址:'或设备号。

打开与 CEC 适配器的连接。请求 CEC 总线信息。 CEC 总线信息====================设备 #0:电视地址:0.0.0.0 活动源:无供应商:索尼 osd 字符串:电视 CEC 版本:1.4 电源状态:待机语言:eng device #1:Recorder 1 地址:1.0.0.0 active source:无供应商:Pulse 八 osd string:CECTester CEC 版本:1.4 电源状态:on 语言:eng device #4:播放 1 地址:3.0.0.0 active来源:无厂商:Sony osd 字符串:PlayStation 4 CEC 版本:1.3a 电源状态:待机语言:???

请注意,本示例中的'device #1: Recorder 1' 是 Raspberry Pi 自己的 CEC 连接,因此您可以安全地绕过它。

第 3 步。例如,如果您想控制 'Sony TV' ,您可以看到设备编号为 '0' 并且设备地址为为 '0.0.0.0'。

获得设备编号或设备地址后,您可以开始向其发送命令。

通过 HDMI-CEC 发送“开启”命令

使用 cec-client 打开设备是一个相对简单的过程。

echo 'on' |欧洲委员会-client-s d 1

如上所示,您只需发送一个 on 命令,后跟设备地址或设备编号。

通过 HDMI-CEC 打开设备的示例

例如,如果您想打开地址为“0.0.0.0”的索尼电视,请使用如下所示的命令。

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

通过 HDMI-CEC 发送“待机”命令

如果您想使用 Raspberry Pi 关闭电视(将其置于待机状态),您也可以使用 HDMI-CEC 轻松完成此操作。

echo 'standby' | cec-client-s d 1

要将电视置于待机模式,您只需发送“standby”命令,然后是设备的地址或号码。

如何通过 HDMI-CEC 关闭设备的示例

使用这个命令比较简单。要将 Sony TV 置于待机模式,您只需发送“standby”,后跟设备地址“0.0.0.0”。

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

通过 HDMI-CEC 获取电源状态

您甚至可以在 Raspberry Pi 上使用 HDMI-CEC 来检索设备的电源状态。

echo 'pow' | cec-client-s d 1

使用 pow 命令,您可以查看您所连接的设备当前是否已开机或处于待机模式。此命令可用于决定您是否需要打开或关闭电视,尤其是在远程管理设备时。

HDMI-CEC 接收电源状态示例

与大多数 HDMI-CEC 命令一样,执行此操作相对容易。您需要做的就是 pow 引用,然后是设备地址。

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

如果设备处于待机模式,您应该会在终端中看到如下所示的内容。

打开与 CEC 适配器的连接。电源状态:待机

检索其他 CEC 客户端命令

如果您想检查是否可以使用 HDMI-CEC 从 Raspberry Pi 向电视发出其他命令,您可以使用以下命令。

echo 'h' | cec-client-s-d 1

该命令的作用是检索 cec-client 软件知道如何处理的可用命令。

从这个命令你会得到一个命令列表,就像下面的例子一样。

================================================================================可用命令:[tx] { bytes} 通过 CEC 线路传输字节。 [txn] {bytes} 传输字节但不等待传输 ACK。 [on] {address} 使用给定的逻辑地址打开设备电源。 [standby] {address} 将具有给定地址的设备置于待机模式。 [la] {logical address} 更改 CEC 适配器的逻辑地址。 [p] {device} {port} 更改 CEC 适配器的 HDMI 端口号。 [pa] {physical address} 更改CEC 适配器的物理地址。 [as] 使 CEC 适配器成为活动源。 [是] 将 CEC 适配器标记为非活动源。 [osd] {addr} {string} 在指定设备上设置 OSD 消息。 [ver] {addr} 获取指定设备的 CEC 版本。 [ven] {addr} 获取指定设备的供应商 ID。 [lang] {addr} 获取指定设备的菜单语言。 [pow] {addr} 获取指定设备的电源状态。 [name] {addr} 获取指定设备的 OSD 名称。 [poll] {addr} 轮询指定设备。 [lad] 列出总线上的活动设备 [ad] {addr} 检查指定的设备是否处于活动状态。 [at] {type} 检查指定的设备类型是否处于活动状态。 [sp] {addr} 使指定的物理地址处于活动状态。 [spl] {addr} 使指定的逻辑地址处于活动状态。 [volup] 向放大器发送音量增大命令(如果存在) [voldown] 向放大器发送音量减小命令(如果存在) [mute] 向放大器发送静音/取消静音命令(如果存在) [self] 显示由控制的地址列表libCEC [scan] 扫描 CEC 总线并显示设备信息 [mon] {1|0} 启用或禁用 CEC 总线监控。 [log] {1-31} 更改日志级别。有关值,请参见 cectypes.h。 [ping] 向 CEC 适配器发送 ping 命令。 [bl] 让适配器进入bootloader,升级flash rom。 [r] 重新连接到 CEC 适配器。 [h] 或 [help] 显示此帮助。 [q] 或 [quit] 退出 CEC 测试客户端并关闭所有连接的 CEC 设备。================================================================================

到此,你已经学会了如何使用树莓派上的cec-client来控制支持HDMI-CEC协议的设备。

祝你好运!

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *