Per CEC Software auf dem RasPi steuern

© Olegdudko, 123RF

Fernbedient

Mit der Fernbedienung den RasPi steuern. In der Theorie möglich, in der Praxis oft beschwerlich. Die Libcec liefert praktische Tools zur Fehlersuche.

Auf der Couch sammeln sich die Fernbedienungen für alle möglichen Geräte, vom Fernseher bis zum DVD-Player. Eigentlich sollte es möglich sein, jedes Gerät mit jeder Fernbedienung zu steuern, wenn die Geräte per HDMI verbunden sind und den CEC-Standard (Consumer Electronics Control) implementieren. Ob ein eigenes Webradio auf einem RasPi da mitspielt?

Ausgangslage für dieses Projekt war ein neuer AV-Receiver, bewusst ohne Anschluss ans Netzwerk erworben. Zu schnell hat ein Bot das Einfallstor gefunden, zu schnell veralten wegen fehlender Updates für die Firmware die eingebauten Funktionen. Dank LibreElec und Kodi rüsten Sie stattdessen kostengünstig mit einem RasPi nach.

Für den Empfang von Internet-Radio hatte der Autor schon eine Lösung, die ursprünglich zwar als einfaches Küchenradio gedacht war, aber per HDMI nun an den AV-Receiver Anschluss fand (siehe Kasten "Simple-Radio").

Simple-Radio

Das Projekt Simple-Radio [3] war als kleines und einfaches Webradio für die Küche konzipiert. Gesteuert über ein TTP229-basiertes Touchpad mit 16 Tasten gibt es den laufenden Sender sowie deren Icecast-Meldungen auf einem LCD-Display (16 x 2 oder 20 x 4 Zeilen) aus.

Die Konfiguration der Soundausgabe ist nicht Teil des Projekts, hier geht alles, was ein Pi zu bieten hat, etwa per HDMI, Bluetooth, USB-Audio oder per I2S. Das Beispiel in Abbildung 1 zeigt das Mini-Speaker-Bonnet von Pimoroni mit zwei direkt angeschlossenen kleinen Lautsprechern.

Inzwischen bietet das Simple-Radio viel mehr als nur den Empfang und die Wiedergabe von Radiosendern im Internet. So ist es möglich, per Tastendruck eine Spontanaufnahme eines Senders zu starten und später die Aufnahme wieder abzuspielen.

Für den zeitgesteuerten Rekorder-Betrieb per Cron oder At hat das in Python implementierte Programm einen Modus, der völlig ohne Tasten oder Display auf einem Headless-Server funktioniert. Ebenfalls hinzugekommen ist die Steuerung per Infrarot-Fernbedienung mittels Lirc, denn das Webradio hängt jetzt am AV-Receiver und bespielt per HDMI die heimische Stereoanlage.

Abbildung 1: Das Projekt Simple-Radio basiert auf einem Pi-Zero-W. Trotz der geringen Größe bietet es eine Vielzahl von Funktionen.

Das Radio reagiert auf eine Infrarot-Fernbedienung. Jetzt war das Ziel, diese Fernbedienung einzusparen und stattdessen die des Receivers zu nutzen. Falls das nicht geht, sollte der Pi zumindest in der Lage sein, Änderungen der Lautstärke an den Receiver zu delegieren.

CEC-Kunde

Ein Pi fügt sich dank seines HDMI-Anschlusses perfekt in die TV- und Mediaplayer-Landschaft ein. Darüber hinaus unterstützt er über die Bibliothek Libcec den CEC-Standard. Das erlaubt es etwa, ein an einen Fernseher angeschlossenes Kodi-System mit der Fernbedienung des Fernsehers zu steuern. Umgekehrt schaltet der Pi beim Herunterfahren von Kodi gleich den Fernseher mit aus.

Das perfekte Zusammenspiel ist aber nicht garantiert: Beim Autor klappt das mit einem Samsung-TV perfekt, dort erscheint das Kodi-Menü im Tools-Menü des Fernsehers. Bei einer anderen Installation mit einem Philips-TV funktioniert CEC nicht, hier schaltet Kodi den Fernseher bloß rhythmisch ein und aus. Dieser Artikel liefert ein paar Ansätze zum Testen und zur Fehlersuche.

CEC definiert einen Bus, an dem maximal 16 Geräte hängen dürfen. Der Fernseher (es darf nur einen geben), führt die Nummer 0, ein AV-Receiver die Nummer 5. Ein Pi schnappt sich beim Registrieren am Bus eine freie Adresse gemäß der Spezifikation. Meldet er sich etwa als Tuner-Gerät, bekommt er die Nummer 2 (Tuner1). Jedes Gerät darf mit jedem kommunizieren. Die Befehle sind recht einfach gestrickt.

Am Anfang stehen Sender und Empfänger, in den weiteren Bytes sind die Befehle und deren Argumente kodiert. Darum brauchen Sie sich allerdings weder als Anwender noch als Programmierer zu kümmern, denn die Details versteckt die Libcec. Wer an diesen Interesse hat, sollte die Webseite CEC-o-Matic [1] besuchen. Hier gibt es viele technische Infos einschließlich eines Generators für Lowlevel-CEC-Befehle sowie umgekehrt deren Dekodierung.

Experimente

Die folgenden Tests funktionieren mit einem beliebigen RasPi. Wichtig ist, dass der Pi an einem Fernseher oder AV-Receiver hängt. Monitore eignen sich nicht, da sie CEC nicht implementieren. Auf der Seite der Software genügt ein Raspbian Lite, beim Schreiben dieses Artikels kam die Version 1804 zum Einsatz.

Wie gewohnt installieren Sie über die Paketverwaltung die benötigten Pakete: sudo apt install libcec cec-utils. Das erstere Paket installiert im Wesentlichen nur eine Bibliothek für die oben beschriebenen Low-Level-Befehle. Das zweite enthält einen einfachen CEC-Client, der sich bestens für erste Experimente eignet.

Den Befehl cec-client führen Sie jetzt in einem Terminal aus. Er ist sehr gesprächig, denn er gibt neben den interessanten Informationen noch Debug-Meldungen aus. Mit den Optionen -d 2 oder -d 4 reduzieren Sie die Geschwätzigkeit. An diesen kryptischen Optionen sehen Sie, dass das Programm für Tests der Libcec-Entwickler geschrieben ist und nicht für Endanwender.

Der Client arbeitet wie eine Art Shell mit eigenen Kommandos. Der Befehl scan etwa liefert Informationen zu allen am Bus angemeldeten Geräten (Abbildung 2). Im Beispiel sehen Sie einen Fernseher (Nummer 0), den Pi (Nummer 1) und den AV-Receiver.

Abbildung 2: Scan des CEC-Busses mit dem CEC-Client.

Da die Libcec von der Firma Pulse-Eight stammt, taucht dieser Name als Hersteller beim Pi auf. Ebenfalls ersichtlich ist, dass nicht jede Firma den Standard komplett implementiert, so liefert der Samsung-Fernseher nicht die CEC-Version und der Denon-Receiver nicht die Sprache.

Geben Sie h im Client ein, erhalten Sie eine Liste der unterstützten Befehle. Manche brauchen ein Argument, so etwa on: Mit on 0 schalten Sie den Fernseher (Nummer 0) ein. Analog schalten Sie das TV-Gerät mit standby 0 wieder ab.

Weitere interessante Befehle sind mute, volup, voldown zum Steuern der Lautstärke sowie as, um die aktive Quelle (active source) zu setzen. Aktiviert sich der Pi auf diese Weise, sollte der AV-Receiver den Eingang vom Fernseher auf den Pi umschalten.

Trotz seiner rudimentären Fähigkeiten gibt es Beispiele im Netz, die mit dem Clientprogramm per Skript die angeschlossenen Geräte steuern. Einfacher zum Programmieren ist aber eine ordentliche Programmiersprache, und hier hat sich Python auf dem Pi als leicht zu lernender Quasistandard etabliert.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

12/2019
RasPi-Alternativen

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Grußbotschaften

    Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

  • Das Runde und das Eckige

    Mit dem MCP4725 ergänzen Sie einen RasPi um einem D/A-Wandler, der bei Bedarf noch weitere Funktionen erfüllt.

  • Alles unter Kontrolle

    Schon ein einfaches Mikrocontrollerboard wie das CY8CKIT-049-42xx bietet erstaunlich viele Möglichkeiten beim Ansteuern von Hardware.

  • Viele Kerne

    Das Spresense Development Board von Sony lässt sich mit der Arduino IDE programmieren und bringt auch ein eigenes Entwickler-SDK mit.

  • Exotische Früchte

    Der aus China stammende Orange Pi positioniert sich mit einem guten Preis und interessanten Features gegen die RasPi-Truppe. Kann er sich auch behaupten?

  • Flexibler Surfer

    Mit dem neuen RasPi 4 setzen Sie einen öffentlichen Webkiosk schnell und kostengünstig auf.

  • Auskunftsfreudig

    Viele Devices, so auch der E.ON-Aura-Controller, verwenden eine Schnittstelle namens REST, um Zustandsdaten zu übermitteln. Mit ein wenig Bastelei lesen Sie diese auch über Ihr Smartphone aus.

  • Doppelt gemessen

    Mit wenig Aufwand und einem Pi Zero realisieren Sie einen mobilen Zweikanal-Spannungsprüfer.

  • Elegant zusammengeführt

    Tizonia streamt Musik von Online-Quellen und lokalen Sammlungen. Die schlanke Architektur macht den Player zur guten Wahl für den Einsatz auf dem RasPi.

  • Kommunikativ

    Nicht jeder traut sich zu, sein eigenes Smartphone zu bauen. Allerdings kann jeder Linux-Nutzer den Raspberry Pi im Handumdrehen zu einem VoIP-Telefon aufrüsten.