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.
  • 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&rct=j&q= … SOoo6RRrWA](https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0ahUKEwisntPRxvrVAhWCVBQKHdfgDMIQFgg7MAI&url=https%3A%2F%2Fusa.denon.com%2Fus%2Fproduct%2Fhometheater%2Freceivers%2Favr3808ci%3Fdocname%3DAVR-3808CISerialProtocol_Ver520a.pdf&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
            • lobomauL Offline
              lobomauL Offline
              lobomau
              schrieb am zuletzt editiert von
              #44

              @knopers1:

              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? `
              Bei mir genau das gleiche. Ich habe einen Denon AVR-X1000.

              Probiert habe 192.168.178.54 und 192.168.178.054.

              Eventuell ist das Gerät nicht kompatibel? Laufen tut die Android app "Denon Remote App".

              Edit: was bei mir funktioniert… aus dem ersten thread:

              http://192.168.178.54/goform/formiPhoneAppDirect.xml?SIFAVORITES
              

              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
                knopers1
                schrieb am zuletzt editiert von
                #45

                @lomobau

                wo hastv Du die Zeile eingefügt? Läuft das Script jetzt bei Dir?

                Kannst Du dein Script hier zeigen?

                HP Microserver Gen8, RPI-4, IoBroker,

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

                  @knopers1:

                  @lomobau

                  wo hastv Du die Zeile eingefügt? Läuft das Script jetzt bei Dir?

                  Kannst Du dein Script hier zeigen? `
                  Nein, läuft nicht. Habe einfach die http-Zeile in Browser eingefügt, um zu prüfen ob es generell funktioniert.

                  Wenn ich es eingebe, springt die App auf Favourites, der Denon wohl auch (der steht im Keller… ich hatte da grad keine Zeit zu schauen)

                  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
                    #47

                    Versucht doch Mal, eine Doku für euren Receiver zu finden wie ich oben eine für meinen angehangen habe. Evtl sind die Befehle für den 1100 anders?

                    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
                    • L Offline
                      L Offline
                      Lucky
                      schrieb am zuletzt editiert von
                      #48

                      Moin Moin 😉

                      tragt bitte die IP Adresse NICHT im Skript ein, sondern in dem dafür gedachten State, das Skript überprüft diese auf richtige Schreibweise sobald sich der Wert ändert !

                      Das ist auch der Grund für die Meldung "ungültige IP Adresse"

                      Da ich natürlich nicht jedes Gerät testen kann, könnt ihr im State "Command to AVR" direkt die Befehle aus der passenden API zu eurem Gerät eintragen um diese zu testen.
                      2611_unbenannt.png

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

                        @Lucky:

                        Moin Moin 😉

                        tragt bitte die IP Adresse NICHT im Skript ein, sondern in dem dafür gedachten State, das Skript überprüft diese auf richtige Schreibweise sobald sich der Wert ändert !

                        Das ist auch der Grund für die Meldung "ungültige IP Adresse"

                        Da ich natürlich nicht jedes Gerät testen kann, könnt ihr im State "Command to AVR" direkt die Befehle aus der passenden API zu eurem Gerät eintragen um diese zu testen. `
                        :lol: Sachen gibt´s, die gibt´s gar nicht 😄

                        Hab vorher alle states gelöscht, Script gestartet, gibt Fehler ungültige IP und paar Warnungen, dann in Objekte die IP eingetragen und es läuft!
                        1146_unbenannt.jpg

                        Host: NUC8i3 mit Proxmox:

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

                          alles wird gut 😄

                          wenn du States manuell löscht und dann das Skript neu Startest, ist es normal das erstmal Fehler auflaufen, da die State dann neu beschrieben werden 😉 beim nächsten Start sollte auch das weg sein.

                          Hier nochmal eine überarbeitete Version mit folgenden Änderungen:

                          1. Fehler bei System Power OFF behoben (Danke für den Hinweis von Kueppert)

                          2. Fehler beim Manuellen umschalten der Tunerfrequenz behoben

                          3. Nach dem letzten Firmware Update des AVR ist es bei mir so, das wenn als Quelle NET z.b. Spotify gewählt ist, der AVR nicht mehr seine OSD Informationen selbständig updatet, für diesen Fall habe ich einen Updateintervall eingeführt.

                          4. mit dem State "Log" unter System kann der das Loggen des Regulären Datenstroms ausgeschaltet werden, was den Log sehr aufräumt 😉

                          <size size="150">hier die Aktuelle Version !!!</size>

                          ! ```
                          `//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});
                          createState('javascript.0.Denon.System.Log', true,{type: "boolean", role: "Log für Tx/Rx Daten"});
                          ! //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});
                          createState('javascript.0.Denon.Tuner_Control.Preset_Number',0,{type:"number", role: "Preset No."});
                          ! //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.Input_Text',5,{type: "string", role: "Input Text",write:false});
                          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','TPANMEM','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) {
                          
                                if (getState('javascript.0.Denon.System.Log').val===true){
                                 console.log(data.toString());         //log für kommende Daten ################################################################################################
                                }
                               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}
                          
                              if (getState('javascript.0.Denon.System.Log').val===true){
                              console.log('Anfrage: '+ message );   // log für gesendete Daten  ################################################################################################
                              }
                          }
                          

                          }
                          //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 ("undefined" !== typeof StaticPollen){clearInterval(StaticPollen)}
                                 }
                                 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);
                                  setState('javascript.0.Denon.Zone_Main.Input_Text',AVR_Response,akt=true);
                          
                                 if (AVR_Response=='NET'){
                                  StaticPollen=setInterval(sendMessage,2000,'NSE');  //wenn Quelle = NET ist (z.b. Spotify) OSD Informationen Pollen mit 2s
                                  }
                          
                                 else {if ("undefined" !== typeof StaticPollen){clearInterval(StaticPollen)}
                                 }
                                 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 'TPANMEM':
                                  AVR_Response=AVR_Response.slice(7,AVR_Response.length);
                                  if (AVR_Response.length==2){         //29.08.2017 angepasst
                                  setState('javascript.0.Denon.Tuner_Control.Preset_Number',parseInt(AVR_Response),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('PWSTANDBY')}
                          }
                          });
                          ! 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){
                          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')});
                          ! on('javascript.0.Denon.Tuner_Control.Preset_Number', function (obj){
                          if (obj.state.val.toString().length<2){
                          sendMessage('TPAN'+'0'+obj.state.val.toString())
                          }
                          else{sendMessage('TPAN'+obj.state.val.toString())}

                          });

                          ! //---------------------------------------------------------------------------------------
                          ! // 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
                          • D Offline
                            D Offline
                            djtale2003
                            schrieb am zuletzt editiert von
                            #51

                            @Jey Cee:

                            Wirklich? 3 Beiträge über deinem.

                            Gesendet von Unterwegs `

                            Ich habe mich an dem Datum orientiert. Sorry

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

                              @lobomau:

                              @Lucky:

                              Moin Moin 😉

                              tragt bitte die IP Adresse NICHT im Skript ein, sondern in dem dafür gedachten State, das Skript überprüft diese auf richtige Schreibweise sobald sich der Wert ändert !

                              Das ist auch der Grund für die Meldung "ungültige IP Adresse"

                              Da ich natürlich nicht jedes Gerät testen kann, könnt ihr im State "Command to AVR" direkt die Befehle aus der passenden API zu eurem Gerät eintragen um diese zu testen. `
                              :lol: Sachen gibt´s, die gibt´s gar nicht 😄

                              Hab vorher alle states gelöscht, Script gestartet, gibt Fehler ungültige IP und paar Warnungen, dann in Objekte die IP eingetragen und es läuft!

                              Unbenannt.JPG `

                              Wo kommen die Ordner her?

                              Kann mir bitte jemand schritt für schritt erklären, was ich machen muß? Was muß alles installiert sein, damit das script funktioniert?

                              Ausser der falschen IP-Meldung passiert gar nichts.

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

                                @djtale2003:

                                @lobomau:

                                @Lucky:

                                Moin Moin 😉

                                tragt bitte die IP Adresse NICHT im Skript ein, sondern in dem dafür gedachten State, das Skript überprüft diese auf richtige Schreibweise sobald sich der Wert ändert !

                                Das ist auch der Grund für die Meldung "ungültige IP Adresse"

                                Da ich natürlich nicht jedes Gerät testen kann, könnt ihr im State "Command to AVR" direkt die Befehle aus der passenden API zu eurem Gerät eintragen um diese zu testen. `
                                :lol: Sachen gibt´s, die gibt´s gar nicht 😄

                                Hab vorher alle states gelöscht, Script gestartet, gibt Fehler ungültige IP und paar Warnungen, dann in Objekte die IP eingetragen und es läuft!

                                Unbenannt.JPG `

                                Wo kommen die Ordner her?

                                Kann mir bitte jemand schritt für schritt erklären, was ich machen muß? Was muß alles installiert sein, damit das script funktioniert?

                                Ausser der falschen IP-Meldung passiert gar nichts. `
                                Es ist wirklich ganz einfach. Es muss der javascript-Adapter installiert sein. Dort startest du das Script wie es ist ohne was daran zu ändern. Dadurch werden sofort die Ordner angelegt. Das muss bei jedem sofort funktionieren. Wenn das schon nicht geht, hast du anderes Problem.

                                Die Fehler und Warnungen beim ersten Start erstmal nicht beachten. Danach trägst du unter Objekte die IP manuell ein wie in meinem screenshot zu erkennen. Danach Script nochmal starten (eventuell reicht auch etwas warten) und die Werte werden korrekt gefüllt.

                                Host: NUC8i3 mit Proxmox:

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

                                  @djtale2003:

                                  Wo kommen die Ordner her?

                                  Kann mir bitte jemand schritt für schritt erklären, was ich machen muß? Was muß alles installiert sein, damit das script funktioniert?

                                  Ausser der falschen IP-Meldung passiert gar nichts. `

                                  Keine Ahnung, was ich gemacht habe, aber jetzt geht es…

                                  1 Antwort Letzte Antwort
                                  0
                                  • L Offline
                                    L Offline
                                    Lucky
                                    schrieb am zuletzt editiert von
                                    #55

                                    Das Skript muss nicht neu gestartet werden wenn die ip Adresse eingegeben wurde, die Verbindung zum Server wird automatisch getrennt und neu aufgebaut wenn die ip geändert wird.

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

                                      @Lucky:

                                      alles wird gut 😄

                                      wenn du States manuell löscht und dann das Skript neu Startest, ist es normal das erstmal Fehler auflaufen, da die State dann neu beschrieben werden 😉 beim nächsten Start sollte auch das weg sein.

                                      Hier nochmal eine überarbeitete Version mit folgenden Änderungen:

                                      1. Fehler bei System Power OFF behoben (Danke für den Hinweis von Kueppert)

                                      2. Fehler beim Manuellen umschalten der Tunerfrequenz behoben

                                      3. Nach dem letzten Firmware Update des AVR ist es bei mir so, das wenn als Quelle NET z.b. Spotify gewählt ist, der AVR nicht mehr seine OSD Informationen selbständig updatet, für diesen Fall habe ich einen Updateintervall eingeführt.

                                      4. mit dem State "Log" unter System kann der das Loggen des Regulären Datenstroms ausgeschaltet werden, was den Log sehr aufräumt 😉

                                      <size size="150">hier die Aktuelle Version !!!</size>

                                      ! ```
                                      `//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});
                                      createState('javascript.0.Denon.System.Log', true,{type: "boolean", role: "Log für Tx/Rx Daten"});
                                      ! //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});
                                      createState('javascript.0.Denon.Tuner_Control.Preset_Number',0,{type:"number", role: "Preset No."});
                                      ! //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.Input_Text',5,{type: "string", role: "Input Text",write:false});
                                      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','TPANMEM','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) {
                                           
                                            if (getState('javascript.0.Denon.System.Log').val===true){
                                             console.log(data.toString());         //log für kommende Daten ################################################################################################
                                            }
                                           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}
                                      
                                          if (getState('javascript.0.Denon.System.Log').val===true){
                                          console.log('Anfrage: '+ message );   // log für gesendete Daten  ################################################################################################
                                          }
                                      }
                                      

                                      }
                                      //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 ("undefined" !== typeof StaticPollen){clearInterval(StaticPollen)}
                                             }
                                             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);
                                              setState('javascript.0.Denon.Zone_Main.Input_Text',AVR_Response,akt=true);
                                              
                                             if (AVR_Response=='NET'){
                                              StaticPollen=setInterval(sendMessage,2000,'NSE');  //wenn Quelle = NET ist (z.b. Spotify) OSD Informationen Pollen mit 2s
                                              }
                                             
                                             else {if ("undefined" !== typeof StaticPollen){clearInterval(StaticPollen)}
                                             }
                                             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 'TPANMEM':
                                              AVR_Response=AVR_Response.slice(7,AVR_Response.length);
                                              if (AVR_Response.length==2){         //29.08.2017 angepasst
                                              setState('javascript.0.Denon.Tuner_Control.Preset_Number',parseInt(AVR_Response),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('PWSTANDBY')}
                                      }
                                      });
                                      ! 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){
                                      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')});
                                      ! on('javascript.0.Denon.Tuner_Control.Preset_Number', function (obj){
                                      if (obj.state.val.toString().length<2){
                                      sendMessage('TPAN'+'0'+obj.state.val.toString())
                                      }
                                      else{sendMessage('TPAN'+obj.state.val.toString())}

                                      });

                                      ! //---------------------------------------------------------------------------------------
                                      ! // close connection if script stopped-------------------------------------------------
                                      onStop(function () {
                                      if(getState('javascript.0.Denon.System.Verbunden').val===true){killClient(client)};
                                      }, 2000 /ms/); Gut läuft das Script solange Spannung am Denon anliegt. Ich habe jedoch auch eine schaltbare Steckdose. Wenn ich dann anschalte, funktioniert es erst wenn ich das Script neustarte. ! Oder wenn das SCript läuft und ich aus und anschalte, geht das SCript erst nach neustarten.[/i][/i][/i] ```

                                      Host: NUC8i3 mit Proxmox:

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

                                        @lobomau:

                                        @Lucky:

                                        alles wird gut 😄

                                        wenn du States manuell löscht und dann das Skript neu Startest, ist es normal das erstmal Fehler auflaufen, da die State dann neu beschrieben werden 😉 beim nächsten Start sollte auch das weg sein.

                                        Hier nochmal eine überarbeitete Version mit folgenden Änderungen:

                                        1. Fehler bei System Power OFF behoben (Danke für den Hinweis von Kueppert)

                                        2. Fehler beim Manuellen umschalten der Tunerfrequenz behoben

                                        3. Nach dem letzten Firmware Update des AVR ist es bei mir so, das wenn als Quelle NET z.b. Spotify gewählt ist, der AVR nicht mehr seine OSD Informationen selbständig updatet, für diesen Fall habe ich einen Updateintervall eingeführt.

                                        4. mit dem State "Log" unter System kann der das Loggen des Regulären Datenstroms ausgeschaltet werden, was den Log sehr aufräumt 😉

                                        <size size="150">hier die Aktuelle Version !!!</size>

                                        ! ```
                                        `//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});
                                        createState('javascript.0.Denon.System.Log', true,{type: "boolean", role: "Log für Tx/Rx Daten"});
                                        ! //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});
                                        createState('javascript.0.Denon.Tuner_Control.Preset_Number',0,{type:"number", role: "Preset No."});
                                        ! //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.Input_Text',5,{type: "string", role: "Input Text",write:false});
                                        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','TPANMEM','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) {
                                             
                                              if (getState('javascript.0.Denon.System.Log').val===true){
                                               console.log(data.toString());         //log für kommende Daten ################################################################################################
                                              }
                                             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}
                                        
                                            if (getState('javascript.0.Denon.System.Log').val===true){
                                            console.log('Anfrage: '+ message );   // log für gesendete Daten  ################################################################################################
                                            }
                                        }
                                        

                                        }
                                        //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 ("undefined" !== typeof StaticPollen){clearInterval(StaticPollen)}
                                               }
                                               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);
                                                setState('javascript.0.Denon.Zone_Main.Input_Text',AVR_Response,akt=true);
                                                
                                               if (AVR_Response=='NET'){
                                                StaticPollen=setInterval(sendMessage,2000,'NSE');  //wenn Quelle = NET ist (z.b. Spotify) OSD Informationen Pollen mit 2s
                                                }
                                               
                                               else {if ("undefined" !== typeof StaticPollen){clearInterval(StaticPollen)}
                                               }
                                               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 'TPANMEM':
                                                AVR_Response=AVR_Response.slice(7,AVR_Response.length);
                                                if (AVR_Response.length==2){         //29.08.2017 angepasst
                                                setState('javascript.0.Denon.Tuner_Control.Preset_Number',parseInt(AVR_Response),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('PWSTANDBY')}
                                        }
                                        });
                                        ! 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){
                                        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')});
                                        ! on('javascript.0.Denon.Tuner_Control.Preset_Number', function (obj){
                                        if (obj.state.val.toString().length<2){
                                        sendMessage('TPAN'+'0'+obj.state.val.toString())
                                        }
                                        else{sendMessage('TPAN'+obj.state.val.toString())}

                                        });

                                        ! //---------------------------------------------------------------------------------------
                                        ! // close connection if script stopped-------------------------------------------------
                                        onStop(function () {
                                        if(getState('javascript.0.Denon.System.Verbunden').val===true){killClient(client)};
                                        }, 2000 /ms/); Gut läuft das Script solange Spannung am Denon anliegt. Ich habe jedoch auch eine schaltbare Steckdose. Wenn ich dann anschalte, funktioniert es erst wenn ich das Script neustarte. ! Oder wenn das SCript läuft und ich aus und anschalte, geht das SCript erst nach neustarten. Ich pinge den Denon mit dem Radar-Adapter. Das geht ganz gut. Steckdose AN und nach einiger Zeit ist IP erreichbar, nach Ausschalten entsprechend IP nicht erreichbar. ! Da das Script nicht mit dem An und Ausschalten klar kommt, funktioniert da auch nicht unter System/Verbunden true/false nicht. Vielleicht kann man das Pingen da irgendwie in den Adapter einbauen? Für mich wird der workaround so werden: wenn IP erreichbar starte Script, wenn nicht, schalte Script aus.[/i][/i][/i] ``` `

                                        Host: NUC8i3 mit Proxmox:

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

                                          Hab ich so nie ausprobiert, meiner ist immer am Netz. Bekommst du im log ein Timeout oder host unreach?

                                          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

                                          398

                                          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