Heimkinosteuerung – RS232

Die Basis für meine Steuerung ist u.a. ein Raspberry PI 2, den ich auch für die RS232 Ansteuerung des Yamaha Receivers und den Oppo Blu-Ray Player nutze. Hier eine kleines HowTo für alle, die es nachbauen möchten. Neben dem Raspberry PI 2, auf dem bei mir OpenELEC installiert ist, benötigt ihr noch einen USB-Serial-Adapter. Ich habe gute Erfahrungen mit dem Adapter von Digitus gemacht, den ihr in einen der USB Ports des Raspberry steckt.

 

Nachdem der Adapter an einen USB Port angeschlossen wurde, solltet ihr sicherheitshalber das System einmal booten. Jetzt kommt die eigentliche Konfiguration:

1. SSH Verbindung zum Raspberry aufbauen

2. Prüft, ob der Adapter gefunden wurde

3. Idealerweise sollte der Adapter jetzt unter dem Device ttyUSBx aufgeführt werden.

4. Um später auch Zugriff auf die Schnittstelle zu haben, sollten die Schnittstelle Lese- und Schreibrechte der Gruppe dialout haben. Die könnte ihr mit folgendem Befehl (x steht für die richtige Schnittstelle z.B. ttyUSB0)

Korrekt sollte es so aussehen:

5. Falls die Berechtigungen nicht vorhanden sind und damit diese auch nach einem Reboot noch korrekt sind, legt unter /etc/udev/rules/rules.d/ eine Datei an, die beim booten ausgeführt wird, z.B. 50-myusb.rules. Die Datei sollte folgenden Inhalt haben

Damit werden alle ttyUSB Schnittstelle (0 bis 9) mit der Berechtigung 666 versehen.

6. Anschließend bootet den Raspberry neu z.B. mit dem Befehl „reboot“.

 

Bei mehreren USB Serial Schnittstellen kann das Problem auftreten, dass die Adapter die Schnittstelle wechseln. Mal sind sie auf ttyUSB0 oder mal auf ttyUSB1. Um jedoch dieses Problem zu umgehen, werden mittels udev-Regeln eindeutige Symlinks gesetzt.

1. Mit folgendem Befehl bekommt ihr mehr Infos über den Adapter (hier auf Schnittstelle ttyUSB0):

Der Befehl liefet z.B.

Die Parameter idVendor, idProduct und serial brauchen wir später, um in der udev-Regel eine eindeutige Zuordnung zu machen.

2. Erweitert am besten die unter dem obigen Punkt 5 erstellte udev Datei „50-myusb.rules“ mit folgenden beispielhaften Infos:

In meinem Fall habe ich am Device ttyUSB0 einen Adapter mit der Seriennummer A504AE84, der am meinem Yamaha RXV-1000 Receiver angeschlossen ist. Ich habe über die udev-Regel einen Symblink ttyUSB_YAM001 erstellt. Am zweiten Device ttyUSB1 ist ein weiterer Adapter mit der Seriennummer AL02AWGP für den Oppo Blu-Ray Player und dem Symblink ttyUSB_OPP001.

3. Anschließend solltet ihr euren Raspberry neustarten.

Weitere Infos zu den Symblinks mit udev-Regeln findet ihr auch hier.

 

Da ich meine Steuerung über einen Webserver vornehme, habe ich auf dem Raspberry einen Webserver installiert und dort eine PHP Script geschrieben, dass bei einem entsprechenden Aufruf einen Befehl an die entsprechende serielle Schnittstelle sendet.

Der Aufruf der PHP Datei erfolgt mit den Parametern:

rsd ⇒ Schnittstelle oder Device (bei mir ist Device 0 mein AVR Receiver am seriellen Adapter ttyUSB0 und Device 1 mein Oppo Blu-Ray Player am Adapter ttyUSB1).

rsk ⇒ Hier wird das eigentliche RS232 Kommando übergeben.

rst ⇒ Wie oft soll das Kommando ausgeführt werden. Falls nicht angegeben wurde, wird es nur einmal ausgeführt.

Beispiel:

Hier wird an den Oppo Player (rsd = 1) der Befehl PowerOn (rsk = PON) insgesamt 3 mal (rst = 3) ausgeführt.

Je nach Gerät muss man jedoch vor und nach dem eigentlichen Kommando noch Steuerzeichen mitsenden. Dies ergibt sich jedoch aus der jeweiligen Spezifikation der Geräte. Die Unterlagen für meinen Yamaha RXV-1000 Receiver und dem Oppo BDP103D Blu-Ray Player habe ich entsprechend verlinkt.

Yamaha RXV-1000 RS232 Standardcodes

Yamaha RXV-1000 RS232 Erweiterte Codes

Oppo BDP103D RS232 Codes