GNU/Linux >> Znalost Linux >  >> Debian

Raspberry Pi:Zapnutí a vypnutí televizoru připojeného přes HDMI-CEC

Pomocí cec-client (součást libcec) může vaše Raspberry Pi ovládat zařízení, které podporuje CEC, jako je B. televizor připojený přes HDMI. Můžete zapnout nebo vypnout televizor, přepnout aktivní zdroj a mnoho dalšího.

To by mělo fungovat s jakoukoli verzí nebo modelem Raspberry Pi, včetně původního Raspberry Pi i nejnovějšího Raspberry Pi 4.

Možným případem použití by bylo připojení k Raspberry Pi přes SSH a odeslání příkazu k zapnutí nebo vypnutí televizoru k němu připojeného přes HDMI-CEC. Nebo můžete pomocí příkazů zapnout TV a udělat z CEC adaptéru aktivní zdroj ve zdroji Raspberry Pi HDMI. Jsem si jistý, že vás napadají různé další případy použití.

CHECK neboli Consumer Electronics Control je funkce HDMI, která umožňuje ovládat zařízení připojená přes HDMI pomocí dálkového ovladače. CEC se například používá k použití tlačítek přehrávání / pauzy na dálkovém ovladači k ovládání přehrávání na zařízení připojeném přes HDMI. Nebo když přehráváte video na Chromecastu, když je televizor vypnutý a televizor se automaticky zapne a přepne na zdroj Chromecast.

Většina moderních televizorů a AV přijímačů by měla podporovat HDMI-CEC. Upozorňujeme však, že některé modely mohou vyžadovat povolení CEC v nastavení televizoru. CEC může mít jiný název v závislosti na značce zařízení. Například se nazývá Anynet + pro televizory Samsung, EasyLink nebo Fun-Link pro Philips, SimpLink pro LG a tak dále.

Aby bylo možné zapnout (a vypnout) televizor, který je připojen k Raspberry Pi přes HDMI, prvním krokem je instalace cec-client. Na Raspbian nebo jakékoli jiné distribuci Linuxu založené na Debianu nebo Ubuntu pro Raspberry Pi nainstalujte cec-utils balíček (cec-client je součástí tohoto balíčku):

sudo apt install cec-utils

V jiných distribucích Linuxu budete muset hledat cec-client nebo cec-utils v úložištích nebo sestavte libcec ze zdroje.

Tedy cec-utils nainstalováno, prohledejte sběrnici CEC a vyhledejte dostupná zařízení:

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

V tomto příkazu echo 'scan' odešle příkaz scan do cec-client, -s se používá pro cec-client ke spuštění jediného příkazu a existuje, a -d 1 nastaví úroveň protokolu na 1 (pouze chyba), aby váš terminál nebyl kontaminován zbytečnými informacemi.

Poznamenejte si číslo zařízení a adresu televizoru (nebo jakéhokoli jiného zařízení připojeného k vašemu Raspberry Pi přes HDMI-CEC), protože je použijeme později.

Toto je příklad spuštění tohoto příkazu na mém Raspberry Pi připojeném k televizoru Samsung přes HDMI (s podporou 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)


V tomto příkladu číslo zařízení 0 s 0.0.0.0 Adresa je můj televizor Samsung a číslo zařízení 1 s 1.0.0.0 Adresa je moje zařízení Raspberry Pi.

Nyní, když známe číslo a adresu zařízení, můžete pomocí následujícího příkazu zapnout televizi připojenou k Raspberry Pi přes HDMI-CEC:

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

Nebo:

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

Číslo obou zařízení (0 je televizor Samsung ve výše uvedeném příkladu) a adresa zařízení (0.0.0.0 je adresa zařízení Samsung TV z mého příkladu) by měla fungovat.

-d 1 je udržovat úroveň protokolu pouze při chybách a příkaz můžete použít i bez něj, ale uvidíte dlouhý, pravděpodobně zbytečný protokol.

Příklad:

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

Nebo:

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

To chcete taky as Příkaz, který učiní adaptér CEC aktivním zdrojem (Televizor se tedy po zapnutí televizoru přepne na zdroj Raspberry Pi HDMI):

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

Přejete si vypnout televizor (přepnout do pohotovostního režimu)? Použijte:

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

V závislosti na tom, jak to používáte, možná budete muset zkontrolovat aktuální stav televizoru (je zapnutý nebo v pohotovostním režimu?). To je možné pomocí:

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

Chcete-li zobrazit všechny příkazy, které může cec-client odeslat do zařízení připojeného přes HDMI-CEC, použijte 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. Jak změnit oprávnění a vlastníky pomocí příkazového řádku

  2. Raspberry Pi Firewall:Jak jej nainstalovat a spravovat pomocí UFW

  3. Nainstalujte SoftHSM a přistupujte k němu prostřednictvím programu Java

  1. Vydán LibreOffice 7.0 – Nainstalujte jej přes PPA na Ubuntu a Mint

  2. Raspberry Pi 4 a Kali

  3. Linux USB:zapínání a vypínání napájení?

  1. Zakažte a vypněte Telnet v Linuxu

  2. Jak přesunout všechny soubory a složky pomocí příkazu mv

  3. Zakázat TCP-Offloading {úplně, obecně a snadno}