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!!):

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:

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

Passende Beiträge


7 Comments

  • Dominik

    21. September 2017

    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

    Reply
  • Marijo

    13. August 2017

    Hallo Phillip,
    ist das auch mit einem Onkyo Netzwerk AV-Receiver möglich zu realisieren?

    Reply
  • Manuel

    10. August 2017

    Hallo Philipp,
    wie verhält es sich mit der Sicherheit? Findet da irgendeine Art von Authentifizierung statt?

    Gruß Manuel

    Reply
    • Philipp

      Philipp

      10. August 2017

      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

      Reply
  • Marc

    25. April 2017

    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.

    Reply
    • Philipp

      Philipp

      1. Mai 2017

      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://www.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

      Reply
  • Joachim A

    23. April 2017

    Vielen Dank für den Artikel. Konnte so meinen Yamaha RX-V681 mit der CCU2 verbinden.

    Reply

Schreibe einen Kommentar