GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Raspberry Pi:Einen über HDMI-CEC angeschlossenen Fernseher ein- und ausschalten

Mit Hilfe von cec-client (Teil von libcec) kann Ihr Raspberry Pi ein Gerät steuern, das CEC unterstützt, wie z. B. einen Fernseher, der über HDMI angeschlossen ist. Sie können den Fernseher ein- oder ausschalten, die aktive Quelle umschalten und vieles mehr.

Dies sollte mit allen Raspberry Pi-Versionen oder -Modellen funktionieren, einschließlich dem ursprünglichen Raspberry Pi sowie dem neuesten Raspberry Pi 4.

Ein möglicher Anwendungsfall dafür wäre, sich über SSH mit einem Raspberry Pi zu verbinden und einen Befehl zu senden, um einen daran angeschlossenen Fernseher über HDMI-CEC ein- oder auszuschalten. Oder Sie können die Befehle verwenden, um den Fernseher einzuschalten und den CEC-Adapter zur aktiven Quelle in einer Raspberry Pi HDMI-Quelle zu machen. Ich bin sicher, Ihnen fallen verschiedene andere Anwendungsfälle ein.

CHECK oder Consumer Electronics Control ist eine HDMI-Funktion, mit der über HDMI angeschlossene Geräte mit einer Fernbedienung gesteuert werden können. CEC wird beispielsweise verwendet, um die Wiedergabe-/Pause-Tasten auf einer Fernbedienung zu verwenden, um die Wiedergabe auf einem über HDMI angeschlossenen Gerät zu steuern. Oder wenn Sie ein Video auf einem Chromecast abspielen, während der Fernseher ausgeschaltet ist, und der Fernseher sich automatisch einschaltet und zur Chromecast-Quelle wechselt.

Die meisten modernen Fernseher und AV-Receiver sollten HDMI-CEC unterstützen. Beachten Sie jedoch, dass Sie bei einigen Modellen möglicherweise CEC in den TV-Einstellungen aktivieren müssen. CEC kann je nach Gerätemarke einen anderen Namen haben. Beispielsweise heißt es Anynet+ für Samsung-Fernseher, EasyLink oder Fun-Link für Philips, SimpLink für LG und so weiter.

Um einen Fernseher ein- (und aus-)schalten zu können per HDMI mit einem Raspberry Pi verbunden ist, ist der erste Schritt die Installation von cec-client. Installieren Sie auf Raspbian oder einer anderen Debian- oder Ubuntu-basierten Linux-Distribution für Raspberry Pi diesen cec-utils Paket (cec-client ist Teil dieses Pakets):

sudo apt install cec-utils

Bei anderen Linux-Distributionen müssen Sie nach cec-client suchen oder cec-utils in den Repositories oder baue libcec aus der Quelle.

Nun, das cec-utils installiert haben, scannen wir den CEC-Bus nach verfügbaren Geräten:

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

In diesem Befehl echo 'scan' sendet den Scan-Befehl an cec-client, -s wird für cec-client verwendet, um einen einzelnen Befehl auszuführen und zu existieren, und -d 1 setzt den Log-Level auf 1 (nur Fehler), damit Ihr Terminal nicht mit nutzlosen Informationen kontaminiert wird.

Notieren Sie sich die Gerätenummer und Adresse des Fernsehers (oder eines anderen Geräts, das über HDMI-CEC mit Ihrem Raspberry Pi verbunden ist), da wir diese später verwenden werden.

Dies ist ein Beispiel, das diesen Befehl auf meinem Raspberry Pi ausführt, der über HDMI (mit CEC-Unterstützung) mit einem Samsung-Fernseher verbunden ist:

$ echo 'scan' | cec-client -s -d 1
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:        Samsung
osd string:    TV
CEC version:   1.4
power status:  on
language:      eng
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
currently active source: unknown (-1)


In diesem Beispiel Gerätenummer 0 mit dem 0.0.0.0 Die Adresse ist mein Samsung TV und die Gerätenummer 1 mit dem 1.0.0.0 Adresse ist mein Raspberry Pi-Gerät.

Jetzt, da wir die Gerätenummer und -adresse kennen, können Sie den folgenden Befehl verwenden, um einen Fernseher einzuschalten, der über HDMI-CEC mit dem Raspberry Pi verbunden ist:

echo 'on <DEVICE #>' | cec-client -s -d 1

Oder:

echo 'on <DEVICE ADDRESS>' | cec-client -s -d 1

Sowohl die Gerätenummer (0 ist im obigen Beispiel der Samsung Fernseher) und die Geräteadresse (0.0.0.0 ist die Samsung-TV-Geräteadresse aus meinem Beispiel) sollte funktionieren.

-d 1 ist, den Log-Level nur bei Fehlern zu halten, und Sie können den Befehl auch ohne ihn verwenden, aber Sie werden ein langes, wahrscheinlich nutzloses Log sehen.

Beispiel:

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

Oder:

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

Du willst das auch as Befehl, der den CEC-Adapter zur aktiven Quelle macht (Der Fernseher schaltet also nach dem Einschalten des Fernsehers auf die HDMI-Quelle des Raspberry Pi um):

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

Möchten Sie den Fernseher ausschalten (in den Standby-Modus wechseln)? Verwendung:

echo 'standby <DEVICE #>' | cec-client -s -d 1

Je nachdem, wie Sie dies verwenden, müssen Sie möglicherweise auch den aktuellen Status des Fernsehgeräts überprüfen (ist es eingeschaltet oder im Standby-Modus?). Dies ist möglich mit:

echo 'pow <DEVICE #>' | cec-client -s -d 1

Um alle Befehle anzuzeigen, die cec-client an ein über HDMI-CEC angeschlossenes Gerät senden kann, verwenden Sie echo h | cec-client -s -d 1 :

Available commands:
[tx] {bytes}              transfer bytes over the CEC line.
[txn] {bytes}             transfer bytes but don't wait for transmission ACK.
[on] {address}            power on the device with the given logical address.
[standby] {address}       put the device with the given address in standby mode.
[la] {logical address}    change the logical address of the CEC adapter.
[p] {device} {port}       change the HDMI port number of the CEC adapter.
[pa] {physical address}   change the physical address of the CEC adapter.
[as]                      make the CEC adapter the active source.
[is]                      mark the CEC adapter as inactive source.
[osd] {addr} {string}     set OSD message on the specified device.
[ver] {addr}              get the CEC version of the specified device.
[ven] {addr}              get the vendor ID of the specified device.
[lang] {addr}             get the menu language of the specified device.
[pow] {addr}              get the power status of the specified device.
[name] {addr}             get the OSD name of the specified device.
[poll] {addr}             poll the specified device.
[lad]                     lists active devices on the bus
[ad] {addr}               checks whether the specified device is active.
[at] {type}               checks whether the specified device type is active.
[sp] {addr}               makes the specified physical address active.
[spl] {addr}              makes the specified logical address active.
[volup]                   send a volume up command to the amp if present
[voldown]                 send a volume down command to the amp if present
[mute]                    send a mute/unmute command to the amp if present
[self]                    show the list of addresses controlled by libCEC
[scan]                    scan the CEC bus and display device info
[mon] {1|0}               enable or disable CEC bus monitoring.
[log] {1 - 31}            change the log level. see cectypes.h for values.
[ping]                    send a ping command to the CEC adapter.
[bl]                      to let the adapter enter the bootloader, to upgrade
the flash rom.
[r]                       reconnect to the CEC adapter.
[h] or [help]             show this help.
[q] or [quit]             to quit the CEC test client and switch off all
connected CEC devices.


Debian
  1. Raspberry Pi Firewall:So installieren und verwalten Sie sie mit UFW

  2. Installieren Sie SoftHSM und greifen Sie über das Java-Programm darauf zu

  3. Deaktivieren und deaktivieren Sie Telnet in Linux

  4. LibreOffice 7.0 veröffentlicht – Installieren Sie es über PPA auf Ubuntu und Mint

  5. TCP-Offloading {vollständig, generisch und einfach} deaktivieren

So sichern und wiederherstellen Sie eine SD-Karte für Raspberry Pi

So installieren und starten Sie Opera Browser über Snap auf Ubuntu

RPI4, Raspberry Pi OS und MATE Desktop – Wesentliche Optimierungen

Sicherung von SmarterMail über TLS (15.5 und höher)

So exportieren und importieren Sie eine Datenbank über phpMyAdmin

Wie installiere ich GDAL und QGIS auf einem Raspberry Pi?