Ankündigung

Einklappen
Keine Ankündigung bisher.

Entwicklung Plugin für Denon / Marantz Receiver

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Foxi352
    antwortet
    Zitat von 2ndsky Beitrag anzeigen
    Allerdings ist mir heute Morgen aufgefallen, dass ich nicht mehr mit der Denon iOS App auf den AVR komme. Könnte daran liegen, dass das sh.py Plugin die Verbindung offen hält. Kann das jemand bestätigen der auch das Plugin nutzt?
    Selbstverständlich. Leider kann sich immer nur einer auf dem Telnet Interface verbinden. Der nächste bekommt ein "Connection refused". Ist leider so bei dem Bridgeco interface. Das Plugin muss aber die Verbindung offenhalten um die Events zu bekommen, also z.B. wenn du per Fernsteuerung oder Knopf auf dem Receiver die Lautstärke änderst u.s.w.

    Im optimalen fall brauchst du nachher die iOS App nicht mehr wenn alles was du brauchst per SmartVISU gemacht werden kann ...

    Ich hab das Denon mal gescannt, da sind ne Menge ports offen. Natürlich ist Airplay und co. da auch dabei. Leider ist das alles nicht dokumentiert. Villeicht gibt es noch ein anderes nicht dokumentiertes Controll Interface .... Wahrscheinlich aber kein besseres, sonst würde ja wohl die hauseigene Denon APP die bessere benutzen ...

    Serge

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Habs mir jetzt nicht näher angesehen, aber Pollen über eine HTTP Schnittstelle und dann XML parsen dürfte wohl keinesfalls besser sein als ein Telnet Interface.

    Allerdings ist mir heute Morgen aufgefallen, dass ich nicht mehr mit der Denon iOS App auf den AVR komme. Könnte daran liegen, dass das sh.py Plugin die Verbindung offen hält. Kann das jemand bestätigen der auch das Plugin nutzt?

    Einen Kommentar schreiben:


  • todro
    antwortet
    Zitat von 2ndsky Beitrag anzeigen
    Weißt du auch schon wie?
    Hi,

    hier könnte die HTTP-Schnittstelle evtl. behilflich sein, die in einem openHAB-Thread aufgedeckt wurde.

    Bei mir läuft der Plugin aktuell mit einem Marantz NR1603, das sind wohl die unterstützten Modelle des generischen Webservers:

    Code:
    /**
     * @author	y.kobayashi
     * @since	2008/12/26
     * @version	0.0.1
        ModelId
    	EnModelUnknown(0)
    	EnModelAVR16XX(1)
    	EnModelAVR17XX(2)
    	EnModelAVR19XX(3)
    	EnModelAVR21XX(4)
    	EnModelAVR23XX(5)
    	EnModelAVR33XX(6)
    	
    	EnModelNR16XX(7)
    	EnModelSR50XX(8)
    	EnModelSR60XX(9)
    	EnModelSR70XX(10)
    	
    	EnModelAVR45XX(11)
    	EnModelAV7701(12)
    	EnModelAV8801(13)
    
     */
    Auf jeden Fall unterstützt der Webserver Verbindungen mit HTTP 1.1, also wäre ein Keep-Alive zumindest theoretisch möglich, wäre dann wohl etwas stabiler als die Telnet-Variante. Leider fürchte ich, dass es sich um einen single-threaded webserver handelt, das war auf die schnelle nicht erkennbar bzw. die Anfragen waren zu kurz um in netstat mehre parallele established connections zu sehen.

    Allerdings scheint es eine Sequenz-Nummer zu geben, die eventuell pseudo-parallele request-response

    Was funktioniert: am iPhone eine Funktion ausgeführt, wird das Ergebnis direkt auf dem iPad im Webinterface angezeigt, allerdings pollt das Teil wohl :-(

    Auf jeden Fall pollt die Webseite den Status periodisch :

    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <item>
    <chFlag>
    <value>0</value>
    <value>0</value>
    <value>8</value>
    <value>0</value>
    <value>0</value>
    <value>0</value>
    <value>0</value>
    <value>0</value>
    <value>0</value>
    <value>0</value>
    </chFlag>
    <szLine>
    <value>Network</value>
    <value>Favorites</value>
    <value>Internet Radio</value>
    <value>Last.Fm</value>
    <value>Spotify</value>
    <value>Media Server</value>
    <value>Flickr</value>
    <value></value>
    <value>   [    0/6  ]</value>
    <value></value>
    </szLine>
    <NetworkNewTop><value>1</value></NetworkNewTop>
    <iPodRemoteDirect><value>0</value></iPodRemoteDirect>
    <Art>
    <value>0</value>
    </Art>
    <Slideshow><value>05</value></Slideshow>
    <SlideshowLists>
    <value index='OFF'  table='OFF' param=''/>
    <value index='05'  table='05' param=''/>
    <value index='10'  table='10' param=''/>
    <value index='15'  table='15' param=''/>
    <value index='20'  table='20' param=''/>
    <value index='30'  table='30' param=''/>
    <value index='60'  table='60' param=''/>
    </SlideshowLists>
    <iRadio><value>0</value></iRadio>
    <iRadioSearch><value>0</value></iRadioSearch>
    <Flickr><value>0</value></Flickr>
    <FlickrSearch><value>0</value></FlickrSearch>
    <AddFlickrContact><value>0</value></AddFlickrContact>
    <ModelId><value>7</value></ModelId>
    <SalesArea><value>1</value></SalesArea>
    <InputFuncSelect><value>NETWORK</value></InputFuncSelect>
    <NetFuncSelect><value>NET</value></NetFuncSelect>
    <selectSurround><value>PLII Game                      </value></selectSurround>
    <VolumeDisplay><value>Relative</value></VolumeDisplay>
    <MasterVolume><value>--</value></MasterVolume>
    <Mute><value>off</value></Mute>
    <RemoteMaintenance><value>OFF</value></RemoteMaintenance>
    <SubwooferDisplay><value>FALSE</value></SubwooferDisplay>
    <Zone2VolDisp><value>TRUE</value></Zone2VolDisp>
    <LastfmDisplay><value>TRUE</value></LastfmDisplay>
    <SpotifyEnable><value>TRUE</value></SpotifyEnable>
    </item>
    Die erwähnten Infos nach dem Einschalten dürfen dann diese sein:

    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <item>
    <FriendlyName><value>marantz NR1603</value></FriendlyName>
    <Power><value>STANDBY</value></Power>
    <ZonePower><value>OFF</value></ZonePower>
    <RenameZone><value>MAIN ZONE 
    </value></RenameZone>
    <TopMenuLink><value>ON</value></TopMenuLink>
    <ModelId><value>7</value></ModelId>
    <SalesArea><value>1</value></SalesArea>
    <InputFuncSelect><value>TV AUDIO</value></InputFuncSelect>
    <NetFuncSelect><value>NET</value></NetFuncSelect>
    <selectSurround><value>STEREO                         </value></selectSurround>
    <VolumeDisplay><value>Relative</value></VolumeDisplay>
    <MasterVolume><value>-46.5</value></MasterVolume>
    <Mute><value>off</value></Mute>
    <RemoteMaintenance><value>OFF</value></RemoteMaintenance>
    <SubwooferDisplay><value>FALSE</value></SubwooferDisplay>
    <Zone2VolDisp><value>TRUE</value></Zone2VolDisp>
    <LastfmDisplay><value>TRUE</value></LastfmDisplay>
    <SpotifyEnable><value>TRUE</value></SpotifyEnable>
    </item>
    Abgerufen mit:

    Code:
    http://ip-adresse/goform/formMainZone_MainZoneXml.xml
    Interessante Funktionen sind dann noch in der angehängten Datei zu finden (aus http://......./MainZone/index.js)

    Die nächsten Tage werden sicherlich weitere Erkenntnisse bringen, mal schauen, ob es zu etwas zu gebrauchen ist
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Orion
    antwortet
    Hallo Foxi,

    Ich bemerke das mit der zweiten Zone, wenn ich den Receiver ausschalte, er aber nicht ausgeht, weil aus irgendeinem Grund die zweite Zone eingeschaltet wurde. Ich bin etwas weiter, ich glaube dass es im Zusammenhang mit der Nutzung von AirPlay zu tun hat. Die schaltet ja auch unabhängig von der Fernbedienung oder hs den Receiver ein.
    Ich müsste die letzte Firmware drauf haben. Ich melde mich, sobald ich den usecase reproduzierbar habe.

    Danke für die Hilfe.

    Michel


    Gesendet von meinem iPad mit Tapatalk

    Einen Kommentar schreiben:


  • Foxi352
    antwortet
    Zitat von 2ndsky Beitrag anzeigen
    Lediglich den Radiotext bekomm ich nicht angezeigt...
    Was hast du denn als Quelle da stehen ?

    Ich hab was komisches festgestellt am Wochenende. Das Plugin zeigt den Radio Text nur an wenn die Quelle IRADIO ist. Denn der DENON hat keine Felder für den Radiotext, sondern nur Felder für das Display. Das heisst das Plugin sieht das gleich als das was auf dem Schirm (Bild vom Denon auf dem Fernseher) steht. Damit der Plugin Titel und Sendername sieht, muss es auch auf dem Fernseher stehen. Manchmal wenn ich auf Internet Radio umschalte springt der Denon jedoch nicht auf das "Now Playing" Menu sondern steht im Favoriten Menu oder sonstwo ... Dann kommt auch "FAVORITES" als Quelle dahin stehen soweit ech gesehen habe. Muss das alles noch genau testen :-S

    Einen Kommentar schreiben:


  • Foxi352
    antwortet
    Zitat von Orion Beitrag anzeigen
    Hallo,

    ich habe jetzt 1,5 Tage testen. Resultat aus dem Log: 1x wurde die zweite Hörzone aktiviert (angeschaltet). Dieser Status wird auch über die Schnittstelle empfangen. Es wird vom Plugin definitiv keine Nachricht für die 2. Zone herausgeschickt. Die FB des Receivers lag verpackt in der Schublade, keine Bedienapp installiert.
    Schaltete sich die 2. Zone einfach so während dem Betrieb plötzlich ein, oder ging sie beim Einschalten des AVR direkt mit an ?

    Bei ersterem würde ich auf ein Problem bei dem AVR tippen, denn das Plugin sendet definitiv nichts was mit Z2 zu tun hat (noch nicht). Hast du die letzte Firmware drauf ?

    Sollte die Z2 beim Einschalten mit anspringen frage ich mich ob sie villeicht nicht vor dem Ausschalten an war, und der Receiver nach dem Einschalten automatisch die Zonen wieder aktiviert die vorher eingeschaltet waren ?

    Ehrlich gesagt, keine Ahnung :-) Aber das ganze kommt mir doch komisch vor ...

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Auch von mir ein Update. Bin heute auf sh.py 1.0 umgestiegen und habe dann das Plugin eingespielt. Erste Tests funktionierten einwandfrei. Lediglich den Radiotext bekomm ich nicht angezeigt... habe da aber auch noch nicht näher nachgeforscht weil mir das auch nicht so wichtig ist. Werde das jetzt mal weiter testen, aber schonmal Danke für das Plugin.

    Einen Kommentar schreiben:


  • Orion
    antwortet
    Hallo,

    ich habe jetzt 1,5 Tage testen. Resultat aus dem Log: 1x wurde die zweite Hörzone aktiviert (angeschaltet). Dieser Status wird auch über die Schnittstelle empfangen. Es wird vom Plugin definitiv keine Nachricht für die 2. Zone herausgeschickt. Die FB des Receivers lag verpackt in der Schublade, keine Bedienapp installiert.

    Quintessenz: Ich muss suchen, auch welchen Grund in meinem Environment dort etwas passiert. Ich schliesse zunächst einmal die sh und das plugin aus. Wenn ichs gefunden habe, kommt ein entsprechender Post dazu.

    Michel

    Einen Kommentar schreiben:


  • Orion
    antwortet
    Ich komme erst am Wochenende wieder dazu es intensiv zu benutzen, ich lasse dann hs. im interaktiven Mode laufen und schaue mir dann einmal das Log laufen. Eine Benutzung der App kann ich ausschließen, die hat hier keiner bei uns installiert.
    michel


    Gesendet von meinem iPad mit Tapatalk

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Zitat von Orion Beitrag anzeigen
    Ich hatte ja versprochen weiter zu testen, hatte den letzten Stand aus dem Git draufgespielt. Im Grunde funktioniert das alles auf meinem Denon X3000 auf, ich habe aber festgestellt, dass manchmal durcheinander 1. und 2. Hörzone kommt. Ich beobachte, dass das Gerät auf der 2. Hörzone eingeschaltet ist (Statusanzeige ist auch ein), ich aber gar nichts angeschlossen usw. habe, sie wird de facto auch nicht verwendet. Mir fehlt im Moment ein Hinweis, was ich loggen muß, um dort weiter zu kommen.
    Das mit der 2. Hörzone ist komisch. Die Protokollbeschreibung für den X3000 sieht gleich aus, wie die der anderen Modelle - siehe hier: http://www.awe-europe.com/documents/...0.2.0)_V01.doc
    Demnach wird die zweite Hörzone mit "Z2" gesteuert. Sprich z.B. "Z2MU" für Lautlos auf Hörzone 2. Das Plugin unterstützt, soweit ich das beurteilen kann, keine 2. Hörzone. Wenn du sh.py im Debug Modus laufen hast, solltest du auch jedes gesendete Kommando im Log sehen, beginnend mit "Denon: Sending request: ... ". Danach solltest du mal ausschau halten und überprüfen, ob da irgendwo was mit "Z2" gesendet wird. Du bist dir aber ganz sicher, dass nicht irgendwie ausversehen jemand mit der Denon App oder der FB die 2. Hörzone aktiviert hat?

    Einen Kommentar schreiben:


  • Foxi352
    antwortet
    Sorry hab heute nicht viel Zeit, werd morgen auf die Posts antworten.

    Inzwischen eine erste Version des Widgets zum testen: https://knx-user-forum.de/smartvisu/...tml#post369042

    Einen Kommentar schreiben:


  • Orion
    antwortet
    Hallo Foxi352, 2ndsky,

    ich verfolge Euren Dialog mit Spannung, weil ich da wie mit lerne im Moment. Wenn es irgend geht einfach weiter so, ist wie ein Lehrbuch für einen, der nicht so tief drin ist in der Materie.

    Ich hatte ja versprochen weiter zu testen, hatte den letzten Stand aus dem Git draufgespielt. Im Grunde funktioniert das alles auf meinem Denon X3000 auf, ich habe aber festgestellt, dass manchmal durcheinander 1. und 2. Hörzone kommt. Ich beobachte, dass das Gerät auf der 2. Hörzone eingeschaltet ist (Statusanzeige ist auch ein), ich aber gar nichts angeschlossen usw. habe, sie wird de facto auch nicht verwendet. Mir fehlt im Moment ein Hinweis, was ich loggen muß, um dort weiter zu kommen.

    Grüsse

    Michel

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Kann ich mir nicht vorstellen, dass das an Python liegt. Aber irgendwas steht in der Doku, dass man den Denon nicht überfordern darf
    Man sollte also mit dem nächsten Kommando warten, bis der Denon geantwortet hat. Was bei einer asynchronen Nachrichtenverarbeitung nicht ganz einfach ist. Ich habe das damals versucht mit dem Sleep zu lösen. Vielleicht müsste man sich aber auch eine Art Message Queue bauen und beim Senden einen Lock setzen, der beim Empfangen einer Nachricht wieder entfernt wird. Als Deadlock Schutz den Lock auch entfernen, wenn für x Sekunden keine Antwort eingegangen ist. Alle neuen Kommandos die in der Zwischenzeit hätten gesendet werden sollen, wandern in die Queue und werden dann der Reihe nach abgearbeitet.

    Einen Kommentar schreiben:


  • Foxi352
    antwortet
    Zitat von 2ndsky Beitrag anzeigen
    Stimmt, du hast recht. Ich habe gerade in meinem alten Code nachgesehen... ich frage beim Start auch alle für mich wichtigen Sachen ab, allerdings "nur" mit 200ms Pause dazwischen. Du hast ja 5 Sekunden Pause zwischen jeder Abfrage. Laut Doku sollte es aber gehen, alle 200ms eine Anfrage zu schicken bzw. muss der Denon innerhalb 200ms antworten.
    Ich meine bei meiner DOKU steht 700ms. Villeicht hat der einen langameren Prozessor als der 33er ...

    Das mit den 5 Sekunden war nur damit es mal klappt. Wir sind ja immer noch im Alpha Stadium :-) Wird wohl nach ausgiebigen Tests eher bei 1 oder 2 Sekunden landen. Das Problem scheint zu sein dass er nicht empfängt während er sendet und umgekehrt ... Keine Ahnung ob was ein Pyhton Thread Problem ist oder sonst was, aber das werd ich schon noch alles rausfinden ... Ich bin da zuversichtlich :-)

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Stimmt, du hast recht. Ich habe gerade in meinem alten Code nachgesehen... ich frage beim Start auch alle für mich wichtigen Sachen ab, allerdings "nur" mit 200ms Pause dazwischen. Du hast ja 5 Sekunden Pause zwischen jeder Abfrage. Laut Doku sollte es aber gehen, alle 200ms eine Anfrage zu schicken bzw. muss der Denon innerhalb 200ms antworten. Aber wenn ich mich recht erinnere, hat auch das hochsetzen des sleeps nichts gebracht.

    Dann werde ich mir dein Plugin doch mal näher ansehen und testen müssen... aber jetzt muss ich erstmal auf v1.0 umsteigen

    Einen Kommentar schreiben:

Lädt...
X