AV-Receiver per Homematic CCU2 Steuern
Nach einem stressigen Tag nach Hause kommen, der Kamin brennt, es läuft angenehme Musik und ist wohlig warm – das ist doch wohl der Traum eines jeden Arbeitenden Menschen… Das mit dem Kamin ist in der Umsetzung nicht ganz so einfach, aber als Homematic User sollte wenigstens die Heizung kein Problem sein. Bleibt also nur noch die Musik. Mit diesem Thema möchte ich mich in diesem Artikel beschäftigen.
Ziel ist es, die Musik automatisch über die CCU2 zu starten, ohne dabei auf Zusatzsoftware zurückzugreifen. Ich werde demnächst noch einen alternativen Weg vorstellen, der allerdings wesentlich mehr Zeugs im Hintergrund benötigt.
Der AV-Receiver
Als AV-Receiver verwende ich den RX-V781 von Yamaha, welchen ich bereits vorgestellt habe. Wer vor der Anschaffung eines neuen Receivers steht: Es funktioniert auch mit den günstigeren Modellen von Yamaha (ab RX-V481 – nicht von mir getestet – ca. 360€), diese besitzen aber nur einen HDMI Ausgang (ich brauche zwei). Mit Modellen von anderen Anbietern wird es auch grundsätzlich möglich sein, aber viele unterstützen keine Steuerung via HTTP-Get. Wenn man Pech hat, muss man also Rohdaten über einen TCP Stream übertragen. Das war für mich einer der Gründe, warum ich mich für einen Receiver von Yamaha entschieden habe.
Vorbedingungen der CCU2
Weiterhin habe ich mich entschieden, keine Zusatzsoftware auf der CCU2 zu verwenden. Grundsätzlich wird häufig empfohlen, für HTTP Anfragen den CUxD zu verwenden. Einmal fällt es mir schwer zu akzeptieren, dass eine einfache HTTP Anfrage zu Abstürzen der CCU2 führen kann und andererseits setzte ich die gleiche Methode seit langem ohne Probleme für Push Benachrichtigungen ein (zum Artikel über die Push-Benachrichtigungen). Wer möchte kann natürlich auch auf CUxD setzen, Google hilft da bestimmt ;)
Das Homematic Skript
In der CCU2 muss natürlich ein Programm erstellt werden, welches zu den gewünschten Bedingungen das Skript ausführt. Wenn die Musik angehen soll, wenn die Haustür geöffnet wird, würde das Programm z.B. so aussehen:
Kommen wir nun zum eigentlichen Skript. Es tut nichts anderes als eine URL via HTTP zu öffnen. Dazu wird die IP des Receivers benötigt, welche übrigens fest eingestellt werden sollte. Entweder im Receiver oder im Router (bzw. DHCP Server). Bevor das ganze als Skript umgesetzt wird, empfehle ich, die URL testweise im eigenen Browser aufzurufen. Der Receiver sollte sofort reagieren. Bis die Musik losgeht vergehen allerdings ein paar Sekunden.
Tut er das nicht, stimmt was mit der URL nicht oder der Receiver ist vom Netzwerk getrennt oder der Eco Modus ist eingeschaltet. Im Eco Modus kann der Receiver nicht per Netzwerk eingeschaltet werden, da der Webserver beendet wird, wenn sich der Receiver im Standby Zustand befindet.
Als Skript wird folgendes hinterlegt (IP korrekt einstellen!!):
!start music_____________ string stderr; string stdout; !___POWER ON_____ string url="\"http://192.168.x.y/YamahaExtendedControl/v1/main/setPower?power=on\""; system.Exec("wget --no-check-certificate -q -O - "#url, &stdout, &stderr); !___EINGANG AUF INTERNETRADIO_____ string url="\"http://192.168.x.y/YamahaExtendedControl/v1/main/setInput?input=net_radio\""; system.Exec("wget --no-check-certificate -q -O - "#url, &stdout, &stderr); !___LAUTSTAERKE AUF 80______ string url="\"http://192.168.x.y/YamahaExtendedControl/v1/main/setVolume?volume=80\""; system.Exec("wget --no-check-certificate -q -O - "#url, &stdout, &stderr);
Um zu prüfen,welche Funktionen von dem eigenen Receiver unterstützt werden, wird am die folgende URL in einem Browser aufgerufen:
http://192.168.xx.xx/YamahaExtendedControl/v1/system/getFeatures
Das Ergebnis lässt sich mit Hilfe eines JSON-Formatters wesentlich besser betrachten. Hier finden sich nun die Werte in korrekter Schreibweise, welche zum Beispiel gültige Eingänge darstellen (AV1, HDMI1, spotify, …).
Weitere Sinnvolle Befehle sind:
http://192.168.x.y/YamahaExtendedControl/v1/main/setPower?power=on
Mögliche Optionen: on, standby
http://ReceiverIP/YamahaExtendedControl/v1/main/setInput?input=spotify
Mögliche Optionen: napster, juke, qobuz, airplay, mc_link, server, net_radio, bluetooth, usb, tuner, av5, av6, audio1, audio2, phono, main_sync
http://192.168.2.186/YamahaExtendedControl/v1/main/setVolume?volume=80
Die Lautstärke lässt sich von 1 bis 161 einstellen (nicht in dB)
Ich hoffe der Artikel hat euch gefallen und wurde erfolgreich zu Hause umgesetzt. Die Bedingungen im Skript sollten natürlich etwas intelligenter gewählt werden. Ansonsten legt die Musik JEDES mal Los, wenn sich die Türe öffnet ;)
Hallo
Super Artikel. Kann man irgendwie die Parameter auslesen? z.B. Wie hast du herausgefunden das die Lautstärke von 1-161 einzustellen ist? Gibt es die Möglichkeit mit einem Tastendruck die Lautstärke um z.B. 10 zu erhöhen?
Hallo zusammen,
ich versuche seit Wochen meinen Yamaha RX600 receiver über den Webbrowser zu steuern.
„http://192.168.1.40/YamahaExtendedControl/v1/main/setPower?power=on“
Leider ohne Erfolg. IP stimmt, da ich den receiver über die Yamaha IphonApp steuern kann.
Vielleicht simmt die steuersequenz nicht ? Den Yamaha Support kann man leider vergessen.
Bekomme dort keinerlei Info.
Ich würde den Receiver gerne über meine Homematic (CCU) per script steuern.
Leider scheitert es bereits beim Ausprobieren über den Browser.
vielleicht ist jeman im Forum der mir helfen kann ?
würde mich freuen
Bei mir klappt es mittels Cuxd
var url = „http://192.168.1.201/YamahaRemoteControl/ctrl“;
var cURL=“LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl“;
dom.GetObject(„CUxD.CUX2801001:10.CMD_EXEC“).State(cURL#“ -X POST -H ‚Content-Type: text/xml; charset=UTF-8‘ -d ‚On‘ ‚“#url#“‚“);
Yamaha off
var url= „http://192.168.1.201/YamahaRemoteControl/ctrl“;
var cURL=“LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl“;
dom.GetObject(„CUxD.CUX2801001:1.CMD_EXEC“).State(cURL#“ -X POST -H ‚Content-Type: text/xml; charset=UTF-8‘ -d ‚Standby‘ ‚“#url#“‚“);
Yamaha Radio
var url= „http://192.168.1.201/YamahaRemoteControl/ctrl“;
var cURL=“LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl“;
dom.GetObject(„CUxD.CUX2801001:1.CMD_EXEC“).State(cURL#“ -X POST -H ‚Content-Type: text/xml; charset=UTF-8‘ -d ‚NET RADIO‘ ‚“#url#“‚“);
Hallo Dominik,
Vielen Dank, für den Tip ,
ich werde es probieren. Allerdings habe ich keinerlei Erfahrung mit Cux.
Das Addon ist installiert , mehr habe ich noch nicht zustande gebracht.
Bin in CuxD blutiger Anfänger. Muss mich einlesen wie ich deine Softwarezeilen anwende.
Ich stelle mir vor die Receiversteuerung als device in der Homematic zu haben um dann Zugriff auf den Yamaha mit Apples Siri zu haben
NodeRed mit der Bridge zum Home von Apple läuft bereits. Habe darüber Zugriff auf alle Homematic Devices.
Jetzt fehlt nur noch der YamahaReceiver…
Gruß und vielen Dank erstmal,
Lothar
Hallo Dominik,
hab’s eingerichtet. Skript fehlerprüfung läuft ohne fehler durch.
Bei Ausführen passiert nichts und über die Angelernte Taste rührt sich auch nichts.
IP stimmt und der Yamaha hängt auch im lokalen netz und lässt sich auch per AppleApp ansprechen. CCU habe ich nach der installation auch neu gebootet.
komm grad nciht weiter.
Gruß Lothar
Hi Lothar,
der CUXD ist auch OK?
Hi Dominik, denke schon. Anbei erste Zeilen vom Cux Status. Habe Cuxd auch schon neu gestartet.
USB 1-1 – (9514) [HUB] – Wed Jan 20 11:52:14 2021
USB 1-1.1 – (ec00) [FF] – no driver – Wed Jan 20 11:52:14 2021
USB 1-1.5 – TransMemory [STORAGE] – Wed Jan 20 11:52:14 2021
Kein TTY-Device connected!
Erfolgreich mit HomeMatic-CCU 127.0.0.1:8183 verbunden!
als RPC-Server(INIT) von HomeMatic-CCU (6446) angefordert!
Musste in deinem Skript die “ austauschen weil dort bei der Prüfung ein ERROR kam. Danach hat der Skript den Test bestanden. Vielleicht passt der Skript nicht zu meinem Yamaha RD600.
Mit NodeRed lässt er sich ansteuern.
In Siri habe ich es nicht wirklich hin bekommen, habe es versucht mit ioBroker. Mehr als an und aus ging nicht.
Da hatte ich mit dem Cuxd mehr Erfolg. Immerhin beim Heimkommen einen bestimmten Radiosender einstellen.
Seit einer Woche steht hier allerdings ein Marantz RN1500 der kann airplay2 und ist automatisch in Apple Home. Hatte den gut unter 500€ bekommen, wenn ich für den Yamaha jetzt noch 80 oder 100€ bekomme alles gut
Hallo Dominik,
Nun läuft meine Homamatic (Raspi) mit Siri zusammen tadellos.
Ich habe Node-red als Dienst zu Raspimatic dazu installiert.
Ist nun die Brifge zu Homematic und dem Yamahareceiver.
Mit CuxD hab ich’s nicht hinbekommen.
Nun denn es läuft und mit nodRed im Boot steht mir die Welt auch für andere Devices offen.
Hallo Dominik,
Nun läuft meine Homamatic (Raspi) mit Siri zusammen tadellos.
Ich habe Node-red als Dienst zu Raspimatic dazu installiert.
Mit CuxD hab ich’s nicht hinbekommen.
Hallo Philipp,
besten Dank für diesen Artikel. Mein Anwendungsfall ist ein wenig simpler, jetzt läuft mein Receiver (RX-V481D) morgens schon, wenn ich ins Wohnzimmer komme!
Die Steuerung klappt übrigens auch mit Netzlautsprechern, bei mir der WX-030 bzw. mit meinem Wecker ISX-18D. Nur mit der Vorgabe der Lautstärke muss ich noch etwas basteln. Über den Browser-Test klappt die Änderung der Lautstärke, nur über das Skript nicht. Mal schaun, wo ich da den Fehler habe…
Viele Grüße
Klaus
Guten morgen
Ich besitze den Yamaha RX-V773 und leider hapert es bei mir schon bei den Befehlen
http://192.168.xx.xx/YamahaExtendedControl/v1/system/getFeatures
http://192.168.x.y/YamahaExtendedControl/v1/main/setPower?power=on
und so weiter!
Aber mit http://192.168.x.y/YamahaRemoteControl/desc.xml kann ich mir zumindest die Befehle anzeigen lassen.
Habe unterschiedliche Yamaha Modelle unterschiedliche Zugriffsmöglichkeiten der Befehle?
Über WebUI ist alles kein Problem!
Gruß
Marco
Hallo zusammen
Super Artikel und Arbeit von Philipp. Danke
Steuerung von HM geht via virtuelle Taster mit dem Script.
Auch andere Netzwerk LS ( bei mir 10 und 30 ) kann ich einschalten und ausschalten.
Leider schaffe ich es nicht mit dem Verlinken der LS zum Master nicht
Ziel ist es wenn ich zb in den Wintergarten gehe dass dort auch der LS 30 als Client zum Master aktiviet wird ( Licht ist jetzt schon so via HM)
Dito im Bad
Es gibt ne Anleitung aber leider für mich zu kompliziert….
https://github.com/rsc-dev/pyamaha/blob/master/doc/YXC_API_Spec_Advanced.pdf
Hallo Philipp,
leider bekomme ich das nicht hin. Die IP stimmt 100%, über den Webbrowser kann ich meinen RXV 777 auch steuern. Aber leider komme ich mit dem Script doer den URLS von dir nicht hin.
Noch eine Idee?
Danke Gruss Dominik
Hallo Phillip,
ist das auch mit einem Onkyo Netzwerk AV-Receiver möglich zu realisieren?
Hallo Philipp,
wie verhält es sich mit der Sicherheit? Findet da irgendeine Art von Authentifizierung statt?
Gruß Manuel
Hi Manuel,
wichtige Frage. Nein, es gibt keine Authentifizierung. Die API ist aber immer erreichbar, auch wenn du sie nicht nutzt. Die einzige Sicherheit ist die, dass der Receiver nicht über das Internet erreichbar ist, solange du keine Portfreigabe einrichtest. Willst du das tun, solltest du einen reverse proxy mit basic authentication und TLS dazwischen schalten.
Gruß
Philipp
Hallo, hast du irgendeine Idee wie man mit der CCU2 abfragen kann, ob die Anlage gerade an ist oder nicht ? Ich steure das ganze mit Echodot über eine Variable. Das Problem ist wenn ich zum Beispiel die Anlage mit Alexa eingeschaltet habe und mit der Fernbedienung aus, dann bleibt die Variable weiterhin auf ein stehen. Ich müsste als vorher irgendwie überprüfen ob die Anlage eingeschaltet ist. Übrigens funktioniert das ganze auch mit dem Eco Modus. Nur wenn ich die Anlage einschalten lasse, muss ich das Script ca. 5 Sekunden warten lassen bis der Input gewechselt werden kann.
Hi Marc,
hat etwas gedauert, aber da ich die Frage auch ganz interessant fand, habe ich einen Artikel daraus gemacht. Du findest ihn hier: https://technikkram.net/2017/05/zustand-eines-yamaha-receivers-per-homematic-auslesen
Alternativ kannst du natürlich auch einfach den Stromverbrauch mit einer Funksteckdose (http://amzn.to/2pxCywt) messen und darauf reagieren, aber warum Hardware kaufen, wenn es auch per Software geht. Die Hardwarelösung hat allerdings den vorteil, dass die CCU sofort über eine Zustandsänderung informiert wird.
Gruß
Philipp
Vielen Dank für den Artikel. Konnte so meinen Yamaha RX-V681 mit der CCU2 verbinden.