Onkyo Receiver und Raspberry Pi

IMG_20130206_215155Der Raspberry Pi hat es mir ja weiterhin angetan – ein Mini-Projekt, das schon seit einem halben Jahr auf der To Do-Liste steht: Mein Onkyo-Verstärker (TX 8050) hat ein LAN-Interface und hängt bei mir im internen Netz. Es gibt einige Apps für Android und Ipad mit denen man den Verstärker steuern kann, ich hätte es aber gerne genereller und würde die Verstärkersteuerung z.B. in Automatisierungsszenarien einbinden.

Ausgang – Raspberry steuert Spotify

Wie schon im Artikel Raspberry Pi und Spotify beschrieben steuere ich die Spotify-Wiedergabe über den Raspberry Pi und das funktioniert bisher wirklich ziemlich gut.

Ziel: Weitere Automatisierung

Auf der Wunschliste steht als nächstes die Automatisierungskette zu vervollkommnen. Nett wäre es doch, wenn ich den Raspberry Pi einschalte, dass gleichzeitig der Verstärker angeht und dieser sich dann doch auch direkt auf den passenden Kanal umschaltet und vielleicht auch zur Sicherheit die Lautstärke passend setzt.

Weg: Onkyo und ISCP

Der Onkyo hat eine Netzwerkschnittstelle (LAN) und ist darüber grundsätzlich einstellbar. Onkyo hat sich dafür ein eigenes Protokoll einfallen lassen: ISCP. Im Netz habe ich unterschiedliche Informationen gefunden – ob die Dokumentation von Onkyo nun offiziell supported und herausgegeben wird oder nicht, sei’s drum, es gibt diverse Excel-Tabellen mit den entsprechenden Befehlssets. Praktischerweise habe ich auf github ein Projekt gefunden, dass ISCP mittels Python-Scripts zugänglich macht: Miracle2k – onkyo-eiscp
Darüber ist der Onkyo schlussendlich z.B. direkt in der Shell steuerbar.

Umsetzung auf dem Raspberry Pi

Ganz praktisch nachfolgend der Weg:

  • Python selbst ist auf meinem Raspberry Pi schon verfügbar (ich verwende ein Debian Wheeze-Image)
  • Als nächstes benötigen wir die Python Setup-Tools, d.h. Shell auf dem Raspberry Pi aufmachen und dann:
    sudo apt-get install python-setuptools
  • Damit haben wir nun easy_install am Start, das erleichtert die Installation von Python-Dingen
  • Weiter geht’s in der Shell:
    easy_install https://github.com/miracle2k/onkyo-eiscp/tarball/master
    (das installiert das onkyo-Paket)
  • Nun können wir in der Shell mit
    onkyo command
    den Verstärker steuern. Eine Übersicht möglicher Befehle gibt es in der yaml-Datei.
  • Damit sind die Grundlagen gelegt, jetzt müssen wir dem Raspberry Pi noch beibringen beim Start auf den Kanal zu schalten und die Lautstärke zu setzen, dazu die Datei /etc/rc.local öffnen und folgenden zwei Zeilen ergänzen:
    /usr/local/bin/onkyo SLI00
    /usr/local/bin/onkyo MVL15
    Das passt natürlich jetzt nur für meine Umgebung, das Prinzip sollte aber klar sein.

Verstärker einschalten

In meinem Setup wird dabei auch der Verstärker physikalisch eingeschaltet – das kommt demnächst, wenn ich meine ersten Artikel zu meiner Hausautomatisierungs-Umgebung angehe, die auf FHEM basiert.

Raspberry Pi automatisch ausschalten

(Absatz ergänzt am 07.02.2013) Letzte Fragestellung in dem Zusammenhang: Wie schalte ich den Raspberry Pi am besten aus – die Hausautomation einfach hart die Steckdose abschalten lassen ist vermutlich auf Dauer für die Sd-Card nicht die beste Variante. Ich habe da ein paar kombinierte Maßnahmen:

  • die Hausautomation pingt alle 10 Minuten alle LAN-Geräte im Haus durch: wenn der Raspberry Pi nicht mehr per Ping erreichbar ist, schaltet sie die Steckdose einfach ab
  • der Raspberry Pi fährt sich ansonsten spät abends über einen Eintrag in der crontab selbst runter
  • und dritte Variante: ein Script (basiert auf dieser netten ping-script Vorlage) auf dem Raspberry Pi pingt alle 20 Sekunden den Onkyo an, gehen genügend Ping-Pakete verloren, geht der Raspberry Pi davon aus, dass der Verstärker aus, was bedeutet, dass er auch nicht mehr gebraucht wird, also fährt er sich runter, die Hausautomation kommt dann ein paar Minuten später und nimmt den Strom weg

Funktioniert bisher eigentlich recht zuverlässig, die Szenarien reichen bisher aus. Das ganze mit ping-Scripts zu machen ist natürlich eher die Version „Nagios für Arme“, aber es funktioniert. Ich empfehle auch es nicht zu kompliziert zu machen ansonsten verliert man den Überblick und weiß auch selbst nicht mehr genau, warum wann was passiert. Aber so lange das alles kleine nette Helferlein im Hintergrund sind, ist das doch sehr nett.