Alexa, Audio an!

Vor ein paar Wochen ist Alexa bei uns eingezogen. Da sie bei Amazon heruntergesetzt war, hatte ich beschlossen, aus Spaß einen Echo-Dot zu kaufen. Nach den obligatorischen „Alexa, erzählt einen Witz“- oder „Alexa, spiele Musik von …“-Versuchen hatte ich bald ein Problem: Um die Audio-Qualität zu verbessern habe ich den Dot via Audio-Kabel an meinen Yamaha RX-V475 Verstärker angeschlossen. Natürlich hört man die Tonausgabe des Dot nur, wenn am Verstärker der entsprechende Audio-Eingang gewählt ist…

Somit standen zwei Todos auf meiner Liste:

  1. Da der Verstärker per WLAN mittels App gesteuert werden kann, muss es irgendwo Informationen zum Protokoll geben…
  2. Wie verbinde ich Alexa und Verstärker im WLAN, ohne einen eigenen Skill entwickeln zu müssen?

Wie sich herausgestellt hat, gibt es in der Tat ein wenig Information darüber, wie der RX-V475 per WLAN gesteuert werden kann im Internet, aber es wurde ebenfalls klar, dass diese Informationen hochgradig lückenhaft und in einigen Fällen sogar falsch sind. So musste ich den Quellcode des FHEM-Yamaha-Moduls analysieren, um die Sache ans Laufen zu bekommen.

Die Lösung, wie Alexa und Verstärker verbunden werden können ist dafür tatsächlich sehr einfach und heißt HA Bridge. HA Bridge ist eine Java-Software, die auf einem beliebigen Rechner im Netzwerk laufen kann und eine HUE-Bridge emuliert. Sie stellt eine sehr übersichtliche Web-Oberfläche zur Verwaltung zur Verfügung. Es hat ca. 5 Minuten gedauert, um die Software auf einem RasPI 3 zum Laufen zu kriegen.

HA Bridges Schlüsselfunktion, die mein Problem löst, ist die Möglichkeit, ON, OFF und DIM Kommandos zu konfigurieren, welche HTTP-Anfragen jedweder Art an eine gegebene URL mit beliebigem Inhalt absetzen. Die URL des Verstärkers lautet:

http://<IP Address>/YamahaRemoteControl/ctrl

Bleibt die Frage nach dem Inhalt der Anfrage. Die folgenden Kommandos funktionieren in meinem Fall:

Einschalten

<YAMAHA_AV cmd="PUT">
<Main_Zone>
  <Power_Control>
    <Power>On</Power>
  </Power_Control>
</Main_Zone>
</YAMAHA_AV>

Ausschalten

<YAMAHA_AV cmd="PUT">
<Main_Zone>
  <Power_Control>
    <Power>Standby</Power>
  </Power_Control>
</Main_Zone>
</YAMAHA_AV>

Dimmen (Lautstärke ändern)

<YAMAHA_AV cmd="PUT">
<Main_Zone>
  <Volume>
    <Lvl>
      <Val>${intensity.math(int((X / 255.0) * 97.0 - 80.5)*10.0)}</Val>
      <Exp>1</Exp>
      <Unit>dB</Unit>
    </Lvl>
  </Volume>
</Main_Zone>
</YAMAHA_AV>