Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Denon Skript

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Denon Skript

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      Lucky last edited by

      so, bisschen spät geworden..

      kurze Beschreibung:

      1. bitte die IP eures AVR oben eintragen (ja das mach ich irgendwann noch schöner)

      2. beim AVR muss die Netzwerksteuerung aktiv sein, und auf statische IP einstellen

      3. ein kontinuirliches pollen ist nicht erforderlich da der AVR selbst Events sendet sobald sich etwas ändert

      4. mit den State "UPDATE" können die aktuellen zustände beim AVR abgefragt werden

      5. die Tuner_Control ist noch nicht ganz fertig, kommt aber die tage

      6. das Skript sollte bei allen Geräten der X Serie funktionieren, Protokol Refferenz ist von 2015

      6. wer Fehler findet darf sie behalten, mich aber drauf hinweisen 😉

      EDIT: kleine Erweiterungen und Bugfix gemacht

      !!!!!!!!Aktuelle Version im Post vom 29.08.2017, 19:54 !!!!!!

      1 Reply Last reply Reply Quote 0
      • L
        Lucky last edited by

        hat schon jemand mein Skript getestet ?

        mich würde mal interssieren ob es ansatzweise auch mit Geräten die nicht aus der X Serie sind funktioniert. z.b. AVR3313 usw

        1 Reply Last reply Reply Quote 0
        • A
          akamia last edited by

          Kommt am WE.

          1 Reply Last reply Reply Quote 0
          • H
            holson last edited by

            Hi Lucky,

            ich habe Dein Script mit meinem Denon AVR-X4200W getestet!

            In ioBroker werden unter der Registerkarte Objekte die aktuellen Zustände des Receivers angezeit! 😄

            Es ist leider NICHT möglich Zustände zu ändern, wie z.B. Mute. 😞

            Im Log zum Skrip ist folgendes sichtbar:

            javascript.0 script.js.common.Denon: MUON

            javascript.0 script.js.common.Denon: error: Error: write after end

            <u>Hinweis:</u>

            Ich habe gemäß Hinweis von akamia die Ansteuerung über http probiert und das funktioniert, wie z.B.:

            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="">VG

            HolSon</db></av></av></av>

            1 Reply Last reply Reply Quote 0
            • L
              Lucky last edited by

              Hi,

              habe gesehen das gerade bei Mute ein Fehler in der ID war ! habs oben geändert ! :roll:

              wenn du die Aktuellen Zustände schon gesehen hast, ist die Kommunikation zum AVR grundsätzlich ok ! also das initiale Abfragen der Zustände hat funktioniert..

              "write after end" kommt wenn der AVR aus irgent einem Grund den Port geschlossen hat, Abhilfe schafft hier einmal im Setup die IP Steuerung zu deaktivieren und wider zu aktivieren !

              EDIT: ich habe noch eine Fehlerbehandlung und Prüfung ob Verbindung besteht mit eingebaut ! code oben ist Aktualisiert 😉

              1 Reply Last reply Reply Quote 0
              • H
                holson last edited by

                Hi Lucky,

                Danke für Dein schnelles Feedback und Update Deines Skripts!

                ->Ich kann aber leider mein Denon AVR-X4200W weiterhin NICHT steuern…

                Wenn ich das Skript starte, bekomme ich zunächst folgende Meldung:

                javascript.0 script.js.common.Denon: error: Error: connect ECONNREFUSED

                In der Registerkarte Objekte (javascript.Denon.Main_Zone) werden die aktuellen Zustände des Receivers angezeit!

                Mir fällt allerdings auf, dass in der Registerkarte Objekte unter javascript.Denon.System die Werte nicht korrekt sind:

                javascript.0.Denon.System.IP_Adresse ist leer ->habe ich auch mal manuell gefüllt; hilft auch nix...

                javascript.0.Denon.System.Verbunden ist false!!!

                Hinweis:

                DHCP habe ich zwischendurch unter den Netzwerkeinstellungen in meinem DENON deaktiviert und vom Netz getrennt und neu gestartet - keine Änderung, ich kann meinen DENON hierüber leider nicht steuern

                Danke und viele Grüße

                HolSon

                1 Reply Last reply Reply Quote 0
                • L
                  Lucky last edited by

                  Trage bitte deine IP direkt im Script in der dritten Zeile in variable IP ein, und starte das Skript neu! Sollte das immer noch nichts bringen, versuche mal das webinterface deines AVR im Browser zu öffnen! Sollte das nicht gehen, liegt das Problem möglicherweise wo anders..

                  1 Reply Last reply Reply Quote 0
                  • H
                    holson last edited by

                    im Scipt ist folgendes eingetragen:

                    var IP='192.168.178.152';

                    Mein Receiver ist über den Web-Browser unter diese Adresse erreichbar:

                    http://192.168.178.152/SETUP/f_home.asp

                    Diese http-Befehel funktionieren:

                    http://192.168.178.152/goform/formiPhon … l?1+MuteOn

                    http://192.168.178.152/goform/formiPhon ... ?1+MuteOff

                    Ich habe jetzt auch über Putty eine Telnet Verbindung zu der Adresse 192.168.178.152 mit Port 23 versucht und bekomme auch hier:

                    "Network error: Connection refuesd"

                    Habe jetzt auch sicherheitshalber mein Harmony Hub vom Netzt genommen und das Skript deaktiviert und die Denon Netzwerkeinstellungen über DHCP ausgeschaltet.

                    Ich frage mich, warum bei deaktivem Skript der Status in ioBroker dennoch fortgeschrieben wird:

                    javascript.0 script.js.common.Denon: NSET1IPA 000.000.000.000

                    Ich habe im Denon das Netzwerk wieder auf DHCP gesetzt; beim deaktiven Skript in ioBroker wird erwartungsgemäß kein Denon Status fortgeschrieben sondern erst, wenn ich es aktiviere. Trotzdem ist KEINE Steuerung über das Skript möglich (im Script-Bereich System und Zone_Mail sind die Werte aktuell)! Ich bekomme die Connection refused Nachricht am Anfang…

                    Wenn ich das Skript deaktiviere und Denon Netzwerkeinstellungen über DHCP aussschalte und wieder DHCP einschalte kann ich mich über Putty erfolgreich verbinden und sehe, wie die einzelnen Stati übertragen werden.

                    1 Reply Last reply Reply Quote 0
                    • L
                      Lucky last edited by

                      ich habe jetzt mal versucht das nachzustellen:

                      • wenn das Skrip bei mir läuft, kann ich keine weitere Verbindung z.b. über Putty aufbauen, demnach lässt der AVR nur eine Telnetverbindung zu -> Connection refused

                      • stoppe ich das Skript, kann ich eine andere Verbindung über Putty herstellen und steuern !

                      • anders rum genau so, also reproduzierbar

                      wird eine Telnetverbindung(egal durch was oder wen) nicht richtig beendet, ist der Telnet Port im AVR blockiert ! Um dies zu beheben muß die Netzwerksteuerung einmal deaktiviert/aktiviert werden (Power off/on reicht nicht !)

                      Das Skript beendet die Verbindung immer korrekt, auch wenn es einfach gestoppt wird

                      Hast du das Skript unter Common gespeichert ? erstelle bitte einen neue Gruppe z.b. Denon, und speichere das Skript dort !

                      1 Reply Last reply Reply Quote 0
                      • H
                        holson last edited by

                        Ich hatte das Skript zuerst direkt unter GLOBAL, dann direkt unter COMMON.

                        ->die Skripte und die erstellten Objekte habe ich gelöscht und jetzt

                        unter common die Gruppe "Denon" erstellt und das JavaSkript/js "AVR-X4200W" genannt und gestartet.

                        Hinweis zu meinem Denon AVR-X4200W und Putty Test:

                        Die Netzwerksteuerung einmal zu deaktivieren/aktivieren reicht nicht aus, um den Telnet-Port wieder freizugeben.

                        Ich schalte dazu in Denon Netzwerkeinstellungen DHCP aus und dann wieder ein.

                        Mit Putty kann ich eine Telnet Verbindung aufbauen, Putty beenden und wieder Telnet Verbindung aufbauen.

                        ->funktioniert also wie erwartet

                        Ich konnte folgendes mehrfach reproduzieren:

                        1. Telnet-Port im Denon freigegeben (->in den Denon-Netzwerkeinstellungen DHCP aus und wieder eingeschaltet).

                        2. Start des Skripts in ioBroker:

                        ->auffällig ist, dass erst eine Verbindung hergestellt werden kann (connected to server!) und gleich danach die Meldung Error: connect ECONNREFUSED.

                        Test 1:

                        00:02:56.922 [info] javascript.0 Start javascript script.js.common.Denon.AVR-X4200W

                        00:02:56.922 [info] javascript.0 script.js.common.Denon.AVR-X4200W: registered 78 subscriptions and 0 schedules

                        00:02:56.923 [info] javascript.0 script.js.common.Denon.AVR-X4200W: connected to server!

                        00:02:56.923 [error] javascript.0 script.js.common.Denon.AVR-X4200W: error: Error: connect ECONNREFUSED 192.168.178.152:23

                        Re-Test 2:

                        01:15:01.163 [info] javascript.0 Start javascript script.js.common.Denon.AVR-X4200W

                        01:15:01.164 [info] javascript.0 script.js.common.Denon.AVR-X4200W: registered 78 subscriptions and 0 schedules

                        01:15:01.164 [info] javascript.0 script.js.common.Denon.AVR-X4200W: connected to server!

                        01:15:01.164 [error] javascript.0 script.js.common.Denon.AVR-X4200W: error: Error: connect ECONNREFUSED 192.168.178.152:23

                        Frage: Baut das Skript doch mehrere Telnet-Verbindungen auf bzw. beendet diese ggf. nicht immer?

                        <u>Hinweis:</u>

                        Wenn ich das Sript beende, kann ich KEINE Telnet-Verbindung über Putty aufbauen…

                        1 Reply Last reply Reply Quote 0
                        • L
                          Lucky last edited by

                          Hallo,

                          nein, es wird nur eine Verbindung aufgebaut !

                          was mir noch einfällt:

                          1.welche firmware hast du ? wobei das bei der Grundkommunikation nichts zur Sache tut, bei mir ging es auch mit der alten FW

                          2. wähle mal eine größeren Zeitabstand zwischen den Anfragen, indem du in Zeile 92 bei Update z.b 200 einträgst

                             client.on('connect', function () {                                //Verbindung Hergestellt
                              console.log('Verbunden mit Denon AVR !!! '+'IP '+IP);
                              //console.log('connected to server !!!');
                               {setState('javascript.0.Denon.System.Verbunden',true,akt=true)}
                                update(100); //beim ersten Start Funktion update aufrufen mit 100ms zwischen den Anfragen, maximal 50ms ! 
                              });
                          

                          bei mir sieht der Log mit Denon AVR X6200W mit Aktueller FW so aus wenn ich das Skript starte, Input Tuner wähle , auf Input Mediaplayer wechsle und das Skript wider stoppe..

                          11:13:39.276	[info]	javascript.0 Start javascript script.js.Denon.Denon_Main
                          11:13:39.276	[info]	javascript.0 script.js.Denon.Denon_Main: registered 39 subscriptions and 0 schedules
                          11:13:39.276	[info]	javascript.0 script.js.Denon.Denon_Main: Verbunden mit Denon AVR !!! IP 192.168.188.10
                          11:13:39.372	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: ZM?
                          11:13:39.466	[info]	javascript.0 script.js.Denon.Denon_Main: ZMON
                          11:13:39.474	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: MU?
                          11:13:39.570	[info]	javascript.0 script.js.Denon.Denon_Main: MUOFF
                          11:13:39.577	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: PW?
                          11:13:39.680	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: SI?
                          11:13:39.680	[info]	javascript.0 script.js.Denon.Denon_Main: PWON
                          11:13:39.725	[info]	javascript.0 script.js.Denon.Denon_Main: Z2ON
                          11:13:39.749	[info]	javascript.0 script.js.Denon.Denon_Main: Z3ON
                          11:13:39.780	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: SV?
                          11:13:39.860	[info]	javascript.0 script.js.Denon.Denon_Main: SIMPLAY
                          11:13:39.882	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: MS?
                          11:13:39.932	[info]	javascript.0 script.js.Denon.Denon_Main: SVOFF
                          11:13:39.982	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: MV?
                          11:13:39.989	[info]	javascript.0 script.js.Denon.Denon_Main: MSSTEREO
                          11:13:40.051	[info]	javascript.0 script.js.Denon.Denon_Main: PSDRC OFF
                          11:13:40.081	[info]	javascript.0 script.js.Denon.Denon_Main: PSLFE 00
                          11:13:40.086	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: Z2?
                          11:13:40.090	[info]	javascript.0 script.js.Denon.Denon_Main: PSBAS 50
                          11:13:40.135	[info]	javascript.0 script.js.Denon.Denon_Main: PSTRE 50
                          11:13:40.160	[info]	javascript.0 script.js.Denon.Denon_Main: Z2ON
                          11:13:40.173	[info]	javascript.0 script.js.Denon.Denon_Main: Z2TV
                          11:13:40.187	[info]	javascript.0 script.js.Denon.Denon_Main: Z219
                          11:13:40.187	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: Z2MU?
                          11:13:40.255	[info]	javascript.0 script.js.Denon.Denon_Main: PSTONE CTRL OFF
                          11:13:40.290	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: Z3?
                          11:13:40.290	[info]	javascript.0 script.js.Denon.Denon_Main: SVOFF
                          11:13:40.339	[info]	javascript.0 script.js.Denon.Denon_Main: MV45
                          11:13:40.380	[info]	javascript.0 script.js.Denon.Denon_Main: MVMAX 835
                          11:13:40.391	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: Z3MU?
                          11:13:40.443	[info]	javascript.0 script.js.Denon.Denon_Main: Z2MUOFF
                          11:13:40.481	[info]	javascript.0 script.js.Denon.Denon_Main: Z3MUOFF
                          11:13:40.493	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: NSE
                          11:13:40.499	[info]	javascript.0 script.js.Denon.Denon_Main: Z3ON
                          11:13:40.565	[info]	javascript.0 script.js.Denon.Denon_Main: Z3TV
                          11:13:40.565	[info]	javascript.0 script.js.Denon.Denon_Main: Z325
                          11:13:40.594	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: VSSC ?
                          11:13:40.602	[info]	javascript.0 script.js.Denon.Denon_Main: NSE0Online Music
                          11:13:40.648	[info]	javascript.0 script.js.Denon.Denon_Main: NSE1 Favorites
                          11:13:40.690	[info]	javascript.0 script.js.Denon.Denon_Main: SVOFF
                          11:13:40.696	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: VSASP ?
                          11:13:40.705	[info]	javascript.0 script.js.Denon.Denon_Main: NSE2Internet Radio
                          11:13:40.767	[info]	javascript.0 script.js.Denon.Denon_Main: NSE3Flickr
                          11:13:40.796	[info]	javascript.0 script.js.Denon.Denon_Main: NSE4Media Server
                          11:13:40.798	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: VSMONI ?
                          11:13:40.805	[info]	javascript.0 script.js.Denon.Denon_Main: NSE5
                          11:13:40.867	[info]	javascript.0 script.js.Denon.Denon_Main: NSE6
                          11:13:40.895	[info]	javascript.0 script.js.Denon.Denon_Main: NSE7
                          11:13:40.900	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: TR?
                          11:13:40.906	[info]	javascript.0 script.js.Denon.Denon_Main: NSE8 [ 0/4 ]
                          11:13:40.945	[info]	javascript.0 script.js.Denon.Denon_Main: VSSCAUTO
                          11:13:40.985	[info]	javascript.0 script.js.Denon.Denon_Main: VSASPFUL
                          11:13:41.003	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: DIM ?
                          11:13:41.044	[info]	javascript.0 script.js.Denon.Denon_Main: TR1 ON
                          11:13:41.087	[info]	javascript.0 script.js.Denon.Denon_Main: TR2 ON
                          11:13:41.121	[info]	javascript.0 script.js.Denon.Denon_Main: DIM BRI
                          11:13:41.144	[info]	javascript.0 script.js.Denon.Denon_Main: VSMONIAUTO
                          11:13:57.796	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: SITUNER
                          11:13:58.940	[info]	javascript.0 script.js.Denon.Denon_Main: SSINFAISFSV NON
                          11:13:59.002	[info]	javascript.0 script.js.Denon.Denon_Main: SSSMG PUR
                          11:13:59.067	[info]	javascript.0 script.js.Denon.Denon_Main: SITUNER
                          11:13:59.101	[info]	javascript.0 script.js.Denon.Denon_Main: CVFL 50
                          11:13:59.113	[info]	javascript.0 script.js.Denon.Denon_Main: CVFR 50
                          11:13:59.117	[info]	javascript.0 script.js.Denon.Denon_Main: CVEND
                          11:13:59.194	[info]	javascript.0 script.js.Denon.Denon_Main: MVMAX 98
                          11:13:59.215	[info]	javascript.0 script.js.Denon.Denon_Main: SDANALOG
                          11:13:59.248	[info]	javascript.0 script.js.Denon.Denon_Main: DCAUTO
                          11:13:59.270	[info]	javascript.0 script.js.Denon.Denon_Main: PSMULTEQ:AUDYSSEY
                          11:13:59.294	[info]	javascript.0 script.js.Denon.Denon_Main: PSDYNEQ ON
                          11:13:59.335	[info]	javascript.0 script.js.Denon.Denon_Main: PSDYNVOL MED
                          11:13:59.364	[info]	javascript.0 script.js.Denon.Denon_Main: SVOFF
                          11:13:59.391	[info]	javascript.0 script.js.Denon.Denon_Main: TFANNAME NDR 2
                          11:14:09.316	[info]	javascript.0 script.js.Denon.Denon_Main: Anfrage: SIMPLAY
                          11:14:10.445	[info]	javascript.0 script.js.Denon.Denon_Main: SSSMG PUR
                          11:14:10.502	[info]	javascript.0 script.js.Denon.Denon_Main: SIMPLAY
                          11:14:10.525	[info]	javascript.0 script.js.Denon.Denon_Main: CVFL 50
                          11:14:10.545	[info]	javascript.0 script.js.Denon.Denon_Main: CVFR 50
                          11:14:10.561	[info]	javascript.0 script.js.Denon.Denon_Main: CVEND
                          11:14:10.602	[info]	javascript.0 script.js.Denon.Denon_Main: MVMAX 98
                          11:14:10.630	[info]	javascript.0 script.js.Denon.Denon_Main: SDAUTO
                          11:14:10.683	[info]	javascript.0 script.js.Denon.Denon_Main: DCAUTO
                          11:14:10.715	[info]	javascript.0 script.js.Denon.Denon_Main: PSMULTEQ:AUDYSSEY
                          11:14:10.746	[info]	javascript.0 script.js.Denon.Denon_Main: PSDYNEQ ON
                          11:14:10.782	[info]	javascript.0 script.js.Denon.Denon_Main: PSDYNVOL MED
                          11:14:10.816	[info]	javascript.0 script.js.Denon.Denon_Main: SVOFF
                          11:14:11.909	[info]	javascript.0 script.js.Denon.Denon_Main: SSINFAISSIG 02
                          11:14:11.941	[info]	javascript.0 script.js.Denon.Denon_Main: SSINFAISFSV 441
                          11:14:13.607	[info]	javascript.0 Stop script script.js.Denon.Denon_Main
                          11:14:13.608	[info]	javascript.0 script.js.Denon.Denon_Main: Connection closed !
                          
                          1 Reply Last reply Reply Quote 0
                          • J
                            jonnyb last edited by

                            Hi Lucky,

                            super und Danke, ich habe leider noch nicht viel machen können. Aber das was ich gemacht habe hat fast alles mit meinem Denon AVR-X1100W funktioniert!

                            Die OSD_INFO_List hatte keine Einträge, aber da gibt es schlimmeres. Bleibe auf alle Fälle dran!

                            Vielen Dank!

                            JonnyB

                            1 Reply Last reply Reply Quote 0
                            • H
                              holson last edited by

                              Hi Lucky,

                              Danke für Deine Tipps und Zusendung Deines Logs:

                              Mein Denon AVR-X4200W hat die aktuelle Firmware (0992-7370-8223-04).

                              Ich habe im Skript update(100) auf update(200) geändert und Skriptgruppe/Skript wie bei Dir gemacht.

                              ->es bringt keine Änderung, d.h. ich kann weiterhin kein Status ändern und sehe nur die Statusänderungen bzw. bekomme weiterhin die Meldung "Error: connect ECONNREFUSED".

                              Anbei das Log, bei dem ich das Skript gestartet habe:

                              00:24:27.623 [info] javascript.0 Start javascript script.js.Denon.Denon_Main

                              00:24:27.623 [info] javascript.0 script.js.Denon.Denon_Main: registered 78 subscriptions and 0 schedules

                              00:24:27.626 [info] javascript.0 script.js.Denon.Denon_Main: connected to server!

                              00:24:27.630 [error] javascript.0 script.js.Denon.Denon_Main: error: Error: connect ECONNREFUSED 192.168.178.152:23

                              … Mute ein- und ausgeschaltet

                              00:25:02.529 [info] javascript.0 script.js.Denon.Denon_Main: MUON

                              00:25:04.018 [info] javascript.0 script.js.Denon.Denon_Main: MUOFF

                              Das Skript habe ich dann deaktiviert

                              00:25:06.310 [info] javascript.0 Stop script script.js.Denon.Denon_Main

                              00:25:06.316 [info] javascript.0 script.js.Denon.Denon_Main: Connection closed !

                              … und auf der Denon-Fernbedienung Mute ein- und ausgeschaltet:

                              00:25:10.139 [info] javascript.0 script.js.Denon.Denon_Main: MUON

                              00:25:12.338 [info] javascript.0 script.js.Denon.Denon_Main: MUOFF

                              Frage:

                              Obohl ich das Skript in ioBroker deaktiviert habe, werden Statusändeungen weiterhin in ioBroker fortgeschrieben,

                              woraus ich interpretiere, dass die Telnet-Verbindung doch noch besteht - oder liege ich da falsch?

                              VG

                              1 Reply Last reply Reply Quote 0
                              • H
                                holson last edited by

                                Hallo Lucky,

                                dank einem Tipp von ldittmar habe ich die Ursache gefunden und es funktioniert jetzt!!!! 😄 😄 😄 😄

                                Ich habe den Java-Script-Adapter beendet und neu gestartet sowie ioBroker neu gestartet.

                                Da ich das Skript anfänglich noch unter GLOBAL hatte und obwohl ich es wieder gestoppt und gelöscht hatte (inkl. der erstellten Objekte) ist wohl doch noch etwas im speicher aktiv geblieben.

                                Durch den Neustart hat sich das erledigt und es funktioniert hervorragend!!!

                                Danke Dir vielmals für Deine Mühe und Dein funktionierendes Skript!!!!

                                VG

                                HolSon

                                1 Reply Last reply Reply Quote 0
                                • L
                                  Lucky last edited by

                                  na das ist doch Super 😄 anders hätte ich es mir dann auch nicht mehr erklären können..

                                  bei der Gelegenheit kleines Update:

                                  1. die Tuner Steuerung funktioniert jetzt

                                  2. die IP Adresse wird jetz im State IP eingetragen, Verbindungsfehler werden automatisch behandelt, neustart des Skript ist nicht mehr notwendig

                                  3. einiges aufgeräumt

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    Lucky last edited by

                                    so, die vorerst letzte änderung:

                                    Schönheitsfehler behoben

                                    neue Funktionen: 1: Systemname wird jetzt vom Gerät abgerufen 2: es wird angezeit wann der AVR '' fertig gebootet'' hat, also wenn es "klick" gemacht hat (das ist wichtig wenn man z.b. mit Alexa steuern will, denn erst wenn der AVR vollständig hochgefahren ist, werden die kommandos richtig umgesetzt!)

                                    ! ```
                                    `//Kontakt: s-nolte@htp-tel.de
                                    //ioBroker Forum: Lucky
                                    var net = require('net');
                                    ! // System
                                    createState('javascript.0.Denon.System.UPDATE', false,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.System.Power_System', false,{type: "boolean", role: "Power System"});
                                    createState('javascript.0.Denon.System.System_Ready', false,{type: "boolean", role: "System Ready",write:false});
                                    createState('javascript.0.Denon.System.IP_Adresse', '000.000.000.000',{type: "string", role: "AVR IP Adresse"});
                                    createState('javascript.0.Denon.System.Trigger_1', false,{type: "boolean", role: "Trigger 1"});
                                    createState('javascript.0.Denon.System.Trigger_2', false,{type: "boolean", role: "Trigger 2"});
                                    createState('javascript.0.Denon.System.Command', '',{type: "string", role: "Command to AVR"});
                                    createState('javascript.0.Denon.System.Display_Dimmer',0,{type: "number", role: "FL Display Dimmer",states: "0:BRI;1:DIM;2:DAR;3:OFF"});
                                    createState('javascript.0.Denon.System.Verbunden',false,{type: "boolean", role: "Verbindung hergestellt",write:false});
                                    createState('javascript.0.Denon.System.Name',{type: "string", role: "Netzwerk-Name",write:false});
                                    ! //OSD
                                    createState('javascript.0.Denon.OSD.OSD_Info_List0', 'init',{type: "string", role: "Onscreen Display Info List00",write:false});
                                    createState('javascript.0.Denon.OSD.OSD_Info_List1', 'init',{type: "string", role: "Onscreen Display Info List01",write:false});
                                    createState('javascript.0.Denon.OSD.OSD_Info_List2', 'init',{type: "string", role: "Onscreen Display Info List02",write:false});
                                    createState('javascript.0.Denon.OSD.OSD_Info_List3', 'init',{type: "string", role: "Onscreen Display Info List03",write:false});
                                    createState('javascript.0.Denon.OSD.OSD_Info_List4', 'init',{type: "string", role: "Onscreen Display Info List04",write:false});
                                    createState('javascript.0.Denon.OSD.OSD_Info_List5', 'init',{type: "string", role: "Onscreen Display Info List05",write:false});
                                    createState('javascript.0.Denon.OSD.OSD_Info_List6', 'init',{type: "string", role: "Onscreen Display Info List06",write:false});
                                    createState('javascript.0.Denon.OSD.OSD_Info_List7', 'init',{type: "string", role: "Onscreen Display Info List07",write:false});
                                    createState('javascript.0.Denon.OSD.OSD_Info_List8', 'init',{type: "string", role: "Onscreen Display Info List08",write:false});
                                    ! //Controls
                                    createState('javascript.0.Denon.Control.Play', false,{type:"boolean", role: "button"});
                                    createState('javascript.0.Denon.Control.Stop', false,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Control.Pause', false,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Control.Skip_Plus', false,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Control.Skip_Minus', false,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Control.Page_Next', false,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Control.Page_Previous', false,{type: "boolean", role: "button"});
                                    ! //Tuner Control
                                    createState('javascript.0.Denon.Tuner_Control.Frequency_UP', false,{type:"boolean", role: "button"});
                                    createState('javascript.0.Denon.Tuner_Control.Frequency_DOWN', false,{type:"boolean", role: "button"});
                                    createState('javascript.0.Denon.Tuner_Control.Preset_UP', false,{type:"boolean", role: "button"});
                                    createState('javascript.0.Denon.Tuner_Control.Preset_DOWN', false,{type:"boolean", role: "button"});
                                    createState('javascript.0.Denon.Tuner_Control.RDS_Station_Name', 'init',{type:"string", role: "RDS Station Name",write:false});
                                    ! //Zone_Main
                                    createState('javascript.0.Denon.Zone_Main.Power', false,{type: "boolean", role: "Power Status Zone Main"});
                                    createState('javascript.0.Denon.Zone_Main.Mute', false,{type: "boolean", role: "Mute Status"});
                                    createState('javascript.0.Denon.Zone_Main.Master_Volume', 0,{type: "number", role: "Master Volume"});
                                    createState('javascript.0.Denon.Zone_Main.Master_Volume_UP', false,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Zone_Main.Master_Volume_DOWN', false,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Zone_Main.Master_Volume_Max', 0,{type: "number", role: "Master Volume Max",write:false});
                                    createState('javascript.0.Denon.Zone_Main.Video_Input', 1,{type: "number", role: "Selected Video Input",
                                    states:"0:DVD;1:BD;2:TV;3:SAT/CBL;4:MPLAY;5:GAME;6:AUX1;7:AUX2;8:AUX3;9:AUX4;10:AUX5;11:AUX6;12:AUX7;13:CD"});
                                    createState('javascript.0.Denon.Zone_Main.Video_State', false,{type: "boolean", role: "Video ON/OFF"});
                                    createState('javascript.0.Denon.Zone_Main.Select_Input',5,{type: "number", role: "Select Input",
                                    states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                    createState('javascript.0.Denon.Zone_Main.Surround_Mode', 'init',{type: "string", role: "Surround Modus",write:false});
                                    createState('javascript.0.Denon.Zone_Main.Ratio_Mode', 'init',{type: "string", role: "Ratio Modus",write:false});
                                    createState('javascript.0.Denon.Zone_Main.Resolution', 'init',{type: "string", role: "Video Resolution",write:false});
                                    createState('javascript.0.Denon.Zone_Main.Sound_Parameter', 'init',{type: "string", role: "Sound_Parameter",write:false});
                                    createState('javascript.0.Denon.Zone_Main.HDMI_Monitor',0,{type: "number", role: "HDMI Monitor Out",states: "0:MONIAUTO;1:MONI1;2:MONI2"});
                                    ! //Zone 2
                                    createState('javascript.0.Denon.Zone_2.Power_Zone2', false,{type: "boolean", role: "Power Status Zone 2"});
                                    createState('javascript.0.Denon.Zone_2.Mute', false,{type: "boolean", role: "Mute Status Zone 2"});
                                    createState('javascript.0.Denon.Zone_2.Volume', 0,{type: "number", role: "Zone 2 Volume"});
                                    createState('javascript.0.Denon.Zone_2.Volume_UP', 0,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Zone_2.Volume_DOWN', 0,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Zone_2.Select_Input',5,{type: "number", role: "Select Input",
                                    states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                    ! //Zone 3
                                    createState('javascript.0.Denon.Zone_3.Power_Zone3', false,{type: "boolean", role: "Power Status Zone 3"});
                                    createState('javascript.0.Denon.Zone_3.Mute', false,{type: "boolean", role: "Mute Status Zone 3"});
                                    createState('javascript.0.Denon.Zone_3.Volume', 0,{type: "number", role: "Zone 3 Volume"});
                                    createState('javascript.0.Denon.Zone_3.Volume_UP', 0,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Zone_3.Volume_DOWN', 0,{type: "boolean", role: "button"});
                                    createState('javascript.0.Denon.Zone_3.Select_Input',5,{type: "number", role: "Select Input",
                                    states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                    ! // Variablen-------------------------------------------------------------------------
                                    var AVR_Command =['PW','MVMAX','MV','CV','MU','SI','ZM','SD','DC','SV','SLP','STBY','ECO','MS','VS','PS','PV','Z2','Z2MU','Z2CS','Z2CV','Z2HPF',
                                    'Z2PS','Z2HDS','Z2SLP','Z2STBY','Z3','Z3MU','Z3CS','Z3CV','Z3HPF','Z3PS','Z3SLP','Z3STBY','TFANNAME','NSET1','NSE','TR','DIM','NSFRN']; // räume den mist später auf 😉
                                    var t_request = 100; //beim ersten Start Funktion update aufrufen mit 100ms zwischen den Anfragen, maximal 50ms !
                                    var client;
                                    var PW_Request =0;
                                    ! setState('javascript.0.Denon.System.Verbunden',val=false,akt=false);
                                    checkIP(getState('javascript.0.Denon.System.IP_Adresse').val);
                                    ! function checkIP(IP){ //IP Adresse prüfen
                                    if(net.isIPv4(IP)){
                                    setTimeout(function () {
                                    client=Connect(IP);
                                    },2000);
                                    }
                                    else{console.error('ungültige IP Adresse')}
                                    }

                                    function Connect(IP){ // zu Server Verbinden

                                    ! var client = net.connect({host:IP, port:23});
                                    client.setKeepAlive(true,5000);

                                       console.log('Connectig...');
                                    
                                    client.on('error',function(error) {
                                        console.error(error);
                                        killClient(client);
                                    }); 
                                    
                                    client.on('connect', function () {          //Verbindung hergestellt
                                    console.log('Verbunden mit Denon AVR !');
                                     {setState('javascript.0.Denon.System.Verbunden',val=true,akt=true)}
                                      update(t_request); 
                                    });
                                    

                                    ! client.on('end', function () { //die Gegenseite hat die Verbindung geschlossen
                                    {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
                                    console.warn('Denon AVR hat die Verbindung geschlossen !');
                                    killClient(client);
                                    });

                                     client.on('data', function (data) {
                                         console.log(data.toString());
                                         response(data);
                                    
                                     });
                                    

                                    return client;
                                    }//end of Function Connect

                                    ! function killClient(client){
                                    {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
                                    client.destroy();
                                    client.unref();
                                    console.log('Connection closed !');
                                    }
                                    ! // Funktion Nachricht Senden----------------------------------------------------------
                                    function sendMessage(message) {
                                    if(getState('javascript.0.Denon.System.Verbunden').val===true){

                                    client.write(message+'\r');
                                    if (message=='PWON'||'ZMON'||'Z2ON'||'Z3ON'){PW_Request=1}
                                    console.log('Anfrage: '+ message );
                                    }
                                    

                                    }
                                    //Daten anfordern--------------------------------------------------------------------
                                    function update(Time){
                                    console.log('Update Start');
                                    var i_Pollen=0;
                                    var Request =['NSET1 ?','NSFRN ?','ZM?','MU?','PW?','SI?','SV?','MS?','MV?','Z2?','Z2MU?','Z3?','Z3MU?','NSE','VSSC ?','VSASP ?','VSMONI ?','TR?','DIM ?'];
                                    Intervall = setInterval(function () {

                                        sendMessage(Request[i_Pollen]);
                                    
                                        i_Pollen++;
                                    
                                            if (i_Pollen==Request.length){
                                                i_Pollen=0;
                                                clearInterval(Intervall);
                                            }
                                    
                                    }, Time);
                                    

                                    return true;
                                    }

                                    ! function StateText_toArray (StateNames){
                                    var StateName = StateNames.split(';');
                                    var StateArr=[];
                                    for(var i = 0; i < StateName.length; i++) {
                                    var ele = StateName[i].split(':');
                                    StateArr[ele[0]] = ele[1];
                                    }

                                    return StateArr;
                                    }

                                    ! // Daten empfangen------------------------------------------------------------------
                                    ! function response (data) {

                                    ! var AVR_Response=data.toString().replace(/[\n\r]/g, ''); // Steuerzeichen "CR" entfernen
                                    ! for (i = 0; i < AVR_Command.length; i++) {

                                        var search_index=AVR_Response.search(AVR_Command[i]);
                                    
                                        if (search_index===0){
                                            break;
                                        }
                                    
                                    }
                                    
                                    var id,val;
                                    
                                    switch(AVR_Command[i]){  
                                        case 'MU':
                                            // to Request MU?
                                            if (AVR_Response=='MUOFF'){setState("javascript.0.Denon.Zone_Main.Mute",false,akt=true)}
                                            if (AVR_Response=='MUON'){setState("javascript.0.Denon.Zone_Main.Mute",true,akt=true)}
                                           break;
                                    
                                        case 'PW':  
                                            // to Request PW?
                                           if (AVR_Response=='PWSTANDBY'){
                                               setState('javascript.0.Denon.System.Power_System',false,akt=true);
                                               setState('javascript.0.Denon.System.System_Ready',false,akt=true);
                                           }
                                           if (AVR_Response=='PWON'){
                                               if(PW_Request==1){
                                               setState('javascript.0.Denon.System.Power_System',true,akt=true);
                                               PW_Request++;
                                               }
                                               else if(PW_Request==2){
                                                   setState('javascript.0.Denon.System.System_Ready',true,akt=true);
                                                   PW_Request=0;
                                               }
                                    
                                           }
                                    
                                           break;
                                    
                                        case'Z2':
                                           if (AVR_Response=='Z2OFF'){setState('javascript.0.Denon.Zone_2.Power_Zone2',false,akt=true)}
                                           else if (AVR_Response=='Z2ON'){setState('javascript.0.Denon.Zone_2.Power_Zone2',true,akt=true)}
                                           else if (AVR_Response=='Z2MUON'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
                                           else if (AVR_Response=='Z2MUOFF'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
                                            else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
                                    
                                                setState("javascript.0.Denon.Zone_2.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
                                             else {
                                    
                                              AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                            id='javascript.0.Denon.Zone_2.Select_Input';
                                            val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                            if (val>=0){setState(id,val,akt=true);}
                                             }
                                            break;
                                    
                                        case'Z3':
                                           if (AVR_Response=='Z3OFF'){setState('javascript.0.Denon.Zone_3.Power_Zone3',false,akt=true)}
                                           else if (AVR_Response=='Z3ON'){setState('javascript.0.Denon.Zone_3.Power_Zone3',true,akt=true)}
                                           else if (AVR_Response=='Z3MUON'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
                                           else if (AVR_Response=='Z3MUOFF'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
                                            else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
                                    
                                                setState("javascript.0.Denon.Zone_3.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
                                             else {
                                    
                                              AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                            id='javascript.0.Denon.Zone_3.Select_Input';
                                            val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                            if (val>=0){setState(id,val,akt=true);}
                                             }
                                            break;    
                                    
                                        case 'MV':
                                            // to Request MV?
                                            AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                            if (AVR_Response.length<3){AVR_Response=AVR_Response+'0'}
                                            AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
                                           setState("javascript.0.Denon.Zone_Main.Master_Volume",parseFloat(AVR_Response),akt=true);
                                    
                                           break;
                                    
                                         case 'MVMAX':
                                            AVR_Response=AVR_Response.slice(6,AVR_Response.length);
                                            AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
                                           setState("javascript.0.Denon.Zone_Main.Master_Volume_Max",parseFloat(AVR_Response),akt=true);
                                           break;  
                                    
                                        case 'SV': 
                                            // to Request SV?
                                            if (AVR_Response=='SVOFF'){setState("javascript.0.Denon.Zone_Main.Video_State",false,akt=true)}
                                            else if (AVR_Response=='SVON'){setState("javascript.0.Denon.Zone_Main.Video_State",true,akt=true)}
                                            else {
                                    
                                            AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                            id = 'javascript.0.Denon.Zone_Main.Video_Input';
                                            val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response); //suche in array nach element
                                    
                                            setState(id,val,akt=true);
                                            }
                                           break;
                                    
                                        case 'SI':
                                            // to Request SI?
                                            AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                            id='javascript.0.Denon.Zone_Main.Select_Input';
                                            val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                    
                                            setState(id,val,akt=true);
                                           break;  
                                    
                                        case 'ZM':
                                            // to Request ZM?
                                            if (AVR_Response=='ZMOFF'){setState('javascript.0.Denon.Zone_Main.Power',false,akt=true)}
                                            if (AVR_Response=='ZMON'){setState('javascript.0.Denon.Zone_Main.Power',true,akt=true)}
                                           break;
                                    
                                        case 'MS':
                                            // to Request MS? 
                                            AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                            setState("javascript.0.Denon.Zone_Main.Surround_Mode",AVR_Response,akt=true);
                                           break;
                                    
                                        case 'VS':
                                    
                                            // to Request VSASP ?
                                            id = "javascript.0.Denon.Zone_Main.Ratio_Mode";
                                            if (AVR_Response=='VSASPFUL'){setState(id,'16:9',akt=true)}
                                            else if (AVR_Response=='VSASPNRM'){setState(id,'4:3',akt=true)}
                                    
                                            // to Request VSSC ?
                                            id = "javascript.0.Denon.Zone_Main.Resolution";
                                            if (AVR_Response=='VSSC48P'){setState(id,'480p/576p',akt=true)}
                                            else if (AVR_Response=='VSSC10I'){setState(id,'1080i',akt=true)}
                                            else if (AVR_Response=='VSSC72P'){setState(id,'720p',akt=true)}
                                            else if (AVR_Response=='VSSC10P'){setState(id,'1080p',akt=true)}
                                            else if (AVR_Response=='VSSC10P24'){setState(id,'1080p:24Hz',akt=true)}
                                            else if (AVR_Response=='VSSC4K'){setState(id,'4K',akt=true)}
                                            else if (AVR_Response=='VSSC4KF'){setState(id,'4K 60/50Hz',akt=true)}
                                            else if (AVR_Response=='VSSCAUTO'){setState(id,'AUTO',akt=true)}
                                    
                                            //to Request MONI ? 
                                            id='javascript.0.Denon.Zone_Main.HDMI_Monitor';
                                             if (AVR_Response=='VSMONIAUTO'){setState(id,0,akt=true)}
                                             else if (AVR_Response=='VSMONI1'){setState(id,1,akt=true)}
                                             else if (AVR_Response=='VSMONI2'){setState(id,2,akt=true)}
                                           break; 
                                    
                                        case 'PS':
                                    
                                            // to Request PSMODE: ?
                                            setState("javascript.0.Denon.Zone_Main.Sound_Parameter",AVR_Response.slice(7,AVR_Response.length),akt=true);
                                            break;
                                    
                                        case 'NSE':
                                    
                                              // to Request NSE  // Achtung ohne ? 
                                            id='javascript.0.Denon.OSD.OSD_Info_List'+AVR_Response.slice(3, 4);
                                    
                                            if (getState(id)) {             //prüfen ob State vorhanden ist
                                            setState (id,AVR_Response=AVR_Response.slice(4,AVR_Response.length),akt=true);
                                            }
                                    
                                            break;
                                    
                                        case 'TR':
                                    
                                            if (AVR_Response=='TR1 OFF'){setState('javascript.0.Denon.System.Trigger_1',false,akt=true)}
                                            else if (AVR_Response=='TR1 ON'){setState('javascript.0.Denon.System.Trigger_1',true,akt=true)}
                                            else if (AVR_Response=='TR2 OFF'){setState('javascript.0.Denon.System.Trigger_2',false,akt=true)}
                                            else if (AVR_Response=='TR2 ON'){setState('javascript.0.Denon.System.Trigger_2',true,akt=true)}
                                            break;
                                    
                                        case 'DIM':
                                             AVR_Response=AVR_Response.slice(4,AVR_Response.length);
                                            id='javascript.0.Denon.System.Display_Dimmer';
                                            val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                    
                                            setState(id,val,akt=true);
                                    
                                            break;
                                    
                                        case 'TFANNAME':
                                             setState('javascript.0.Denon.Tuner_Control.RDS_Station_Name',val=AVR_Response.slice(8,AVR_Response.length),akt=true);
                                            break;
                                    
                                        case 'NSET1':
                                            if (AVR_Response.slice(5,8)=='IPA'){
                                                var IPstring=AVR_Response.slice(9,AVR_Response.length);
                                                if(IPstring[12]=='0'){
                                                IPstring=IPstring.substr(0, 12) + '' + IPstring.substr(13,14);
                                                }
                                    

                                    ! setState('javascript.0.Denon.System.IP_Adresse',val=IPstring,akt=true);

                                            }
                                            break;    
                                    
                                        case 'NSFRN': 
                                            setState('javascript.0.Denon.System.Name',val=AVR_Response.slice(5,AVR_Response.length),akt=true);
                                            break;
                                    
                                        default:
                                            //console.log('häääää????');
                                    }
                                    

                                    }

                                    //--------------------------------------------------------------------------------------
                                    on('javascript.0.Denon.System.IP_Adresse', function (obj){
                                    if(getState('javascript.0.Denon.System.Verbunden').val===true){

                                    killClient(client);
                                       checkIP(obj.state.val);
                                    }
                                    else{checkIP(obj.state.val)}
                                    

                                    });

                                    ! on({id:'javascript.0.Denon.System.UPDATE',val:true}, function (obj){

                                       update(t_request);
                                    

                                    });

                                    ! on({id:"javascript.0.Denon.System.Command",change:"any"}, function (obj){sendMessage(obj.state.val+'')});
                                    ! on("javascript.0.Denon.System.Power_System", function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val){
                                    sendMessage('PWON');
                                    }
                                    else{sendMessage('PWOFF')}
                                    }
                                    });
                                    ! on('javascript.0.Denon.Zone_Main.Power', function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val){
                                    sendMessage('ZMON');
                                    }
                                    else{sendMessage('ZMOFF')}
                                    }
                                    });
                                    ! on('javascript.0.Denon.Zone_2.Power_Zone2', function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val){sendMessage('Z2ON')}
                                    else{sendMessage('Z2OFF')}
                                    }
                                    });
                                    ! on('javascript.0.Denon.Zone_3.Power_Zone3', function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val){sendMessage('Z3ON')}
                                    else{sendMessage('Z3OFF')}
                                    }
                                    });
                                    ! on("javascript.0.Denon.Zone_Main.Mute", function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val){sendMessage('MUON')}
                                    else{sendMessage('MUOFF')}
                                    }
                                    });
                                    ! on("javascript.0.Denon.Zone_2.Mute", function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val){sendMessage('Z2MUON')}
                                    else{sendMessage('Z2MUOFF')}
                                    }
                                    });
                                    ! on("javascript.0.Denon.Zone_3.Mute", function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val){sendMessage('Z3MUON')}
                                    else{sendMessage('Z3MUOFF')}
                                    }
                                    });
                                    ! on("javascript.0.Denon.Zone_Main.Master_Volume", function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('MV'+obj.state.val+'');
                                    }
                                    });
                                    ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_UP",val:true}, function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('MVUP'+'');
                                    }
                                    });
                                    ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_DOWN",val:true}, function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('MVDOWN'+'');
                                    }
                                    });
                                    ! on("javascript.0.Denon.Zone_2.Volume", function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('Z2'+obj.state.val+'');
                                    }
                                    });
                                    ! on({id:"javascript.0.Denon.Zone_2.Volume_UP",val:true}, function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('Z2UP'+'');
                                    }
                                    });
                                    ! on({id:"javascript.0.Denon.Zone_2.Volume_DOWN",val:true}, function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('Z2DOWN'+'');
                                    }
                                    });
                                    ! on("javascript.0.Denon.Zone_3.Volume", function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('Z3'+obj.state.val+'');
                                    }
                                    });
                                    ! on({id:"javascript.0.Denon.Zone_3.Volume_UP",val:true}, function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('Z3UP'+'');
                                    }
                                    });
                                    ! on({id:"javascript.0.Denon.Zone_3.Volume_DOWN",val:true}, function (obj){
                                    if (!obj.state.ack) {
                                    sendMessage('Z3DOWN'+'');
                                    }
                                    });
                                    ! on({id:"javascript.0.Denon.Control.Play",vla:true}, function (obj){
                                    if (obj.state.val===true){sendMessage('NS9A')}
                                    });
                                    ! on({id:"javascript.0.Denon.Control.Stop",val:true}, function (obj){
                                    sendMessage('NS9C')
                                    });
                                    ! on({id:"javascript.0.Denon.Control.Pause",val:true}, function (obj){
                                    //if (obj.state.val===true){sendMessage('NS9B')}
                                    sendMessage('NS9B');
                                    });
                                    ! on({id:"javascript.0.Denon.Control.Skip_Plus",val:true}, function (obj){
                                    sendMessage('NS9D')
                                    });
                                    ! on({id:"javascript.0.Denon.Control.Skip_Minus",val:true}, function (obj){
                                    sendMessage('NS9E')
                                    });
                                    ! on({id:"javascript.0.Denon.Control.Page_Next",val:true}, function (obj){
                                    sendMessage('NS9X')
                                    });
                                    ! on({id:"javascript.0.Denon.Control.Page_Previous",val:true}, function (obj){
                                    sendMessage('NS9Y')
                                    });
                                    ! on('javascript.0.Denon.Zone_Main.Select_Input', function (obj){
                                    if (!obj.state.ack) {
                                    if(obj.state.val>=0){
                                    sendMessage('SI'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                    }
                                    }
                                    });
                                    ! on('javascript.0.Denon.Zone_2.Select_Input', function (obj){
                                    if (!obj.state.ack) {
                                    if(obj.state.val>=0){
                                    sendMessage('Z2'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                    }
                                    }
                                    });
                                    ! on('javascript.0.Denon.Zone_3.Select_Input', function (obj){
                                    if (!obj.state.ack) {
                                    if(obj.state.val>=0){
                                    sendMessage('Z3'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                    }
                                    }
                                    });
                                    ! on('javascript.0.Denon.Zone_Main.Video_Input', function (obj){
                                    if (!obj.state.ack) {
                                    if(obj.state.val>=0){
                                    sendMessage('SV'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                    }
                                    }
                                    });
                                    ! on('javascript.0.Denon.Zone_Main.Video_State', function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val===true){sendMessage('SVON')}
                                    else{sendMessage('SVOFF')}
                                    }
                                    });
                                    ! on('javascript.0.Denon.Zone_Main.HDMI_Monitor', function (obj){
                                    if (!obj.state.ack) {
                                    if(obj.state.val>=0){
                                    sendMessage('VS'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                    }
                                    }
                                    });
                                    ! on("javascript.0.Denon.System.Trigger_1", function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val===true){sendMessage('TR1 ON')}
                                    else{sendMessage('TR1 OFF')}
                                    }
                                    });
                                    ! on("javascript.0.Denon.System.Trigger_2", function (obj){
                                    if (!obj.state.ack) {
                                    if (obj.state.val===true){sendMessage('TR2 ON')}
                                    else{sendMessage('TR2 OFF')}
                                    }
                                    });
                                    ! on('javascript.0.Denon.System.Display_Dimmer', function (obj){
                                    if (!obj.state.ack) {
                                    if(obj.state.val>=0){
                                    sendMessage('DIM '+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                    }
                                    }
                                    });
                                    ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_UP',val:true}, function (obj){sendMessage('TFANUP')});
                                    ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_DOWN',val:true}, function (obj){sendMessage('TFANDOWN')});
                                    ! on({id:'javascript.0.Denon.Tuner_Control.Preset_UP',val:true}, function (obj){sendMessage('TPANUP')});
                                    ! on({id:'javascript.0.Denon.Tuner_Control.Preset_DOWN',val:true}, function (obj){sendMessage('TPANDOWN')});
                                    ! //---------------------------------------------------------------------------------------
                                    ! // close connection if script stopped-------------------------------------------------
                                    onStop(function () {
                                    if(getState('javascript.0.Denon.System.Verbunden').val===true){killClient(client)};
                                    }, 2000 /ms/);` [/i][/i][/i]

                                    1 Reply Last reply Reply Quote 0
                                    • K
                                      Kueppert last edited by

                                      Hi Lucky, danke dir für das Script. Werde es mit meinem Denon 1300 Mal testen. Kannst du hier vielleicht einen Screen Posten von deiner"Fernbedienung" und evtl auch die Codes zu den Widgets die du für den Denon nutzt?

                                      Danke dir und Grüße, Thorsten

                                      Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        Kueppert last edited by

                                        @Lucky:

                                        so, die vorerst letzte änderung:

                                        Schönheitsfehler behoben

                                        neue Funktionen: 1: Systemname wird jetzt vom Gerät abgerufen 2: es wird angezeit wann der AVR '' fertig gebootet'' hat, also wenn es "klick" gemacht hat (das ist wichtig wenn man z.b. mit Alexa steuern will, denn erst wenn der AVR vollständig hochgefahren ist, werden die kommandos richtig umgesetzt!)

                                        ! ```
                                        `//Kontakt: s-nolte@htp-tel.de
                                        //ioBroker Forum: Lucky
                                        var net = require('net');
                                        ! // System
                                        createState('javascript.0.Denon.System.UPDATE', false,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.System.Power_System', false,{type: "boolean", role: "Power System"});
                                        createState('javascript.0.Denon.System.System_Ready', false,{type: "boolean", role: "System Ready",write:false});
                                        createState('javascript.0.Denon.System.IP_Adresse', '000.000.000.000',{type: "string", role: "AVR IP Adresse"});
                                        createState('javascript.0.Denon.System.Trigger_1', false,{type: "boolean", role: "Trigger 1"});
                                        createState('javascript.0.Denon.System.Trigger_2', false,{type: "boolean", role: "Trigger 2"});
                                        createState('javascript.0.Denon.System.Command', '',{type: "string", role: "Command to AVR"});
                                        createState('javascript.0.Denon.System.Display_Dimmer',0,{type: "number", role: "FL Display Dimmer",states: "0:BRI;1:DIM;2:DAR;3:OFF"});
                                        createState('javascript.0.Denon.System.Verbunden',false,{type: "boolean", role: "Verbindung hergestellt",write:false});
                                        createState('javascript.0.Denon.System.Name',{type: "string", role: "Netzwerk-Name",write:false});
                                        ! //OSD
                                        createState('javascript.0.Denon.OSD.OSD_Info_List0', 'init',{type: "string", role: "Onscreen Display Info List00",write:false});
                                        createState('javascript.0.Denon.OSD.OSD_Info_List1', 'init',{type: "string", role: "Onscreen Display Info List01",write:false});
                                        createState('javascript.0.Denon.OSD.OSD_Info_List2', 'init',{type: "string", role: "Onscreen Display Info List02",write:false});
                                        createState('javascript.0.Denon.OSD.OSD_Info_List3', 'init',{type: "string", role: "Onscreen Display Info List03",write:false});
                                        createState('javascript.0.Denon.OSD.OSD_Info_List4', 'init',{type: "string", role: "Onscreen Display Info List04",write:false});
                                        createState('javascript.0.Denon.OSD.OSD_Info_List5', 'init',{type: "string", role: "Onscreen Display Info List05",write:false});
                                        createState('javascript.0.Denon.OSD.OSD_Info_List6', 'init',{type: "string", role: "Onscreen Display Info List06",write:false});
                                        createState('javascript.0.Denon.OSD.OSD_Info_List7', 'init',{type: "string", role: "Onscreen Display Info List07",write:false});
                                        createState('javascript.0.Denon.OSD.OSD_Info_List8', 'init',{type: "string", role: "Onscreen Display Info List08",write:false});
                                        ! //Controls
                                        createState('javascript.0.Denon.Control.Play', false,{type:"boolean", role: "button"});
                                        createState('javascript.0.Denon.Control.Stop', false,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Control.Pause', false,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Control.Skip_Plus', false,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Control.Skip_Minus', false,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Control.Page_Next', false,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Control.Page_Previous', false,{type: "boolean", role: "button"});
                                        ! //Tuner Control
                                        createState('javascript.0.Denon.Tuner_Control.Frequency_UP', false,{type:"boolean", role: "button"});
                                        createState('javascript.0.Denon.Tuner_Control.Frequency_DOWN', false,{type:"boolean", role: "button"});
                                        createState('javascript.0.Denon.Tuner_Control.Preset_UP', false,{type:"boolean", role: "button"});
                                        createState('javascript.0.Denon.Tuner_Control.Preset_DOWN', false,{type:"boolean", role: "button"});
                                        createState('javascript.0.Denon.Tuner_Control.RDS_Station_Name', 'init',{type:"string", role: "RDS Station Name",write:false});
                                        ! //Zone_Main
                                        createState('javascript.0.Denon.Zone_Main.Power', false,{type: "boolean", role: "Power Status Zone Main"});
                                        createState('javascript.0.Denon.Zone_Main.Mute', false,{type: "boolean", role: "Mute Status"});
                                        createState('javascript.0.Denon.Zone_Main.Master_Volume', 0,{type: "number", role: "Master Volume"});
                                        createState('javascript.0.Denon.Zone_Main.Master_Volume_UP', false,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Zone_Main.Master_Volume_DOWN', false,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Zone_Main.Master_Volume_Max', 0,{type: "number", role: "Master Volume Max",write:false});
                                        createState('javascript.0.Denon.Zone_Main.Video_Input', 1,{type: "number", role: "Selected Video Input",
                                        states:"0:DVD;1:BD;2:TV;3:SAT/CBL;4:MPLAY;5:GAME;6:AUX1;7:AUX2;8:AUX3;9:AUX4;10:AUX5;11:AUX6;12:AUX7;13:CD"});
                                        createState('javascript.0.Denon.Zone_Main.Video_State', false,{type: "boolean", role: "Video ON/OFF"});
                                        createState('javascript.0.Denon.Zone_Main.Select_Input',5,{type: "number", role: "Select Input",
                                        states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                        createState('javascript.0.Denon.Zone_Main.Surround_Mode', 'init',{type: "string", role: "Surround Modus",write:false});
                                        createState('javascript.0.Denon.Zone_Main.Ratio_Mode', 'init',{type: "string", role: "Ratio Modus",write:false});
                                        createState('javascript.0.Denon.Zone_Main.Resolution', 'init',{type: "string", role: "Video Resolution",write:false});
                                        createState('javascript.0.Denon.Zone_Main.Sound_Parameter', 'init',{type: "string", role: "Sound_Parameter",write:false});
                                        createState('javascript.0.Denon.Zone_Main.HDMI_Monitor',0,{type: "number", role: "HDMI Monitor Out",states: "0:MONIAUTO;1:MONI1;2:MONI2"});
                                        ! //Zone 2
                                        createState('javascript.0.Denon.Zone_2.Power_Zone2', false,{type: "boolean", role: "Power Status Zone 2"});
                                        createState('javascript.0.Denon.Zone_2.Mute', false,{type: "boolean", role: "Mute Status Zone 2"});
                                        createState('javascript.0.Denon.Zone_2.Volume', 0,{type: "number", role: "Zone 2 Volume"});
                                        createState('javascript.0.Denon.Zone_2.Volume_UP', 0,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Zone_2.Volume_DOWN', 0,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Zone_2.Select_Input',5,{type: "number", role: "Select Input",
                                        states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                        ! //Zone 3
                                        createState('javascript.0.Denon.Zone_3.Power_Zone3', false,{type: "boolean", role: "Power Status Zone 3"});
                                        createState('javascript.0.Denon.Zone_3.Mute', false,{type: "boolean", role: "Mute Status Zone 3"});
                                        createState('javascript.0.Denon.Zone_3.Volume', 0,{type: "number", role: "Zone 3 Volume"});
                                        createState('javascript.0.Denon.Zone_3.Volume_UP', 0,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Zone_3.Volume_DOWN', 0,{type: "boolean", role: "button"});
                                        createState('javascript.0.Denon.Zone_3.Select_Input',5,{type: "number", role: "Select Input",
                                        states: "0:PHONO;1:CD;2:TUNER;3:DVD;4:BD;5:TV;6:SAT/CBL;7:MPLAY;8:GAME;9:NET;10:SPATIFY;11:LASTFM;12:IRADIO;13:SERVER;14:FAVOTITES;15:AUX1;16:AUX2;17:AUX3;18:AUX4;19:AUX5;20:AUX6;21:AUX7"});
                                        ! // Variablen-------------------------------------------------------------------------
                                        var AVR_Command =['PW','MVMAX','MV','CV','MU','SI','ZM','SD','DC','SV','SLP','STBY','ECO','MS','VS','PS','PV','Z2','Z2MU','Z2CS','Z2CV','Z2HPF',
                                        'Z2PS','Z2HDS','Z2SLP','Z2STBY','Z3','Z3MU','Z3CS','Z3CV','Z3HPF','Z3PS','Z3SLP','Z3STBY','TFANNAME','NSET1','NSE','TR','DIM','NSFRN']; // räume den mist später auf 😉
                                        var t_request = 100; //beim ersten Start Funktion update aufrufen mit 100ms zwischen den Anfragen, maximal 50ms !
                                        var client;
                                        var PW_Request =0;
                                        ! setState('javascript.0.Denon.System.Verbunden',val=false,akt=false);
                                        checkIP(getState('javascript.0.Denon.System.IP_Adresse').val);
                                        ! function checkIP(IP){ //IP Adresse prüfen
                                        if(net.isIPv4(IP)){
                                        setTimeout(function () {
                                        client=Connect(IP);
                                        },2000);
                                        }
                                        else{console.error('ungültige IP Adresse')}
                                        }

                                        function Connect(IP){ // zu Server Verbinden

                                        ! var client = net.connect({host:IP, port:23});
                                        client.setKeepAlive(true,5000);

                                           console.log('Connectig...');
                                           
                                        client.on('error',function(error) {
                                            console.error(error);
                                            killClient(client);
                                        }); 
                                        
                                        client.on('connect', function () {          //Verbindung hergestellt
                                        console.log('Verbunden mit Denon AVR !');
                                         {setState('javascript.0.Denon.System.Verbunden',val=true,akt=true)}
                                          update(t_request); 
                                        });
                                        

                                        ! client.on('end', function () { //die Gegenseite hat die Verbindung geschlossen
                                        {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
                                        console.warn('Denon AVR hat die Verbindung geschlossen !');
                                        killClient(client);
                                        });

                                         client.on('data', function (data) {
                                             console.log(data.toString());
                                             response(data);
                                             
                                         });
                                        

                                        return client;
                                        }//end of Function Connect

                                        ! function killClient(client){
                                        {setState('javascript.0.Denon.System.Verbunden',val=false,akt=true)}
                                        client.destroy();
                                        client.unref();
                                        console.log('Connection closed !');
                                        }
                                        ! // Funktion Nachricht Senden----------------------------------------------------------
                                        function sendMessage(message) {
                                        if(getState('javascript.0.Denon.System.Verbunden').val===true){

                                        client.write(message+'\r');
                                        if (message=='PWON'||'ZMON'||'Z2ON'||'Z3ON'){PW_Request=1}
                                        console.log('Anfrage: '+ message );
                                        }
                                        

                                        }
                                        //Daten anfordern--------------------------------------------------------------------
                                        function update(Time){
                                        console.log('Update Start');
                                        var i_Pollen=0;
                                        var Request =['NSET1 ?','NSFRN ?','ZM?','MU?','PW?','SI?','SV?','MS?','MV?','Z2?','Z2MU?','Z3?','Z3MU?','NSE','VSSC ?','VSASP ?','VSMONI ?','TR?','DIM ?'];
                                        Intervall = setInterval(function () {

                                            sendMessage(Request[i_Pollen]);
                                            
                                            i_Pollen++;
                                                
                                                if (i_Pollen==Request.length){
                                                    i_Pollen=0;
                                                    clearInterval(Intervall);
                                                }
                                            
                                        }, Time);
                                        

                                        return true;
                                        }

                                        ! function StateText_toArray (StateNames){
                                        var StateName = StateNames.split(';');
                                        var StateArr=[];
                                        for(var i = 0; i < StateName.length; i++) {
                                        var ele = StateName[i].split(':');
                                        StateArr[ele[0]] = ele[1];
                                        }

                                        return StateArr;
                                        }

                                        ! // Daten empfangen------------------------------------------------------------------
                                        ! function response (data) {

                                        ! var AVR_Response=data.toString().replace(/[\n\r]/g, ''); // Steuerzeichen "CR" entfernen
                                        ! for (i = 0; i < AVR_Command.length; i++) {

                                            var search_index=AVR_Response.search(AVR_Command[i]);
                                            
                                            if (search_index===0){
                                                break;
                                            }
                                            
                                        }
                                        
                                        var id,val;
                                        
                                        switch(AVR_Command[i]){  
                                            case 'MU':
                                                // to Request MU?
                                                if (AVR_Response=='MUOFF'){setState("javascript.0.Denon.Zone_Main.Mute",false,akt=true)}
                                                if (AVR_Response=='MUON'){setState("javascript.0.Denon.Zone_Main.Mute",true,akt=true)}
                                               break;
                                               
                                            case 'PW':  
                                                // to Request PW?
                                               if (AVR_Response=='PWSTANDBY'){
                                                   setState('javascript.0.Denon.System.Power_System',false,akt=true);
                                                   setState('javascript.0.Denon.System.System_Ready',false,akt=true);
                                               }
                                               if (AVR_Response=='PWON'){
                                                   if(PW_Request==1){
                                                   setState('javascript.0.Denon.System.Power_System',true,akt=true);
                                                   PW_Request++;
                                                   }
                                                   else if(PW_Request==2){
                                                       setState('javascript.0.Denon.System.System_Ready',true,akt=true);
                                                       PW_Request=0;
                                                   }
                                                   
                                               }
                                              
                                               break;
                                               
                                               
                                            case'Z2':
                                               if (AVR_Response=='Z2OFF'){setState('javascript.0.Denon.Zone_2.Power_Zone2',false,akt=true)}
                                               else if (AVR_Response=='Z2ON'){setState('javascript.0.Denon.Zone_2.Power_Zone2',true,akt=true)}
                                               else if (AVR_Response=='Z2MUON'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
                                               else if (AVR_Response=='Z2MUOFF'){setState('javascript.0.Denon.Zone_2.Mute',true,akt=true)}
                                                else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
                                                    
                                                    setState("javascript.0.Denon.Zone_2.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
                                                 else {
                                                
                                                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                id='javascript.0.Denon.Zone_2.Select_Input';
                                                val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                                if (val>=0){setState(id,val,akt=true);}
                                                 }
                                                break;
                                                
                                            case'Z3':
                                               if (AVR_Response=='Z3OFF'){setState('javascript.0.Denon.Zone_3.Power_Zone3',false,akt=true)}
                                               else if (AVR_Response=='Z3ON'){setState('javascript.0.Denon.Zone_3.Power_Zone3',true,akt=true)}
                                               else if (AVR_Response=='Z3MUON'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
                                               else if (AVR_Response=='Z3MUOFF'){setState('javascript.0.Denon.Zone_3.Mute',true,akt=true)}
                                                else if (true !==isNaN(parseInt(AVR_Response.slice(2,4)))){
                                                   
                                                    setState("javascript.0.Denon.Zone_3.Volume",parseFloat(AVR_Response.slice(2,4)),akt=true)}
                                                 else {
                                                
                                                  AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                id='javascript.0.Denon.Zone_3.Select_Input';
                                                val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                                if (val>=0){setState(id,val,akt=true);}
                                                 }
                                                break;    
                                            
                                            case 'MV':
                                                // to Request MV?
                                                AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                if (AVR_Response.length<3){AVR_Response=AVR_Response+'0'}
                                                AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
                                               setState("javascript.0.Denon.Zone_Main.Master_Volume",parseFloat(AVR_Response),akt=true);
                                                
                                               break;
                                               
                                             case 'MVMAX':
                                                AVR_Response=AVR_Response.slice(6,AVR_Response.length);
                                                AVR_Response=AVR_Response.slice(0, 2)+'.'+AVR_Response.slice(2, 3);
                                               setState("javascript.0.Denon.Zone_Main.Master_Volume_Max",parseFloat(AVR_Response),akt=true);
                                               break;  
                                               
                                            case 'SV': 
                                                // to Request SV?
                                                if (AVR_Response=='SVOFF'){setState("javascript.0.Denon.Zone_Main.Video_State",false,akt=true)}
                                                else if (AVR_Response=='SVON'){setState("javascript.0.Denon.Zone_Main.Video_State",true,akt=true)}
                                                else {
                                                
                                                AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                id = 'javascript.0.Denon.Zone_Main.Video_Input';
                                                val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response); //suche in array nach element
                                                
                                                setState(id,val,akt=true);
                                                }
                                               break;
                                               
                                            case 'SI':
                                                // to Request SI?
                                                AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                id='javascript.0.Denon.Zone_Main.Select_Input';
                                                val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                                
                                                setState(id,val,akt=true);
                                               break;  
                                               
                                            case 'ZM':
                                                // to Request ZM?
                                                if (AVR_Response=='ZMOFF'){setState('javascript.0.Denon.Zone_Main.Power',false,akt=true)}
                                                if (AVR_Response=='ZMON'){setState('javascript.0.Denon.Zone_Main.Power',true,akt=true)}
                                               break;
                                               
                                            case 'MS':
                                                // to Request MS? 
                                                AVR_Response=AVR_Response.slice(2,AVR_Response.length);
                                                setState("javascript.0.Denon.Zone_Main.Surround_Mode",AVR_Response,akt=true);
                                               break;
                                               
                                            case 'VS':
                                                
                                                // to Request VSASP ?
                                                id = "javascript.0.Denon.Zone_Main.Ratio_Mode";
                                                if (AVR_Response=='VSASPFUL'){setState(id,'16:9',akt=true)}
                                                else if (AVR_Response=='VSASPNRM'){setState(id,'4:3',akt=true)}
                                                
                                                // to Request VSSC ?
                                                id = "javascript.0.Denon.Zone_Main.Resolution";
                                                if (AVR_Response=='VSSC48P'){setState(id,'480p/576p',akt=true)}
                                                else if (AVR_Response=='VSSC10I'){setState(id,'1080i',akt=true)}
                                                else if (AVR_Response=='VSSC72P'){setState(id,'720p',akt=true)}
                                                else if (AVR_Response=='VSSC10P'){setState(id,'1080p',akt=true)}
                                                else if (AVR_Response=='VSSC10P24'){setState(id,'1080p:24Hz',akt=true)}
                                                else if (AVR_Response=='VSSC4K'){setState(id,'4K',akt=true)}
                                                else if (AVR_Response=='VSSC4KF'){setState(id,'4K 60/50Hz',akt=true)}
                                                else if (AVR_Response=='VSSCAUTO'){setState(id,'AUTO',akt=true)}
                                                
                                                //to Request MONI ? 
                                                id='javascript.0.Denon.Zone_Main.HDMI_Monitor';
                                                 if (AVR_Response=='VSMONIAUTO'){setState(id,0,akt=true)}
                                                 else if (AVR_Response=='VSMONI1'){setState(id,1,akt=true)}
                                                 else if (AVR_Response=='VSMONI2'){setState(id,2,akt=true)}
                                               break; 
                                         
                                            case 'PS':
                                                
                                                // to Request PSMODE: ?
                                                setState("javascript.0.Denon.Zone_Main.Sound_Parameter",AVR_Response.slice(7,AVR_Response.length),akt=true);
                                                break;
                                                
                                            
                                            case 'NSE':
                                                
                                                  // to Request NSE  // Achtung ohne ? 
                                                id='javascript.0.Denon.OSD.OSD_Info_List'+AVR_Response.slice(3, 4);
                                                
                                                if (getState(id)) {             //prüfen ob State vorhanden ist
                                                setState (id,AVR_Response=AVR_Response.slice(4,AVR_Response.length),akt=true);
                                                }
                                              
                                                break;
                                                
                                            case 'TR':
                                                
                                                if (AVR_Response=='TR1 OFF'){setState('javascript.0.Denon.System.Trigger_1',false,akt=true)}
                                                else if (AVR_Response=='TR1 ON'){setState('javascript.0.Denon.System.Trigger_1',true,akt=true)}
                                                else if (AVR_Response=='TR2 OFF'){setState('javascript.0.Denon.System.Trigger_2',false,akt=true)}
                                                else if (AVR_Response=='TR2 ON'){setState('javascript.0.Denon.System.Trigger_2',true,akt=true)}
                                                break;
                                                
                                            case 'DIM':
                                                 AVR_Response=AVR_Response.slice(4,AVR_Response.length);
                                                id='javascript.0.Denon.System.Display_Dimmer';
                                                val=StateText_toArray(getObject(id).common.states).indexOf(AVR_Response);
                                                
                                                setState(id,val,akt=true);
                                                
                                                break;
                                            
                                            case 'TFANNAME':
                                                 setState('javascript.0.Denon.Tuner_Control.RDS_Station_Name',val=AVR_Response.slice(8,AVR_Response.length),akt=true);
                                                break;
                                                
                                            case 'NSET1':
                                                if (AVR_Response.slice(5,8)=='IPA'){
                                                    var IPstring=AVR_Response.slice(9,AVR_Response.length);
                                                    if(IPstring[12]=='0'){
                                                    IPstring=IPstring.substr(0, 12) + '' + IPstring.substr(13,14);
                                                    }
                                        

                                        ! setState('javascript.0.Denon.System.IP_Adresse',val=IPstring,akt=true);

                                                }
                                                break;    
                                            
                                            case 'NSFRN': 
                                                setState('javascript.0.Denon.System.Name',val=AVR_Response.slice(5,AVR_Response.length),akt=true);
                                                break;
                                                
                                            default:
                                                //console.log('häääää????');
                                        }
                                        

                                        }

                                        //--------------------------------------------------------------------------------------
                                        on('javascript.0.Denon.System.IP_Adresse', function (obj){
                                        if(getState('javascript.0.Denon.System.Verbunden').val===true){

                                        killClient(client);
                                           checkIP(obj.state.val);
                                        }
                                        else{checkIP(obj.state.val)}
                                        

                                        });

                                        ! on({id:'javascript.0.Denon.System.UPDATE',val:true}, function (obj){

                                           update(t_request);
                                        

                                        });

                                        ! on({id:"javascript.0.Denon.System.Command",change:"any"}, function (obj){sendMessage(obj.state.val+'')});
                                        ! on("javascript.0.Denon.System.Power_System", function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val){
                                        sendMessage('PWON');
                                        }
                                        else{sendMessage('PWOFF')}
                                        }
                                        });
                                        ! on('javascript.0.Denon.Zone_Main.Power', function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val){
                                        sendMessage('ZMON');
                                        }
                                        else{sendMessage('ZMOFF')}
                                        }
                                        });
                                        ! on('javascript.0.Denon.Zone_2.Power_Zone2', function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val){sendMessage('Z2ON')}
                                        else{sendMessage('Z2OFF')}
                                        }
                                        });
                                        ! on('javascript.0.Denon.Zone_3.Power_Zone3', function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val){sendMessage('Z3ON')}
                                        else{sendMessage('Z3OFF')}
                                        }
                                        });
                                        ! on("javascript.0.Denon.Zone_Main.Mute", function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val){sendMessage('MUON')}
                                        else{sendMessage('MUOFF')}
                                        }
                                        });
                                        ! on("javascript.0.Denon.Zone_2.Mute", function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val){sendMessage('Z2MUON')}
                                        else{sendMessage('Z2MUOFF')}
                                        }
                                        });
                                        ! on("javascript.0.Denon.Zone_3.Mute", function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val){sendMessage('Z3MUON')}
                                        else{sendMessage('Z3MUOFF')}
                                        }
                                        });
                                        ! on("javascript.0.Denon.Zone_Main.Master_Volume", function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('MV'+obj.state.val+'');
                                        }
                                        });
                                        ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_UP",val:true}, function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('MVUP'+'');
                                        }
                                        });
                                        ! on({id:"javascript.0.Denon.Zone_Main.Master_Volume_DOWN",val:true}, function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('MVDOWN'+'');
                                        }
                                        });
                                        ! on("javascript.0.Denon.Zone_2.Volume", function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('Z2'+obj.state.val+'');
                                        }
                                        });
                                        ! on({id:"javascript.0.Denon.Zone_2.Volume_UP",val:true}, function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('Z2UP'+'');
                                        }
                                        });
                                        ! on({id:"javascript.0.Denon.Zone_2.Volume_DOWN",val:true}, function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('Z2DOWN'+'');
                                        }
                                        });
                                        ! on("javascript.0.Denon.Zone_3.Volume", function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('Z3'+obj.state.val+'');
                                        }
                                        });
                                        ! on({id:"javascript.0.Denon.Zone_3.Volume_UP",val:true}, function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('Z3UP'+'');
                                        }
                                        });
                                        ! on({id:"javascript.0.Denon.Zone_3.Volume_DOWN",val:true}, function (obj){
                                        if (!obj.state.ack) {
                                        sendMessage('Z3DOWN'+'');
                                        }
                                        });
                                        ! on({id:"javascript.0.Denon.Control.Play",vla:true}, function (obj){
                                        if (obj.state.val===true){sendMessage('NS9A')}
                                        });
                                        ! on({id:"javascript.0.Denon.Control.Stop",val:true}, function (obj){
                                        sendMessage('NS9C')
                                        });
                                        ! on({id:"javascript.0.Denon.Control.Pause",val:true}, function (obj){
                                        //if (obj.state.val===true){sendMessage('NS9B')}
                                        sendMessage('NS9B');
                                        });
                                        ! on({id:"javascript.0.Denon.Control.Skip_Plus",val:true}, function (obj){
                                        sendMessage('NS9D')
                                        });
                                        ! on({id:"javascript.0.Denon.Control.Skip_Minus",val:true}, function (obj){
                                        sendMessage('NS9E')
                                        });
                                        ! on({id:"javascript.0.Denon.Control.Page_Next",val:true}, function (obj){
                                        sendMessage('NS9X')
                                        });
                                        ! on({id:"javascript.0.Denon.Control.Page_Previous",val:true}, function (obj){
                                        sendMessage('NS9Y')
                                        });
                                        ! on('javascript.0.Denon.Zone_Main.Select_Input', function (obj){
                                        if (!obj.state.ack) {
                                        if(obj.state.val>=0){
                                        sendMessage('SI'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                        }
                                        }
                                        });
                                        ! on('javascript.0.Denon.Zone_2.Select_Input', function (obj){
                                        if (!obj.state.ack) {
                                        if(obj.state.val>=0){
                                        sendMessage('Z2'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                        }
                                        }
                                        });
                                        ! on('javascript.0.Denon.Zone_3.Select_Input', function (obj){
                                        if (!obj.state.ack) {
                                        if(obj.state.val>=0){
                                        sendMessage('Z3'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                        }
                                        }
                                        });
                                        ! on('javascript.0.Denon.Zone_Main.Video_Input', function (obj){
                                        if (!obj.state.ack) {
                                        if(obj.state.val>=0){
                                        sendMessage('SV'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                        }
                                        }
                                        });
                                        ! on('javascript.0.Denon.Zone_Main.Video_State', function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val===true){sendMessage('SVON')}
                                        else{sendMessage('SVOFF')}
                                        }
                                        });
                                        ! on('javascript.0.Denon.Zone_Main.HDMI_Monitor', function (obj){
                                        if (!obj.state.ack) {
                                        if(obj.state.val>=0){
                                        sendMessage('VS'+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                        }
                                        }
                                        });
                                        ! on("javascript.0.Denon.System.Trigger_1", function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val===true){sendMessage('TR1 ON')}
                                        else{sendMessage('TR1 OFF')}
                                        }
                                        });
                                        ! on("javascript.0.Denon.System.Trigger_2", function (obj){
                                        if (!obj.state.ack) {
                                        if (obj.state.val===true){sendMessage('TR2 ON')}
                                        else{sendMessage('TR2 OFF')}
                                        }
                                        });
                                        ! on('javascript.0.Denon.System.Display_Dimmer', function (obj){
                                        if (!obj.state.ack) {
                                        if(obj.state.val>=0){
                                        sendMessage('DIM '+ StateText_toArray(obj.common.states)[obj.state.val].toUpperCase() );
                                        }
                                        }
                                        });
                                        ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_UP',val:true}, function (obj){sendMessage('TFANUP')});
                                        ! on({id:'javascript.0.Denon.Tuner_Control.Frequency_DOWN',val:true}, function (obj){sendMessage('TFANDOWN')});
                                        ! on({id:'javascript.0.Denon.Tuner_Control.Preset_UP',val:true}, function (obj){sendMessage('TPANUP')});
                                        ! on({id:'javascript.0.Denon.Tuner_Control.Preset_DOWN',val:true}, function (obj){sendMessage('TPANDOWN')});
                                        ! //---------------------------------------------------------------------------------------
                                        ! // close connection if script stopped-------------------------------------------------
                                        onStop(function () {
                                        if(getState('javascript.0.Denon.System.Verbunden').val===true){killClient(client)};
                                        }, 2000 /ms/);Muss das Thema noch einmal hoch holen. Lucky, magst du vielleicht einen Screen hochladen und ggf die Codes deiner Widgets? Wurde bestimmt auch anderen weiterhelfen... Danke dir schon einmal. ! VG kueppert ! Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk[/i][/i][/i] ```

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          djtale2003 last edited by

                                          @Lucky:

                                          !!!!!!!!Aktuelle Version im Post vom 21.06.2017, 22:28 !!!!!! `

                                          Hallo Zuzsammen. Wo finde ich diesen Post?

                                          Wie geht es dann weiter?

                                          Bin gerade total hilflos.

                                          1 Reply Last reply Reply Quote 0
                                          • Jey Cee
                                            Jey Cee Developer last edited by

                                            Wirklich? 3 Beiträge über deinem.

                                            Gesendet von Unterwegs

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            870
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            35
                                            141
                                            28118
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo