GNU/Linux >> Linux Esercitazione >  >> Debian

Raspberry Pi:accensione e spegnimento di una TV collegata tramite HDMI-CEC

Con l'aiuto di cec-client (parte di libcec) il tuo Raspberry Pi può controllare un dispositivo che supporta CEC, come B. una TV collegata tramite HDMI. Puoi accendere o spegnere la TV, cambiare la sorgente attiva e molto altro.

Questo dovrebbe funzionare con qualsiasi versione o modello di Raspberry Pi, incluso il Raspberry Pi originale e l'ultimo Raspberry Pi 4.

Un possibile caso d'uso per questo sarebbe quello di connettersi a un Raspberry Pi tramite SSH e inviare un comando per accendere o spegnere una TV ad esso collegata tramite HDMI-CEC. Oppure puoi utilizzare i comandi per accendere la TV e rendere l'adattatore CEC la sorgente attiva in una sorgente HDMI Raspberry Pi. Sono sicuro che puoi pensare a vari altri casi d'uso.

CHECK, o Consumer Electronics Control, è una funzione HDMI che consente di controllare i dispositivi collegati tramite HDMI con un telecomando. Ad esempio, CEC viene utilizzato per utilizzare i pulsanti di riproduzione/pausa su un telecomando per controllare la riproduzione su un dispositivo collegato tramite HDMI. Oppure quando riproduci un video su un Chromecast mentre la TV è spenta e la TV si accende automaticamente e passa alla sorgente Chromecast.

La maggior parte dei televisori e dei ricevitori AV moderni dovrebbe supportare HDMI-CEC. Si noti, tuttavia, che alcuni modelli potrebbero richiedere di abilitare CEC nelle impostazioni TV. CEC può avere un nome diverso a seconda della marca del dispositivo. Ad esempio si chiama Anynet+ per i televisori Samsung, EasyLink o Fun-Link per Philips, SimpLink per LG e così via.

Per poter accendere (e spegnere) un televisore che è collegato a un Raspberry Pi tramite HDMI, il primo passo è installare cec-client. Su Raspbian o qualsiasi altra distribuzione Linux basata su Debian o Ubuntu per Raspberry Pi, installa quel cec-utils pacchetto (cec-client fa parte di questo pacchetto):

sudo apt install cec-utils

Su altre distribuzioni Linux, dovrai cercare cec-client o cec-utils nei repository o compila libcec Dal sorgente.

Bene quel cec-utils installato, Scansiona il bus CEC per i dispositivi disponibili:

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

In questo comando echo 'scan' invia il comando di scansione a cec-client, -s è usato per cec-client per eseguire un singolo comando ed esiste, e -d 1 imposta il livello di registro su 1 (solo errore) in modo che il tuo terminale non sia contaminato da informazioni inutili.

Prendi nota del numero del dispositivo e dell'indirizzo della TV (o di qualsiasi altro dispositivo collegato al tuo Raspberry Pi tramite HDMI-CEC), poiché lo useremo in seguito.

Questo è un esempio di esecuzione di questo comando sul mio Raspberry Pi collegato a una TV Samsung tramite HDMI (con supporto CEC):

$ 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 questo esempio numero dispositivo 0 con il 0.0.0.0 L'indirizzo è la mia TV Samsung e il numero del dispositivo 1 con il 1.0.0.0 L'indirizzo è il mio dispositivo Raspberry Pi.

Ora che conosciamo il numero e l'indirizzo del dispositivo, puoi Utilizzare il seguente comando per accendere una TV collegata al Raspberry Pi tramite HDMI-CEC:

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

Oppure:

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

Sia il numero del dispositivo (0 è la TV Samsung nell'esempio sopra) e l'indirizzo del dispositivo (0.0.0.0 è l'indirizzo del dispositivo TV Samsung del mio esempio) dovrebbe funzionare.

-d 1 è mantenere il livello del registro solo in caso di errori e puoi usare il comando senza di esso, ma vedrai un registro lungo, probabilmente inutile.

Esempio:

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

Oppure:

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

Lo vuoi anche tu as Comando che rende l'adattatore CEC la sorgente attiva (Quindi la TV passa alla sorgente HDMI Raspberry Pi dopo aver acceso la TV):

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

Vuoi spegnere la TV (passare alla modalità standby)? Usa:

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

A seconda di come lo usi, potresti anche dover controllare lo stato attuale del televisore (è acceso o in standby?). Questo è possibile con:

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

Per vedere tutti i comandi che cec-client può inviare a un dispositivo connesso tramite HDMI-CEC, usa 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. Come modificare autorizzazioni e proprietari tramite riga di comando

  2. Raspberry Pi Firewall:come installarlo e gestirlo utilizzando UFW

  3. Installa SoftHSM e accedi tramite il programma Java

  4. Disabilita e disattiva Telnet in Linux

  5. Linux USB:accendere e spegnere l'alimentazione?

Come eseguire il backup e il ripristino della scheda SD per Raspberry Pi

Come installare ed eseguire Opera Browser tramite Snap su Ubuntu

RPI4, Raspberry Pi OS e desktop MATE - Modifiche essenziali

Protezione di SmarterMail tramite TLS (15.5 e versioni successive)

Come esportare e importare database tramite phpMyAdmin

Come installare GDAL e QGIS su un Raspberry Pi?