Denon AVR - Status auslesen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • HAL900
    Smart Home'r
    • 31.08.2016
    • 66

    Denon AVR - Status auslesen

    Hallo,

    nachdem ich es geschafft habe meinen DENON AVR x4200w über virtuelle Ausgangsbefehle zu steuern, möchte ich auch Daten auslesen (welche Zone ist aktiv/ welcher Radiosender,...).
    Ich kenne zwar die Befehle, weiß aber nicht wie ich Sie in Loxone einbinden soll. Ausgangbefehle liefern ja nichts zurück (oder doch). Muss ich hierzu einen virtuellen Eingang verwenden und wenn ja, wie (ich finde beim virtuellen Eingang irgendwie kein Feld um die tcp Addresse einzugeben).

    Jede Hilfe ist sehr willkommen.
  • Haidy
    LoxBus Spammer
    • 01.06.2016
    • 395

    #2
    Bist du schon zu einem Ergebnis gekommen? Ich werde diese Woche einen X2200 od. X1300 bestellen und mich dann auch mit diesem Thema auseinandersetzen...
    Loxone: Miniserver Gen.1, 1-Wire Extension, Air Base Extension, Dali-Extension, KNX (MDT GT2S, BWM, Taster, ...)
    Technik: PV 11,7kWp, Fronius Symo GEN24, LoxBerry, QNAP TS-431P, Unifi, Shelly

    Kommentar

    • Haidy
      LoxBus Spammer
      • 01.06.2016
      • 395

      #3
      Hab mich heute mal damit auseinander gesetzt, bisher aber noch ohne Ergebnis. Auslesen möchte ich von der Seite http://<AV IP-Adresse>/goform/formMainZone_MainZoneXmlStatusLite.xml diese liefert eine Ausgabe wie:

      HTML-Code:
      <item>
      <Power>
      <value>ON</value>
      </Power>
      <InputFuncSelect>
      <value>MPLAY</value>
      </InputFuncSelect>
      <VolumeDisplay>
      <value>Absolute</value>
      </VolumeDisplay>
      <MasterVolume>
      <value>-40.0</value>
      </MasterVolume>
      <Mute>
      <value>off</value>
      </Mute>
      </item>
      Jetzt hätte ich einen Virtuellen Eingang erstellt mit oben genannte Adresse und folgender Befehlserkennung zur Abfrage der aktuellen Quelle: <InputFuncSelect>\n\i<value>\i\2
      Ergebnis ist aber noch immer 0,0

      Dann mit einem nachgeschalteten Statusbaustein:
      AI1 = 85 --> Tuner
      AI1 = 86 --> TV
      AI1 = 80 --> Media Player (MPLAY)

      Ich gehe davon aus, dass meine Befehlserkennung noch nicht passt, kann mir da jemand weiterhelfen?

      Frohe Weihnachten!
      Loxone: Miniserver Gen.1, 1-Wire Extension, Air Base Extension, Dali-Extension, KNX (MDT GT2S, BWM, Taster, ...)
      Technik: PV 11,7kWp, Fronius Symo GEN24, LoxBerry, QNAP TS-431P, Unifi, Shelly

      Kommentar

      • Dietmar Wimmer
        Smart Home'r
        • 29.08.2015
        • 74

        #4
        Hallo, ich hab zum auslesen der Denon/Maranz AVR ein PicoC script im alten Forum gepostet gehabt. Werde das bei Gelegenheit ins Loxwiki stellen.


        Gesendet von iPhone mit Tapatalk

        Kommentar


        • baiea
          baiea kommentierte
          Kommentar bearbeiten
          Hi Dietmar

          Daumen hoch dass das script ins Loxwiki gestellt wird. Ich war damals auch am verzweifeln beim Einbinden von meinem Denon und habe dann im alten Forum dein Script gefunden, welches problemlos funktioniert. Vielen Dank nochmal dafür :-)

          LG
          Andreas
      • romildo
        Lebende Foren Legende
        • 25.08.2015
        • 5126

        #5
        Haidy

        Beim Beispiel aus #3 musst Du \n weglassen.
        Wenn die Texte MPLAY, TV, und TUNER kommen, dann würde ich nach dem zweiten Zeichen suchen, also nach P, V, U.
        Denke das war auch das was Du wolltest.

        Befehlserkennung wäre dann so:
        Code:
        <InputFuncSelect>\i<value>\i\s1\1
        Es sollten dann folgende Werte kommen:
        P (MPLAY) = Wert 80
        V (TV) = Wert 86
        U (TUNER) = Wert 85

        Für den Wert von MasterVolume sollte die Befehlserkennung
        Code:
        <MasterVolume>\i<value>\i\v
        funktionieren
        lg Romildo

        Kommentar


        • Haidy
          Haidy kommentierte
          Kommentar bearbeiten
          Danke für den Input, werde ich in den nächsten Tag testen! Ja genau wollte auch nach dem zweiten Zeichen suchen...
      • frankenhooker
        Extension Master
        • 07.03.2016
        • 129

        #6
        Zitat von Dietmar Wimmer
        Hallo, ich hab zum auslesen der Denon/Maranz AVR ein PicoC script im alten Forum gepostet gehabt. Werde das bei Gelegenheit ins Loxwiki stellen.


        Gesendet von iPhone mit Tapatalk
        Hallo Dietmar,
        wäre toll wenn du das PicoC zur Verfügung stellen könntest.
        Grüße
        frankenhooker

        Kommentar

        • Haidy
          LoxBus Spammer
          • 01.06.2016
          • 395

          #7
          Es läuft, danke für den Tip romildo

          EDIT hat gesagt es gibt noch ein kleines Problem:
          Wenn der AVR ausgeschaltet ist bin ich davon ausgegangen, dass der VI dann eine 0 liefert, weil er ja kein File aufrufen und durchsuchen kann. Es bleibt aber der letzte eingelesene Wert bestehen. Ist das normal?
          Zuletzt geändert von Haidy; 03.01.2017, 22:33.
          Loxone: Miniserver Gen.1, 1-Wire Extension, Air Base Extension, Dali-Extension, KNX (MDT GT2S, BWM, Taster, ...)
          Technik: PV 11,7kWp, Fronius Symo GEN24, LoxBerry, QNAP TS-431P, Unifi, Shelly

          Kommentar

          • Fuxi
            LoxBus Spammer
            • 26.08.2015
            • 255

            #8
            Hallo !

            Ich habe einen X1300 !
            Lässt sich aber mit dem fertigen Loxone Template nicht steuern.
            Habe schon alles probiert. Wie lauten eure genauen Befehle ?

            EDIT: Habs geschafft: IP gehört natürlich angepasst !
            volume up: http://192.168.0.120/MainZone/index.put.asp?cmd0=PutMasterVolumeBtn/> volume down: http://192.168.0.120/MainZone/index.put.asp?cmd0=PutMasterVolumeBtn/< set volume at 35 (-45=35-80): http://192.168.0.120/MainZone/index....olumeSet/-45.0 volume mute: http://192.168.0.120/MainZone/index....VolumeMute/off http://192.168.0.120/MainZone/index....tVolumeMute/on Inputs: http://192.168.0.120/MainZone/index....on%2FSAT%2FCBL http://192.168.0.120/MainZone/index....nction%2FMPLAY http://192.168.0.120/MainZone/index....Function%2FDVD DRC: http://192.168.0.120/SETUP/AUDIO/s_s...ynamicComp=Mid Power: http://192.168.0.120/MainZone/index....one_OnOff%2FON http://192.168.0.120/MainZone/index....ne_OnOff%2FOFF http://192.168.0.120/MainZone/index....ndby%2FSTANDBY
            Zuletzt geändert von Fuxi; 14.01.2017, 16:49.

            Kommentar

            • fifman
              Dumb Home'r
              • 07.10.2015
              • 25

              #9
              Hallo Leute
              Seit Update auf V9 kann ich meinen Status meines Denon AVR1912 nicht mehr auslesen.

              Ich bitte um Hilfe !!!

              DANKE

              // Auslesen des Status eines Denon AVR3311
              // (c) 2014 by Dietmar Wimmer
              //v1.01
              //IP Adresse des Denon in Zeile 33,113 und 192 eintragen

              char Z1Power[10];
              char Z1InputFuncSelect[10];
              char Z1MasterVolume[10];
              char Z1MasterVolume1[10];
              char Z1Mute[10];

              char Z2Power[10];
              char Z2InputFuncSelect[10];
              char Z2MasterVolume[10];
              char Z2MasterVolume1[10];
              char Z2Mute[10];

              char Z3Power[10];
              char Z3InputFuncSelect[10];
              char Z3MasterVolume[10];
              char Z3MasterVolume1[10];
              char Z3Mute[10];

              char* p;

              while(TRUE)
              {
              {
              if (getinput(0) == 1)

              //ZONE 1

              char* pZ1 = httpget("192.168.0.12","/goform/formMainZone_MainZoneXmlStatusLite.xml"); // Hier die IP-Adresse des Denon eintragen
              if (pZ1 != NULL) {


              //Power
              p = strstrskip(pZ1,"<Power><value>"); //Name des XML Attribut- Nächster Wert wird ausgegeben
              strncpy(Z1Power,p,strfind(p,"<",0)); //Ende des Wert der ausgegeben werden soll

              if (strcmp("ON", Z1Power) == 0) // Vergleiche ON mit Wert von Z1Power
              {setoutput(0,1);} //Setze Ausgang 0 auf 1
              if (strcmp("OFF", Z1Power) == 0)
              {setoutput(0,0);}

              //printf("%s",Z1Power); //Ergebnis im Log ausgeben


              //InputFuncSelect
              p = strstrskip(pZ1,"<InputFuncSelect><value>");
              strncpy(Z1InputFuncSelect,p,strfind(p,"<",0));

              if (strcmp("CD", Z1InputFuncSelect) == 0)
              {setoutput(1,1);}
              if (strcmp("DVD", Z1InputFuncSelect) == 0)
              {setoutput(1,2);}
              if (strcmp("BD", Z1InputFuncSelect) == 0)
              {setoutput(1,3);}
              if (strcmp("TV", Z1InputFuncSelect) == 0)
              {setoutput(1,4);}
              if (strcmp("SAT/CBL", Z1InputFuncSelect) == 0)
              {setoutput(1,5);}
              if (strcmp("GAME", Z1InputFuncSelect) == 0)
              {setoutput(1,6);}
              if (strcmp("GAME2", Z1InputFuncSelect) == 0)
              {setoutput(1,7);}
              if (strcmp("Media Server", Z1InputFuncSelect) == 0)
              {setoutput(1,8);}
              if (strcmp("V.AUX", Z1InputFuncSelect) == 0)
              {setoutput(1,9);}
              if (strcmp("TUNER", Z1InputFuncSelect) == 0)
              {setoutput(1,10);}
              if (strcmp("NET/USB", Z1InputFuncSelect) == 0)
              {setoutput(1,11);}
              if (strcmp("Favorites", Z1InputFuncSelect) == 0)
              {setoutput(1,12);}
              if (strcmp("Internet Radio", Z1InputFuncSelect) == 0)
              {setoutput(1,13);}

              setoutputtext(0,Z1InputFuncSelect);
              //printf("%s",Z1InputFuncSelect);


              //MasterVolume
              p = strstrskip(pZ1,"<MasterVolume><value>");
              strncpy(Z1MasterVolume,p,strfind(p,"<",0));

              if (strcmp("--", Z1MasterVolume) == 0)
              {setoutput(2,batof("0"));}
              else {setoutput(2,batof(Z1MasterVolume)+80);}

              //printf("%s",Z1MasterVolume);


              //Mute
              p = strstrskip(pZ1,"<Mute><value>");
              strncpy(Z1Mute,p,strfind(p,"<",0));

              if (strcmp("on", Z1Mute) == 0)
              {setoutput(3,1);}
              if (strcmp("off", Z1Mute) == 0)
              {setoutput(3,0);}

              //printf("%s",Z1Mute);

              }
              free(pZ1);





              //ZONE 2

              char* pZ2 = httpget("192.168.0.12","/goform/formZone2_Zone2XmlStatusLite.xml"); // IP-Adresse des Denon, AVR Pfad zur XML Datei Main Zone
              if (pZ2 != NULL) {


              //Power
              p = strstrskip(pZ2,"<Power><value>"); //Name des XML Attribut- N�chster Wert wird ausgegeben
              strncpy(Z2Power,p,strfind(p,"<",0)); //Ende des Wert der ausgegeben werden soll

              if (strcmp("ON", Z2Power) == 0)
              {setoutput(4,1);}
              if (strcmp("OFF", Z2Power) == 0)
              {setoutput(4,0);}

              //printf("%s",Z2Power); //Ergebnis im Log ausgeben


              //InputFuncSelect
              p = strstrskip(pZ2,"<InputFuncSelect><value>");
              strncpy(Z2InputFuncSelect,p,strfind(p,"<",0));

              if (strcmp("CD", Z2InputFuncSelect) == 0)
              {setoutput(5,1);}
              if (strcmp("DVD", Z2InputFuncSelect) == 0)
              {setoutput(5,2);}
              if (strcmp("BD", Z2InputFuncSelect) == 0)
              {setoutput(5,3);}
              if (strcmp("TV", Z2InputFuncSelect) == 0)
              {setoutput(5,4);}
              if (strcmp("SAT/CBL", Z2InputFuncSelect) == 0)
              {setoutput(5,5);}
              if (strcmp("GAME", Z2InputFuncSelect) == 0)
              {setoutput(5,6);}
              if (strcmp("GAME2", Z2InputFuncSelect) == 0)
              {setoutput(5,7);}
              if (strcmp("Media Server", Z2InputFuncSelect) == 0)
              {setoutput(5,8);}
              if (strcmp("V.AUX", Z2InputFuncSelect) == 0)
              {setoutput(5,9);}
              if (strcmp("TUNER", Z2InputFuncSelect) == 0)
              {setoutput(5,10);}
              if (strcmp("NET/USB", Z2InputFuncSelect) == 0)
              {setoutput(5,11);}
              if (strcmp("Favorites", Z2InputFuncSelect) == 0)
              {setoutput(5,12);}
              if (strcmp("Internet Radio", Z2InputFuncSelect) == 0)
              {setoutput(5,13);}


              setoutputtext(1,Z2InputFuncSelect);
              //printf("%s",Z2InputFuncSelect);


              //MasterVolume
              p = strstrskip(pZ2,"<MasterVolume><value>");
              strncpy(Z2MasterVolume,p,strfind(p,"<",0));

              if (strcmp("--", Z2MasterVolume) == 0)
              {setoutput(6,batof("0"));}
              else {setoutput(6,batof(Z2MasterVolume)+80);}

              //printf("%s",Z2MasterVolume);


              //Mute
              p = strstrskip(pZ2,"<Mute><value>");
              strncpy(Z2Mute,p,strfind(p,"<",0));

              if (strcmp("on", Z2Mute) == 0)
              {setoutput(7,1);}
              if (strcmp("off", Z2Mute) == 0)
              {setoutput(7,0);}

              //printf("%s",Z2Mute);

              }
              free(pZ2);




              //ZONE 3

              char* pZ3 = httpget("192.168.0.12","/goform/formZone3_Zone3XmlStatusLite.xml"); // IP-Adresse des Denon, AVR Pfad zur XML Datei Main Zone
              if (pZ3 != NULL) {


              //Power
              p = strstrskip(pZ3,"<Power><value>"); //Name des XML Attribut- N?chster Wert wird ausgegeben
              strncpy(Z3Power,p,strfind(p,"<",0)); //Ende des Wert der ausgegeben werden soll

              if (strcmp("ON", Z3Power) == 0)
              {setoutput(8,1);}
              if (strcmp("OFF", Z3Power) == 0)
              {setoutput(8,0);}

              //printf("%s",Z3Power); //Ergebnis im Log ausgeben


              //InputFuncSelect
              p = strstrskip(pZ3,"<InputFuncSelect><value>");
              strncpy(Z3InputFuncSelect,p,strfind(p,"<",0));

              if (strcmp("CD", Z3InputFuncSelect) == 0)
              {setoutput(9,1);}
              if (strcmp("DVD", Z3InputFuncSelect) == 0)
              {setoutput(9,2);}
              if (strcmp("BD", Z3InputFuncSelect) == 0)
              {setoutput(9,3);}
              if (strcmp("TV", Z3InputFuncSelect) == 0)
              {setoutput(9,4);}
              if (strcmp("SAT/CBL", Z3InputFuncSelect) == 0)
              {setoutput(9,5);}
              if (strcmp("DVR", Z3InputFuncSelect) == 0)
              {setoutput(9,6);}
              if (strcmp("DOCK", Z3InputFuncSelect) == 0)
              {setoutput(9,7);}
              if (strcmp("GAME", Z3InputFuncSelect) == 0)
              {setoutput(9,8);}
              if (strcmp("V.AUX", Z3InputFuncSelect) == 0)
              {setoutput(9,9);}
              if (strcmp("TUNER", Z3InputFuncSelect) == 0)
              {setoutput(9,10);}
              if (strcmp("PHONO", Z3InputFuncSelect) == 0)
              {setoutput(9,11);}
              if (strcmp("NET/USB", Z3InputFuncSelect) == 0)
              {setoutput(9,12);}

              setoutputtext(2,Z3InputFuncSelect);
              //printf("%s",Z3InputFuncSelect);


              //MasterVolume
              p = strstrskip(pZ3,"<MasterVolume><value>");
              strncpy(Z3MasterVolume,p,strfind(p,"<",0));

              if (strcmp("--", Z3MasterVolume) == 0)
              {setoutput(10,batof("0"));}
              else {setoutput(10,batof(Z3MasterVolume)+80);}

              //printf("%s",Z3MasterVolume);


              //Mute
              p = strstrskip(pZ3,"<Mute><value>");
              strncpy(Z3Mute,p,strfind(p,"<",0));

              if (strcmp("on", Z3Mute) == 0)
              {setoutput(11,1);}
              if (strcmp("off", Z3Mute) == 0)
              {setoutput(11,0);}

              //printf("%s",Z3Mute);

              }
              free(pZ3);
              }
              sleep(1000); // Refresh Rate in Millisekunden
              }

              Kommentar


              • romildo
                romildo kommentierte
                Kommentar bearbeiten
                Hallo
                Du könntest mal in der Live View schauen ob der Programmbaustein an TeQ einen Fehler anzeigt.
            • frankenhooker
              Extension Master
              • 07.03.2016
              • 129

              #10
              Hab genau das gleiche Problem. Es ging kurzzeitig, aktuell bleibt die Anzeige auf dem letzten Wert stehen. Irgendwie wird nicht mehr aktualisiert.
              Zum Starten vom Script liegt am Eingang 1 eine 1 an.

              Kommentar

              • frankenhooker
                Extension Master
                • 07.03.2016
                • 129

                #11
                Hab mal einen virtuellen Staus an TeQ drangehängt, nach Speicherung wird "Start" angezeigt, das Script funktioniert auch momentan.
                Nach einer noch nicht identifizierten Zeit oder einem unbekannten Ereignis wird es dann nicht mehr funktionieren. Die Ursache sollte doch zu finden sein...

                Kommentar

                • frankenhooker
                  Extension Master
                  • 07.03.2016
                  • 129

                  #12
                  Der Denon wird über eine Smart Socket vom Strom getrennt, nach Einschalten derselben kommt dann diese Fehlermeldung.

                  Kommentar

                  • fifman
                    Dumb Home'r
                    • 07.10.2015
                    • 25

                    #13
                    Antwort von Loxone auf das Ticket:

                    Vielen Dank.

                    Also es wurden eben einige Erneuerungen eingebaut und Sicherheitsfeatures umgesetzt, damit eben der Miniserver stabiler läuft. Es ist auch so, wenn das Skript jetzt nicht mehr funktioniert, dann ist irgendwo im Skript ein Fehler. Diese Sicherheitsfunktion haben wir auch eingebaut, dass dann das Skript nicht mehr läuft.

                    Ansonsten versuchen Sie, dass Sie sich mit dem Miniserver verbinden, aus dem Miniserver laden und dann die Projektanalyse durchführen. Sehen Sie da irgend eine Fehlermeldung in der Analyse.
                    Wenn Sie aus dem Miniserver geladen haben und einen Doppelklick auf den Programmbaustein machen, sehen Sie da in der ersten Zeile einen Kommentar, dass der Baustein gesperrt wurde?


                    Naja ... was soll ich damit anfangen

                    Beim Fehlerausgang steht nur: START
                    Angehängte Dateien

                    Kommentar

                    • fifman
                      Dumb Home'r
                      • 07.10.2015
                      • 25

                      #14
                      und wenn der Denon läuft:

                      Angehängte Dateien

                      Kommentar

                      • frankenhooker
                        Extension Master
                        • 07.03.2016
                        • 129

                        #15
                        Hier noch das XML der Zone1. Vielleicht findet jemand heraus, warum hier der gültige Bereich verlassen wird. --> Beitrag #9
                        In V8 funktionierte ja alles.

                        Grundsätzlich funktioniert bei mir das Script solange bis der Receiver vom Netz getrennt wird (nach einem Standby gehts es). Nach Wiedereinschalten des Receivers kommt dann die obige Fehlermeldung.
                        Vermute bei fifman das gleiche Problem.
                        Zuletzt geändert von frankenhooker; 29.09.2017, 19:18.

                        Kommentar

                        Lädt...