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);
Die URL kann beliebig getauscht werden, je nachdem welche Funktion gewünscht ist. Technisch gesehen, würden sich auch verschiedene Befehle kombinieren lassen, aber leider hat Yamaha für jede Funktion intern ein eigenes Programm hinterlegt. Es lässt sich also nicht beim Einschalten direkt eine Lautstärke übergeben. Stattdessen müssen die Befehle nacheinander (!) ausgeführt werden.
Dabei ist es egal in welcher Reihenfolge die Befehle geschickt werden. Wenn zuerst die Lautstärke gesetzt wird, startet der Receiver direkt mit der vorher festgelegten Lautstärke. Das aktivieren eines Eingangs, schaltet den Receiver leider nicht direkt ein. Es sollten sich übrigens auch MusicCast Lautsprecher einschalten lassen, bis jetzt habe ich aber noch keine. Erfahrungsberichte sind Willkommen ;)
Bei Sonos Systemen sollte das etwas komfortabler sein, da sich verschiedene Parameter bei einem Aufruf übergeben lassen, aber ich wollte halt kein Sonos.

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 ;)

20 Kommentare
  1. Sven
    Sven sagte:

    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?

    Antworten
  2. Lothar
    Lothar sagte:

    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

    Antworten
    • Dominik
      Dominik sagte:

      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#“‚“);

      Antworten
      • Lothar
        Lothar sagte:

        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

        Antworten
      • Lothar
        Lothar sagte:

        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

        Antworten
          • Lothar
            Lothar sagte:

            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.

        • dominik
          dominik sagte:

          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

          Antworten
          • Lothar
            Lothar sagte:

            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.

          • Lothar
            Lothar sagte:

            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.

  3. M. Klaus
    M. Klaus sagte:

    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

    Antworten
  4. Marco
    Marco sagte:

    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

    Antworten
  5. Dani
    Dani sagte:

    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

    Antworten
  6. Dominik
    Dominik sagte:

    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

    Antworten
    • Philipp
      Philipp sagte:

      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

      Antworten
  7. Marc
    Marc sagte:

    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.

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert