Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Vorlage] Denon Skript

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

[Vorlage] Denon Skript

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
141 Beiträge 35 Kommentatoren 32.5k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • H Offline
    H Offline
    holson
    schrieb am zuletzt editiert von
    #24

    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 Antwort Letzte Antwort
    0
    • L Offline
      L Offline
      Lucky
      schrieb am zuletzt editiert von
      #25

      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 Antwort Letzte Antwort
      0
      • H Offline
        H Offline
        holson
        schrieb am zuletzt editiert von
        #26

        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 Antwort Letzte Antwort
        0
        • L Offline
          L Offline
          Lucky
          schrieb am zuletzt editiert von
          #27

          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 Antwort Letzte Antwort
          0
          • J Offline
            J Offline
            jonnyb
            schrieb am zuletzt editiert von
            #28

            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 Antwort Letzte Antwort
            0
            • H Offline
              H Offline
              holson
              schrieb am zuletzt editiert von
              #29

              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 Antwort Letzte Antwort
              0
              • H Offline
                H Offline
                holson
                schrieb am zuletzt editiert von
                #30

                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 Antwort Letzte Antwort
                0
                • L Offline
                  L Offline
                  Lucky
                  schrieb am zuletzt editiert von
                  #31

                  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 Antwort Letzte Antwort
                  0
                  • L Offline
                    L Offline
                    Lucky
                    schrieb am zuletzt editiert von
                    #32

                    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 Antwort Letzte Antwort
                    0
                    • K Offline
                      K Offline
                      Kueppert
                      schrieb am zuletzt editiert von
                      #33

                      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

                      UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                      1 Antwort Letzte Antwort
                      0
                      • K Offline
                        K Offline
                        Kueppert
                        schrieb am zuletzt editiert von
                        #34

                        @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] ```

                        UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                        1 Antwort Letzte Antwort
                        0
                        • D Offline
                          D Offline
                          djtale2003
                          schrieb am zuletzt editiert von
                          #35

                          @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 Antwort Letzte Antwort
                          0
                          • Jey CeeJ Online
                            Jey CeeJ Online
                            Jey Cee
                            Developer
                            schrieb am zuletzt editiert von
                            #36

                            Wirklich? 3 Beiträge über deinem.

                            Gesendet von Unterwegs

                            Persönlicher Support
                            Spenden -> paypal.me/J3YC33

                            1 Antwort Letzte Antwort
                            0
                            • K Offline
                              K Offline
                              Kueppert
                              schrieb am zuletzt editiert von
                              #37

                              Hab das Script jetzt Mal bei mir in die Scripte über einen neuen Ordner Denon importiert und gestartet. Sieht gut aus. Musste nur die IP im Script eintragen und die Objekte sind da 🙂 jetzt noch die entstehenden Widgets in vis suchen und die Fernbedienung für den Denon wird gebaut. Top

                              Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                              UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                              1 Antwort Letzte Antwort
                              0
                              • K Offline
                                K Offline
                                Kueppert
                                schrieb am zuletzt editiert von
                                #38

                                Hi,

                                bin dabei meine Fernbedienung zu bauen. Kann mir jemand sagen, mit welchem Objekt ich den Receiver einschalte?? Aktuell versuche ich es mit dem Wiget "basic bulb" und der Objekt-ID "javascript.0.Denon.System.Power_System". Wert für ID = false ist dann false und Wert für ID = true habe ich true eingetragen. Aber das funktioniert nicht 😞

                                Danke euch und Grüße, Thorsten

                                UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                1 Antwort Letzte Antwort
                                0
                                • lobomauL Offline
                                  lobomauL Offline
                                  lobomau
                                  schrieb am zuletzt editiert von
                                  #39

                                  Ich möchte das Script auch mal testen. In welcher Zeile trage ich die IP des Denon ein?

                                  Host: NUC8i3 mit Proxmox:

                                  • ioBroker CT Debian 13, npm 10.9.3, nodejs 22.20.0
                                  • Slave: Pi4
                                  1 Antwort Letzte Antwort
                                  0
                                  • K Offline
                                    K Offline
                                    Kueppert
                                    schrieb am zuletzt editiert von
                                    #40

                                    In die Zeile wo die 12 nuller stehen 000.000.000.000

                                    Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                                    UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                    1 Antwort Letzte Antwort
                                    0
                                    • K Offline
                                      K Offline
                                      knopers1
                                      schrieb am zuletzt editiert von
                                      #41

                                      Hi,

                                      ich habe einen Denon-AVR-X1100-W.

                                      Die IP Adresse habe ich angepasst, ist auch statisch. Script ist unter common.

                                      createState('javascript.0.Denon.System.IP_Adresse', '192.168.001.051',{type: "string", role: "AVR IP Adresse"});
                                      

                                      Netzwerksteuerung ist EIN uns steht auf "immer"

                                      Beim Starten des Scriptes bekomme ich immer:

                                      17:44:54.405	[error]	javascript.0 script.js.common.DenonAVR: ungültige IP Adresse
                                      

                                      IP Adresse passt, ds ich über die IP auf die Weboberfläche komme.

                                      Hast Du eine Idee was da nicht stimmen könnte?
                                      1526_unbenannt.png
                                      1526_unbenannt1.png

                                      HP Microserver Gen8, RPI-4, IoBroker,

                                      1 Antwort Letzte Antwort
                                      0
                                      • K Offline
                                        K Offline
                                        Kueppert
                                        schrieb am zuletzt editiert von
                                        #42

                                        Hm, hat bei mir zumindest die Verbindung auf Anhieb funktioniert. Du musst meine ich die IP wird in deinem 2. Bild im Script eintragen, also nicht 192.168.1.1 sondern 192.168.001.001 (ist nur eine Beispiel IP)

                                        Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

                                        UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                        1 Antwort Letzte Antwort
                                        0
                                        • K Offline
                                          K Offline
                                          Kueppert
                                          schrieb am zuletzt editiert von
                                          #43

                                          Kleiner Tip für alle, die einen Denon 1200W nutzen:

                                          Im Script ist ein Fehler, daher kann man den Receiver nicht an oder ausschalten.

                                          Einfach folgenden Code:

                                                  else{sendMessage('PWOFF')}
                                          ````in Zeile 422 (gemäß Notepad) in
                                          
                                              else{sendMessage('PWSTANDBY')}
                                          
                                          
                                          Die Codes habe ich von folgender URL (verweist auf Denon_USA):
                                          
                                          [https://www.google.de/url?sa=t&amp;rct=j&amp;q= … SOoo6RRrWA](https://www.google.de/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=3&amp;ved=0ahUKEwisntPRxvrVAhWCVBQKHdfgDMIQFgg7MAI&amp;url=https%3A%2F%2Fusa.denon.com%2Fus%2Fproduct%2Fhometheater%2Freceivers%2Favr3808ci%3Fdocname%3DAVR-3808CISerialProtocol_Ver520a.pdf&amp;usg=AFQjCNHfUGmjlbRyMffC3GsaSOoo6RRrWA)
                                          
                                          Umgesetzt habe ich den Power-Button mit "Basic Bulp on/off"
                                          
                                          Habe mal mein Widget exportiert:
                                          
                                          >! [{"tpl":"tplBulbOnOffCtrl","data":{"oid":"javascript.0.Denon.System.Power_System","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","icon_off":"/vis.0/main/img/on.png","icon_on":"/vis.0/main/img/off.png","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"g_ccontrol":true,"oidTrueValue":"false","oidFalseValue":"true","min":"0"},"style":{"left":"1072px","top":"387px","z-index":"2","width":"90px","height":"90px","border-width":"4px","border-style":"solid"},"widgetSet":"basic"}]
                                          
                                          Denke, das könnte dem einen oder anderen weiterhelfen :o)
                                          
                                          VG Thorsten

                                          UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          703

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe