Ich besitze einen DENON x3000 A/V-Receiver und habe lange versucht über die gut dokumentierte Telnet-Schnittstelle den Reciever mit openHAB zu steuern. Als erstes hatte ich mir ein kleiner Demo Programm mit VisualStudio Express geschrieben. Danach hatte ich versucht die Anbindung über das openHAB TCP Bindung hin zu bekommen. Meine Bemühungen waren aber vergeblich. Lediglich ein Befehl ging durch und danach war die Schnittstelle gesperrt. Der Grund ist das openHAB auch auf Antworten wartet. Also überlegt ich mir das VisualStudio Programm in ein DENON Binding für openHAB umzusetzen. Nachdem ich dann die Entwicklungsumgebung für openHAB installiert hatte und ich feststellte das ein Java Projekt für openHAB nicht einfach ist, musste ich mir was anderes einfallen lassen.
Information von Januar 2015 – Inzwischen gibt es ein DENON Binding für openHAB.
Also schreib ich DENON an und fragte ob es eine HTTP Schnittstelle gibt. Ich hatte schon in dem LOG meiner Firewall Datenpakete zum DENON Receiver gesehen. Als Antwort kam dann aber leider nur, dass es eine Telnet Schnittstelle gibt. Aber immerhin nach einem Tag eine Antwort. Der Support ist gut. Also habe ich Android in einer Virtuellen Umgebung mit der Original DENON App installiert und Wireshark gestartet. Ich konnte mir nicht vorstellen das Android über Telnet die Befehle verschickt. So habe ich dann die folgenden Befehle herausgefunden.
HTTP GET-Befehle
Status Abfragen:
http://<AV IP-Adresse>/goform/formMainZone_MainZoneXml.xml http://<AV IP-Adresse>/goform/formMainZone_MainZoneXmlStatus.xml http://<AV IP-Adresse>/goform/formMainZone_MainZoneXmlStatusLite.xml http://<AV IP-Adresse>/goform/formNetAudio_StatusXml.xml http://<AV IP-Adresse>/goform/formNetAudio_StatusXml.xml?ZoneName=MAIN+ZONE http://<AV IP-Adresse>/goform/formZone2_Zone2XmlStatus.xml http://<AV IP-Adresse>/goform/formZone2_Zone2XmlStatusLite.xml !!! geht nicht !!! http://<AV IP-Adresse>/goform/formZone2_Zone2Xml.xml http://<AV IP-Adresse>/goform/Deviceinfo.xml
Lautstärke:
http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?MVUP http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?MVDOWN Main Zone http://<AV IP-Adresse>/goform/formiPhoneAppMute.xml?1+MuteOn http://<AV IP-Adresse>/goform/formiPhoneAppMute.xml?1+MuteOff http://<AV IP-Adresse>/goform/formiPhoneAppVolume.xml?1+<dB WERT meist negativ z.B. -30> Zone 2 http://<AV IP-Adresse>/goform/formiPhoneAppMute.xml?2+MuteOn http://<AV IP-Adresse>/goform/formiPhoneAppMute.xml?2+MuteOff http://<AV IP-Adresse>/goform/formiPhoneAppVolume.xml?2+-<dB WERT meist negativ z.B. -30>
An / Aus
Main Zone http://<AV IP-Adresse>/goform/formiPhoneAppPower.xml?1+PowerOn http://<AV IP-Adresse>/goform/formiPhoneAppPower.xml?1+PowerStandby Zone 2 http://<AV IP-Adresse>/goform/formiPhoneAppPower.xml?2+PowerOn http://<AV IP-Adresse>/goform/formiPhoneAppPower.xml?2+PowerStandby
Kanäle
http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?SITV http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?SIGAME
Netzwerk
http://<AV IP-Adresse>/goform/formiPhoneAppNetAudioCommand.xml?CurLeft http://<AV IP-Adresse>/goform/formiPhoneAppNetAudioCommand.xml?CurRight http://<AV IP-Adresse>/goform/formiPhoneAppNetAudioCommand.xml?CurDown http://<AV IP-Adresse>/goform/formiPhoneAppNetAudioCommand.xml?CurUp
Cover Bilder beim Abspielen
http://<AV IP-Adresse>/NetAudio/art.asp-jpg http://<AV IP-Adresse>/img/album%20art_S.png
UPNP Description:
http://<AV IP-Adresse>:8080/description.xml http://<AV IP-Adresse>:8080/BCO_device_lrg_icon.png http://<AV IP-Adresse>:8080/RenderingControl/desc.xml
Allgemein Befehle laut Telnet Dokumentation
http://assets.denoneu.com/DocumentMaster/DE/AVRX4000_PROTOCOL(10.3.0)_V01.pdf
Beim test mit dem Aufruf der Favoriten, ist mir beim Sniffen und dem lesen der offiziellen Telnet Dokumentation aufgefallen, dass man mit folgenden HTTP-GET-Request fast jeden Dokumentierten Telnet Befehl absenden kann: http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?<BEFEHL>
Beim testen ging fast alles nur die Abfragen mit dem ? nicht Also z.B. http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?SI? geht nicht. Ist auch irgendwie klar.
http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?MVUP http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?MVDOWN http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?SITV http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?SIGAME http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?SIIRADIO http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?SIFAVORITES http://<AV IP-Adresse>/goform/formiPhoneAppDirect.xml?ZMFAVORITE1
HTTP POST-Befehle
Es gibt auch noch die Möglichkeit eine xml Datei mit Befehlen als POST zusenden aber dies habe ich bisher nicht weiter verfolgt.
Der Befehl ist:
http://192.168.2.99/goform/AppCommand.xml
Folgenden XML Code fand ich in Wireshark
Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">SetFavoriteStation</cmd> <zone>Main</zone> <value>3</value> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetDeletedSource</cmd> <value>1</value> <cmd id="1">GetAllZonePowerStatus</cmd> <cmd id="1">GetZoneName</cmd> <cmd id="1">GetSurroundModeStatus</cmd> <cmd id="1">GetRestorerModeStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetVolumeLevel</cmd> <cmd id="1">GetMuteStatus</cmd> <cmd id="1">GetRenameSource</cmd> <cmd id="1">GetSourceStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetDeletedSource</cmd> <value>2</value> <cmd id="1">GetZoneName</cmd> <cmd id="1">GetRenameSource</cmd> <cmd id="1">GetSourceStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetDeletedSource</cmd> <value>1</value> <cmd id="1">GetAllZonePowerStatus</cmd> <cmd id="1">GetZoneName</cmd> <cmd id="1">GetSurroundModeStatus</cmd> <cmd id="1">GetRestorerModeStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetAllZonePowerStatus</cmd> <cmd id="1">GetSurroundModeStatus</cmd> <cmd id="1">GetVolumeLevel</cmd> <cmd id="1">GetMuteStatus</cmd> <cmd id="1">GetRestorerModeStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetVolumeLevel</cmd> <cmd id="1">GetMuteStatus</cmd> <cmd id="1">GetRenameSource</cmd> <cmd id="1">GetSourceStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetSourceStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetDeletedSource</cmd> <value>2</value> <cmd id="1">GetZoneName</cmd> <cmd id="1">GetRenameSource</cmd> <cmd id="1">GetSourceStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetAllZonePowerStatus</cmd> <cmd id="1">GetVolumeLevel</cmd> <cmd id="1">GetMuteStatus</cmd> <cmd id="1">GetSurroundModeStatus</cmd> <cmd id="1">GetRestorerModeStatus</cmd> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetDeletedSource</cmd> <value>1</value> </tx> Code: <?xml version="1.0" encoding="utf-8"?> <tx> <cmd id="1">GetDeletedNetworkSource</cmd> </tx>
Super, danke genau diese Info hab ich gesucht
Danke ! Du hast mir einiges an Arbeit erspart !
Sehr gerne.
Vielen Dank für die schöne Übersicht. Genau die Infos brauchte ich.
Der Receiver wurde in den Schrank verbannt, da ja eh alles nötige für den Fernsehgenuss über HDMI ARC gesteuert werden kann. Nur wenn ich etwas vom Mac Mini schauen wollte, musste ich immer die Tür aufmachen, damit die IR-Fernbedienung da durchkommt. Oder aber die schnarch-langsame Denon-App öffnen.
Ich habe mir jetzt mit Workflows für iPhone eine Homescreen-App gebaut, die nichts anderes macht, als den Input via URL auf den Mac Mini zu wechseln. Klappt wie ne eins.
Also, nochmals besten Dank für die Infos,
Grüße, Lorenz
Ist es möglich einen favoriten internet radio kanal direct zu wählen? Habe dafür keinen kommando gefunden.
Ja unter anderem mit/goform/formiPhoneAppDirect.xml?SIFAVORITES /goform/formiPhoneAppDirect.xml?ZMFAVORITE1
http://
http://
In der Dokumentation von Denon zu Telnet findest du alle Möglichkeiten.
Bin auch zufällig über die Seite gestolpert nachdem ich ein gesnifften command gegoogelt hab. Coole Infos! Arbeit mit nem CEOL picolo, soll ein RPi mit Touchscreen geben wo man das wichtigste steuern kann wie ein Favorite aufrufen.
Btw: Zumindest auf dem CEOL kann man mit:
http:///goform/formiPhoneAppFavorite_Call.xml?01
einen Favorite aufrufen. Die letzten zwei Ziffern sind die Fav Nummer.
Vielen Dank für diesen hilfreichen Artikel!
Funktoniert auch wunderbar bei meinem Marantz MCR-510 Gerät.
Denon und Marantz haben da an einigen Stellen das gleiche Protokoll.
Dankeschön!!! jetzt kann ich endlich die Infrarot befehle aus meinem “Lightmanager Air” entfernen die sowieso nicht immer Funktioniert haben 🙂
Aber habe noch eine Frage: das ist ja der GET befehl aus dem Smartphone ich wollte es mal über den Browser ausprobieren und auf Wireshark kammen folgende befehl für Volumen +
/goform/formMainZone_MainZoneXml.xml?_=1469724615846
/goform/formMainZone_MainZoneXml.xml?_=1469726603159
jedes mal sind es andere zahlen.
Kannst du mir vielleicht weiterhelfen wie ich die GET befehle vom Browser rausfiltere?
Gruss
We absolutely love your blog and find almost all of your post’s to be exactly I’m looking
for. can you offer guest writers to write content to suit your needs?
I wouldn’t mind publishing a post or elaborating on some of
the subjects you write about here. Again, awesome website!
DANKE
Beim X1400H bekomme ich überall nur noch 403-Fehler. Man soll wohl auf das offizielle Telnet-Protokoll umsteigen.