Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. SONOFF NSPanel mit Lovelace UI

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    224

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

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

SONOFF NSPanel mit Lovelace UI

SONOFF NSPanel mit Lovelace UI

Scheduled Pinned Locked Moved Hardware
lovelace uinspanelsonoff
7.7k Posts 271 Posters 6.7m Views 253 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ArmilarA Armilar

    @wendy2702

    3f1086b1-0f48-497f-9d5a-89674fde0b94-Nextion_Editor_eWhFTF2uXG.gif

    Habe in der Emulation (das gleiche im Original-Panel) mal nachgestellt und einfach unterschiedliche Werte in den Datenpunkt eingegeben. Ich habe das Verhalten nicht...

    wendy2702W Offline
    wendy2702W Offline
    wendy2702
    wrote on last edited by
    #2052

    @armilar das heißt auch nach antippen des displays (Dimmer aus) wird weiterhin aktualisiert?

    Gibt es irgendwo logs die ich mir ansehen kann vom/im Display?

    Sonst werden die Daten ja vom Mqtt Adapter übertragen, wenn da keine aktuellen Werte mehr übertragen werden läge am Server. Sonst eher am Display, oder?

    Bitte keine Fragen per PN, die gehören ins Forum!

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    ArmilarA 1 Reply Last reply
    0
    • wendy2702W wendy2702

      @armilar das heißt auch nach antippen des displays (Dimmer aus) wird weiterhin aktualisiert?

      Gibt es irgendwo logs die ich mir ansehen kann vom/im Display?

      Sonst werden die Daten ja vom Mqtt Adapter übertragen, wenn da keine aktuellen Werte mehr übertragen werden läge am Server. Sonst eher am Display, oder?

      ArmilarA Offline
      ArmilarA Offline
      Armilar
      Most Active Forum Testing
      wrote on last edited by Armilar
      #2053

      @wendy2702

      519f5034-0ec6-4c46-8fdf-b661fe11a813-image.png

      Ja die werden kontinuierlich getriggert. Die Funktionalität ist seit der ersten Version des Scriptes drin. Ist auch völlig egal, ob ein Screensaver an ist oder nicht. Die werden befüllt...

      Kannst zwischen die Zeilen auch mit:

      console.log("Was auch immer");
      

      Logs einbauen.

      • Das Script triggert die Datenpunkte und Sendet ein Update der Werte über die function HandleScreensaverUpdate()
        Damit werden alle Statuswerte der unteren Zeile aktualisiert.
      • Danach wird ein Payload zur Aktualisierung via MQTT an das Panel gesendet...

      Das gleiche passiert aber auch an anderer Stelle mit der Zeit und dem Datum.

      Was mich mal interessieren würde ist, passiert das permanent oder wirklich immer?

      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
      https://github.com/joBr99/nspanel-lovelace-ui/wiki

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      wendy2702W 1 Reply Last reply
      0
      • ArmilarA Armilar

        @wendy2702

        519f5034-0ec6-4c46-8fdf-b661fe11a813-image.png

        Ja die werden kontinuierlich getriggert. Die Funktionalität ist seit der ersten Version des Scriptes drin. Ist auch völlig egal, ob ein Screensaver an ist oder nicht. Die werden befüllt...

        Kannst zwischen die Zeilen auch mit:

        console.log("Was auch immer");
        

        Logs einbauen.

        • Das Script triggert die Datenpunkte und Sendet ein Update der Werte über die function HandleScreensaverUpdate()
          Damit werden alle Statuswerte der unteren Zeile aktualisiert.
        • Danach wird ein Payload zur Aktualisierung via MQTT an das Panel gesendet...

        Das gleiche passiert aber auch an anderer Stelle mit der Zeit und dem Datum.

        Was mich mal interessieren würde ist, passiert das permanent oder wirklich immer?

        wendy2702W Offline
        wendy2702W Offline
        wendy2702
        wrote on last edited by
        #2054

        @armilar ok.

        Gerade noch kurz mal probiert. Wenn der Wert eingefroren ist, ich dann den screensaver verlasse. Warte bis er wieder zurück zum screensaver springt wird der Wert wieder aktualisiert.

        Bitte keine Fragen per PN, die gehören ins Forum!

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        ArmilarA 2 Replies Last reply
        0
        • wendy2702W wendy2702

          @armilar ok.

          Gerade noch kurz mal probiert. Wenn der Wert eingefroren ist, ich dann den screensaver verlasse. Warte bis er wieder zurück zum screensaver springt wird der Wert wieder aktualisiert.

          ArmilarA Offline
          ArmilarA Offline
          Armilar
          Most Active Forum Testing
          wrote on last edited by Armilar
          #2055

          @wendy2702

          Versuche mal den Ereignisschwellenwert in der Admin-Instanz hochzusetzen.

          1b932394-f656-4183-b85e-a3ab861d125a-image.png

          Hat mir bei einigen Tests schon den Tag versaut, weil einige Adapter so viele Ereignisse in einer Sekunde produzieren wie nichts gutes.

          Bestes Beispiel für solche Adapter sind Börsen, Corona, Binance, etc.

          Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
          https://github.com/joBr99/nspanel-lovelace-ui/wiki

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          1 Reply Last reply
          0
          • wendy2702W wendy2702

            @armilar ok.

            Gerade noch kurz mal probiert. Wenn der Wert eingefroren ist, ich dann den screensaver verlasse. Warte bis er wieder zurück zum screensaver springt wird der Wert wieder aktualisiert.

            ArmilarA Offline
            ArmilarA Offline
            Armilar
            Most Active Forum Testing
            wrote on last edited by
            #2056

            @wendy2702

            ff843b09-7ad5-488f-a581-5549b9c65e71-image.png

            Der Haken "Nur bei Änderungen publizieren" ist bei dir ebenfalls nicht gesetzt?

            Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
            https://github.com/joBr99/nspanel-lovelace-ui/wiki

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            wendy2702W 1 Reply Last reply
            0
            • ArmilarA Armilar

              @wendy2702

              ff843b09-7ad5-488f-a581-5549b9c65e71-image.png

              Der Haken "Nur bei Änderungen publizieren" ist bei dir ebenfalls nicht gesetzt?

              wendy2702W Offline
              wendy2702W Offline
              wendy2702
              wrote on last edited by wendy2702
              #2057

              @armilar Den haken habe ich nicht drin.

              Wert im Admin hoch gesetzt.

              Gleich Mal schnell testen

              EDIT: Hat leider nichts geändert.

              Bitte keine Fragen per PN, die gehören ins Forum!

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              ArmilarA 1 Reply Last reply
              0
              • wendy2702W wendy2702

                @armilar Den haken habe ich nicht drin.

                Wert im Admin hoch gesetzt.

                Gleich Mal schnell testen

                EDIT: Hat leider nichts geändert.

                ArmilarA Offline
                ArmilarA Offline
                Armilar
                Most Active Forum Testing
                wrote on last edited by
                #2058

                @wendy2702

                Kannst du mal kurz die Einstellungen vom Screensaver-Wetter senden? Servicepage...

                Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                https://github.com/joBr99/nspanel-lovelace-ui/wiki

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                wendy2702W 1 Reply Last reply
                0
                • ArmilarA Armilar

                  @wendy2702

                  Kannst du mal kurz die Einstellungen vom Screensaver-Wetter senden? Servicepage...

                  wendy2702W Offline
                  wendy2702W Offline
                  wendy2702
                  wrote on last edited by wendy2702
                  #2059

                  @armilar bin unterwegs.

                  Kommt spätestens morgen.

                  Edit:

                  @Armilar : meinst du das?

                   Parameter - Bitte anpassen - siehe auch Wiki
                      firstScreensaverEntity:   { ScreensaverEntity: 'modbus.3.holdingRegisters.20498_Wirkenergie_Total',
                                                  ScreensaverEntityFactor: 1,                                 //New
                                                  ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                  ScreensaverEntityIcon: 'solar-power', 
                                                  ScreensaverEntityText: 'Leistung', 
                                                  ScreensaverEntityUnitText: ' W', 
                                                  ScreensaverEntityIconColor: {'val_min': -2500, 'val_max': 2500} 
                                                },
                      secondScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.windgusts_value', 
                                                  ScreensaverEntityFactor: (1000/3600),                       //New
                                                  ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                  ScreensaverEntityIcon: 'weather-windy', 
                                                  ScreensaverEntityText: "Wind", 
                                                  ScreensaverEntityUnitText: 'km/h', 
                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35} 
                                                },
                      thirdScreensaverEntity:   { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.uv_index_value',
                                                  ScreensaverEntityFactor: 1,                                 //New
                                                  ScreensaverEntityDecimalPlaces: 0,                          //New  
                                                  ScreensaverEntityIcon: 'solar-power', 
                                                  ScreensaverEntityText: 'UV', 
                                                  ScreensaverEntityUnitText: '', 
                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 9} 
                                                },
                      fourthScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.humidity_value', 
                                                  ScreensaverEntityFactor: 1,                                 //New
                                                  ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                  ScreensaverEntityIcon: 'water-percent', 
                                                  ScreensaverEntityText: 'Luft', 
                                                  ScreensaverEntityUnitText: '%', 
                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} 
                                                },
                  
                  

                  Bitte keine Fragen per PN, die gehören ins Forum!

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  T 2 Replies Last reply
                  1
                  • wendy2702W wendy2702

                    @armilar bin unterwegs.

                    Kommt spätestens morgen.

                    Edit:

                    @Armilar : meinst du das?

                     Parameter - Bitte anpassen - siehe auch Wiki
                        firstScreensaverEntity:   { ScreensaverEntity: 'modbus.3.holdingRegisters.20498_Wirkenergie_Total',
                                                    ScreensaverEntityFactor: 1,                                 //New
                                                    ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                    ScreensaverEntityIcon: 'solar-power', 
                                                    ScreensaverEntityText: 'Leistung', 
                                                    ScreensaverEntityUnitText: ' W', 
                                                    ScreensaverEntityIconColor: {'val_min': -2500, 'val_max': 2500} 
                                                  },
                        secondScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.windgusts_value', 
                                                    ScreensaverEntityFactor: (1000/3600),                       //New
                                                    ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                    ScreensaverEntityIcon: 'weather-windy', 
                                                    ScreensaverEntityText: "Wind", 
                                                    ScreensaverEntityUnitText: 'km/h', 
                                                    ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35} 
                                                  },
                        thirdScreensaverEntity:   { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.uv_index_value',
                                                    ScreensaverEntityFactor: 1,                                 //New
                                                    ScreensaverEntityDecimalPlaces: 0,                          //New  
                                                    ScreensaverEntityIcon: 'solar-power', 
                                                    ScreensaverEntityText: 'UV', 
                                                    ScreensaverEntityUnitText: '', 
                                                    ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 9} 
                                                  },
                        fourthScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.humidity_value', 
                                                    ScreensaverEntityFactor: 1,                                 //New
                                                    ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                    ScreensaverEntityIcon: 'water-percent', 
                                                    ScreensaverEntityText: 'Luft', 
                                                    ScreensaverEntityUnitText: '%', 
                                                    ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} 
                                                  },
                    
                    
                    T Offline
                    T Offline
                    TT-Tom
                    wrote on last edited by
                    #2060

                    @wendy2702

                    ich kann es bei mir jetzt nachstellen, wir arbeiten an der Problemlösung.

                    Gruß Tom
                    https://github.com/tt-tom17
                    Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                    NSPanel Script Wiki
                    https://github.com/joBr99/nspanel-lovelace-ui/wiki

                    NSPanel Adapter Wiki
                    https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                    1 Reply Last reply
                    0
                    • wendy2702W wendy2702

                      @armilar bin unterwegs.

                      Kommt spätestens morgen.

                      Edit:

                      @Armilar : meinst du das?

                       Parameter - Bitte anpassen - siehe auch Wiki
                          firstScreensaverEntity:   { ScreensaverEntity: 'modbus.3.holdingRegisters.20498_Wirkenergie_Total',
                                                      ScreensaverEntityFactor: 1,                                 //New
                                                      ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                      ScreensaverEntityIcon: 'solar-power', 
                                                      ScreensaverEntityText: 'Leistung', 
                                                      ScreensaverEntityUnitText: ' W', 
                                                      ScreensaverEntityIconColor: {'val_min': -2500, 'val_max': 2500} 
                                                    },
                          secondScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.windgusts_value', 
                                                      ScreensaverEntityFactor: (1000/3600),                       //New
                                                      ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                      ScreensaverEntityIcon: 'weather-windy', 
                                                      ScreensaverEntityText: "Wind", 
                                                      ScreensaverEntityUnitText: 'km/h', 
                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35} 
                                                    },
                          thirdScreensaverEntity:   { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.uv_index_value',
                                                      ScreensaverEntityFactor: 1,                                 //New
                                                      ScreensaverEntityDecimalPlaces: 0,                          //New  
                                                      ScreensaverEntityIcon: 'solar-power', 
                                                      ScreensaverEntityText: 'UV', 
                                                      ScreensaverEntityUnitText: '', 
                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 9} 
                                                    },
                          fourthScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.humidity_value', 
                                                      ScreensaverEntityFactor: 1,                                 //New
                                                      ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                      ScreensaverEntityIcon: 'water-percent', 
                                                      ScreensaverEntityText: 'Luft', 
                                                      ScreensaverEntityUnitText: '%', 
                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} 
                                                    },
                      
                      
                      T Offline
                      T Offline
                      TT-Tom
                      wrote on last edited by TT-Tom
                      #2061

                      @wendy2702

                      so wir haben eine Lösung gefunden, bitte als Hotfix die Funktion HandleButtonEvent komplett austauschen mit folgendem Code im Spoiler

                      function HandleButtonEvent(words: any): void {
                         try {
                             let tempid = words[2].split('?');
                             let id = tempid[0];
                             let buttonAction = words[3];
                      
                             if (Debug) {
                                 console.log(words[0] + ' - ' + words[1] + ' - ' + words[2] + ' - ' + words[3] + ' - ' + words[4] + ' - PageId: ' + pageId);
                             }
                      
                             if ((words[2]).substring(0, 8) == 'navigate') {
                                 GeneratePage(eval((words[2]).substring(9, (words[2]).length)));
                                 return;
                             }
                      
                             if (words[2] == 'bNext' || words[2] == 'bPrev' || words[2] == 'bUp' || words[2] == 'bHome' || words[2] == 'bSubNext' || words[2] == 'bSubPrev' ) {
                                 buttonAction = words[2];
                             }
                      
                             if (Debug) {
                                 console.log(buttonAction);
                             }
                      
                             let pageNum:number = 0;
                      
                             if (buttonAction.startsWith('swipe')) {
                                 buttonAction = 'bExit';
                             }
                             switch (buttonAction) {
                      
                                 case 'bUp':
                                     if (pageId < 0) { // Prüfen, ob button1page oder button2page
                                         pageId = 0;
                                         UnsubscribeWatcher();
                                         GeneratePage(config.pages[pageId]);
                                     } else {
                                         pageNum = (((pageId - 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                         pageId = pageNum;
                                         UnsubscribeWatcher();
                                         if (activePage != undefined && activePage.parent != undefined) {
                                             //update pageID
                                             for (let i = 0; i < config.pages.length; i++) {
                                                 if (config.pages[i] == activePage.parent) {
                                                     pageId = i;
                                                     break;
                                                 }
                                             }
                                             GeneratePage(activePage.parent);
                                         }
                                         else {
                                             GeneratePage(config.pages[pageId]);
                                         }
                                         break;
                                     }
                                     break;
                                 case 'bNext':
                                     pageNum = (((pageId + 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                     pageId = pageNum;
                                     UnsubscribeWatcher();
                                     GeneratePage(config.pages[pageId]);
                                     break;
                                 case 'bSubNext':
                                     UnsubscribeWatcher();
                                     GeneratePage(eval(activePage.next));
                                     break;
                                 case 'bPrev':
                                     pageNum = (((pageId - 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                     pageId = pageNum;
                                     UnsubscribeWatcher();
                                     if (activePage != undefined && activePage.parent != undefined) {
                                         //update pageID
                                         for (let i = 0; i < config.pages.length; i++) {
                                             if (config.pages[i] == activePage.parent) {
                                                 pageId = i;
                                                 break;
                                             }
                                         }
                                         GeneratePage(activePage.parent);
                                     }
                                     else {
                                         GeneratePage(config.pages[pageId]);
                                     }
                                     break;
                                 case 'bSubPrev':          
                                     UnsubscribeWatcher();
                                     GeneratePage(eval(activePage.prev));
                                     break;
                                 case 'bExit':
                                     if (getState(NSPanel_Path + 'Config.Screensaver.screenSaverDoubleClick').val && words[2] == 'screensaver') {
                                         if (words[4] >= 2) {
                                             setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                             setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                             if (existsObject(NSPanel_Path + 'ScreensaverInfo.bExitPage') && getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val != null) {
                                                 pageId = getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val;
                                                 activePage = config.pages[pageId];
                                                 GeneratePage(activePage);
                                             } else {
                                                 GeneratePage(activePage);
                                             }
                                         } else {
                                             setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                             setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                             screensaverEnabled = true;
                                             break;
                                         }
                                     } else {
                                         if (Debug) {
                                             console.log('bExit: ' + words[4] + ' - ' + pageId);
                                         }
                                         setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                         setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                         if (existsObject(NSPanel_Path + 'ScreensaverInfo.bExitPage') && getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val != null) {
                                             pageId = getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val
                                             activePage = config.pages[pageId];
                                             GeneratePage(activePage);
                                         } else {
                                             GeneratePage(activePage);
                                         }    
                                     }
                                     break;
                                 case 'bHome':
                                     if (Debug) {
                                         console.log('bExit: ' + words[4] + ' - ' + pageId);
                                     }
                                     UnsubscribeWatcher();
                                     if (activePage.home != undefined) {
                                         GeneratePage(eval(activePage.home));
                                     } else {
                                         GeneratePage(config.pages[0]);
                                     }
                                     break;
                                 case 'notifyAction':
                                     if (words[4] == 'yes') {
                                         setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                         setState(popupNotifyAction, <iobJS.State>{ val: true, ack: true });
                                     } else if (words[4] == 'no') {
                                         setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                         setState(popupNotifyAction, <iobJS.State>{ val: false, ack: true });
                                     }
                      
                                     setIfExists(config.panelSendTopic, 'exitPopup');
                      
                                     break;
                                 case 'OnOff':
                                     if (existsObject(id)) {
                                         let action = false;
                                         if (words[4] == '1')
                                             action = true;
                                         let o = getObject(id);
                                         switch (o.common.role) {
                                             case 'level.mode.fan':
                                             case 'socket':
                                             case 'light':
                                                 let pageItem = findPageItem(id);	
                         						if(pageItem.monobutton != undefined && pageItem.monobutton == true){	
                         							triggerButton(id + ".SET");
                         						}	
                         						else {	
                         							setIfExists(id + '.SET', action);
                         						}		
                         						break;
                                             case 'dimmer':
                                                 setIfExists(id + '.ON_SET', action) ? true : setIfExists(id + '.ON_ACTUAL', action);
                                                 break;
                                             case 'ct':
                                                 setIfExists(id + '.ON', action);
                                                 break;
                                             case 'rgb':
                                             case 'rgbSingle':
                                             case 'hue':
                                                 setIfExists(id + '.ON_ACTUAL', action);
                                         }
                                     }
                                     break;
                                 case 'button':
                                     if (existsObject(id)) {
                                         let action = false;
                                         if (words[4] == '1')
                                             action = true;
                                         let o = getObject(id);
                                         switch (o.common.role) {
                                             case 'lock':
                                             case 'button':
                                                 toggleState(id + '.SET') ? true : toggleState(id + '.ON_SET');
                                                 break; 
                                             case 'buttonSensor':
                                                 if (existsObject(id + '.ACTUAL')) {
                                                     toggleState(id + '.ACTUAL');
                                                 }
                                                 break;
                                             case 'socket':
                                             case 'light':
                                                 // Änderung für Monobutton	
                                                 let pageItem = findPageItem(id);	
                         						if(pageItem.monobutton != undefined && pageItem.monobutton == true){	
                         							triggerButton(id + ".SET");
                         						}	
                         						else {	
                         							toggleState(id + ".SET") ? true : toggleState(id + ".ON_SET");
                         						}	
                         						break;	
                                             case 'dimmer':
                                                 toggleState(id + '.ON_SET') ? true : toggleState(id + '.ON_ACTUAL');
                                                 break;
                                             case 'ct':
                                                 toggleState(id + '.ON');
                                                 break;
                                             case 'rgb':
                                             case 'rgbSingle':
                                             case 'hue': // Armilar
                                                 toggleState(id + '.ON_ACTUAL');
                                             case 'media':
                                                 if (tempid[1] == 'repeat') {
                                                     let pageItemRepeat = findPageItem(id);
                                                     let adapterInstanceRepeat = pageItemRepeat.adapterPlayerInstance;
                                                     let adapterRepeat = adapterInstanceRepeat.split('.');
                                                     let deviceAdapterRP = adapterRepeat[0];
                      
                                                     switch (deviceAdapterRP) {
                                                         case 'spotify-premium':
                                                             let stateSpotifyRepeat = getState(id + '.REPEAT').val
                                                             if (stateSpotifyRepeat == 'off') {
                                                                 setIfExists(id + '.REPEAT', 'context');
                                                             } else if (stateSpotifyRepeat == 'context') {
                                                                 setIfExists(id + '.REPEAT', 'track');
                                                             } else if (stateSpotifyRepeat == 'track') {
                                                                 setIfExists(id + '.REPEAT', 'off');
                                                             }
                                                             break;
                                                         case 'alexa2':
                                                             try {
                                                                 if (getState(id + '.REPEAT').val == 'false') {
                                                                     setIfExists(id + '.REPEAT', true);
                                                                 } else {
                                                                     setIfExists(id + '.REPEAT', false);
                                                                 }
                                                             } catch (err) {
                                                                 console.log('Repeat kann nicht verändert werden');
                                                             }
                                                             break;
                                                         case 'volumio':
                                                             request({ url:`${getState(adapterInstanceRepeat+'info.host').val}/api/commands/?cmd=repeat`, headers: {'User-Agent': 'ioBroker'} }, 
                                                                 async (error, response, result)=>{}); /* nothing todo @ error */
                                                             break;
                                                     }
                                                 }
                                         }
                                     }
                                     break;
                                 case 'up':
                                     setIfExists(id + '.OPEN', true);
                                     break;
                                 case 'stop':
                                     setIfExists(id + '.STOP', true);
                                     break;
                                 case 'down':
                                     setIfExists(id + '.CLOSE', true);
                                     break;
                                 case 'positionSlider':
                                     (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                     timeoutSlider = setTimeout(async function () {
                                         setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                     }, 250);
                                     break;
                                 case 'tiltOpen':
                                     setIfExists(id + '.TILT_OPEN', true);
                                     break;
                                 case 'tiltStop':
                                     setIfExists(id + '.TILT_STOP', true);
                                     break;
                                 case 'tiltClose':
                                     setIfExists(id + '.TILT_CLOSE', true);
                                     break;
                                 case 'tiltSlider':
                                     (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                     timeoutSlider = setTimeout(async function () {
                                         setIfExists(id + '.TILT_SET', parseInt(words[4])) ? true : setIfExists(id + '.TILT_ACTUAL', parseInt(words[4]));
                                     }, 250);
                                     break;
                                 case 'brightnessSlider':
                                     (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                     timeoutSlider = setTimeout(async function () {
                                         if (existsObject(id)) {
                                             let o = getObject(id);
                                             let pageItem = findPageItem(id);
                      
                                             switch (o.common.role) {
                                                 case 'dimmer':
                                                     if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
                                                         let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
                                                         setIfExists(id + '.SET', sliderPos) ? true : setIfExists(id + '.ACTUAL', sliderPos);
                                                     } else {
                                                         setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                                     }
                                                     break;
                                                 case 'rgb':
                                                 case 'ct':
                                                 case 'rgbSingle':
                                                 case 'hue':
                                                     if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
                                                         let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
                                                         setIfExists(id + '.DIMMER', sliderPos);
                                                     } else {
                                                         setIfExists(id + '.DIMMER', parseInt(words[4]));
                                                     }
                                                     break;
                                             }
                                         }
                                     }, 250);
                                     break;
                                 case 'colorTempSlider': // Armilar - Slider tickt verkehrt - Hell = 0 / Dunkel = 100 -> Korrektur
                                     (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                     timeoutSlider = setTimeout(async function () {
                                         let pageItem = findPageItem(id);
                                         if (pageItem.minValueColorTemp !== undefined && pageItem.maxValueColorTemp !== undefined) {
                                             let colorTempK = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.minValueColorTemp, pageItem.maxValueColorTemp));
                                             setIfExists(id + '.TEMPERATURE', (colorTempK));
                                         } else {
                                             setIfExists(id + '.TEMPERATURE', 100 - words[4]);
                                         }
                                     }, 250);
                                     break;
                                 case 'colorWheel':
                                     let colorCoordinates = words[4].split('|');
                                     let rgb = pos_to_color(colorCoordinates[0], colorCoordinates[1]);
                                     if (Debug) {
                                         console.log(rgb);
                                     }
                                     if (Debug) {
                                         console.log(getHue(rgb.red, rgb.green, rgb.blue));
                                     }
                                     let o = getObject(id);
                                     switch (o.common.role) {
                                         case 'hue':
                                             setIfExists(id + '.HUE', getHue(rgb.red, rgb.green, rgb.blue));
                                             break;
                                         case 'rgb':
                                             setIfExists(id + '.RED', rgb.red);
                                             setIfExists(id + '.GREEN', rgb.green);
                                             setIfExists(id + '.BLUE', rgb.blue);
                                             break;
                                         case 'rgbSingle':
                                             let pageItem = findPageItem(id);
                                             if (pageItem.colormode == "xy") {
                                                 //Für z.B. Deconz XY
                                                 setIfExists(id + ".RGB", rgb_to_cie(rgb.red, rgb.green, rgb.blue));
                                                 if (Debug) {
                                                     console.log(rgb_to_cie(rgb.red, rgb.green, rgb.blue));
                                                 }
                                             }
                                             else {
                                                 //Für RGB
                                                 setIfExists(id + ".RGB", ConvertRGBtoHex(rgb.red, rgb.green, rgb.blue));
                                             }
                                             break;
                                     }
                                     break;
                                 case 'tempUpd':
                                     setIfExists(id + '.SET', parseInt(words[4]) / 10);
                                     break;
                                 case 'media-back':
                                     setIfExists(id + '.PREV', true);
                                     break;
                                 case 'media-pause':
                                     let pageItemTemp = findPageItem(id);
                                     let adaInstanceSplit = pageItemTemp.adapterPlayerInstance.split('.');
                                     if (adaInstanceSplit[0] == 'squeezeboxrpc') {
                                         let stateVal = getState(pageItemTemp.adapterPlayerInstance + 'state').val;
                                         if (stateVal == 0) {
                                             setState(pageItemTemp.adapterPlayerInstance + 'state', 1);
                                         } else if (stateVal == 1) {
                                             setState(pageItemTemp.adapterPlayerInstance + 'state', 0);
                                         } else if (stateVal == null) {
                                             setState(pageItemTemp.adapterPlayerInstance + 'state', 1);
                                         }
                                     } else {
                                         if (getState(id + '.STATE').val === true) {
                                             setIfExists(id + '.PAUSE', true);
                                         } else {
                                             setIfExists(id + '.PLAY', true);
                                         }
                                     }
                                     break;
                                 case 'media-next':
                                     setIfExists(id + '.NEXT', true);
                                     break;
                                 case 'media-shuffle':
                                     if ((findPageItem(id).adapterPlayerInstance).startsWith("volumio")) { findPageItem(id).playList = []; break; } //Volumio: empty playlist $uha-20230103
                                     if (getState(id + '.SHUFFLE').val == 'off') {
                                         setIfExists(id + '.SHUFFLE', 'on');
                                     } else {
                                         setIfExists(id + '.SHUFFLE', 'off');
                                     }
                                     break;
                                 case 'volumeSlider':
                                     setIfExists(id + '.VOLUME', parseInt(words[4]))
                                     break;
                                 case 'mode-speakerlist':
                                     let pageItem = findPageItem(id);
                                     let adapterInstance = pageItem.adapterPlayerInstance;
                                     let adapter = adapterInstance.split('.');
                                     let deviceAdapter = adapter[0];
                      
                                     switch (deviceAdapter) {
                                         case 'spotify-premium':
                                             let strDevicePI = pageItem.speakerList[words[4]];
                                             let strDeviceID = spotifyGetDeviceID(strDevicePI);
                                             setState(adapterInstance + 'devices.' + strDeviceID + ".useForPlayback", true);
                                             break;
                                         case 'alexa2':
                                             let i_list = Array.prototype.slice.apply($('[state.id="' + adapterInstance + 'Echo-Devices.*.Info.name"]'));
                                             for (let i_index in i_list) {
                                                 let i = i_list[i_index];
                                                 if ((getState(i).val) === pageItem.speakerList[words[4]]) {
                                                     console.log(getState(i).val + ' - ' + pageItem.speakerList[words[4]]);
                                                     let deviceId = i;
                                                     deviceId = deviceId.split('.');
                                                     setIfExists(adapterInstance + 'Echo-Devices.' + pageItem.mediaDevice + '.Commands.textCommand', 'Schiebe meine Musik auf ' + pageItem.speakerList[words[4]]);
                                                     pageItem.mediaDevice = deviceId[3];
                                                 } 
                                             }
                                             break;
                                         case 'sonos':
                                             break;
                                         case 'chromecast':
                                             break;
                                     }
                                     break;
                                 case 'mode-playlist':
                                     let pageItemPL = findPageItem(id);
                                     let adapterInstancePL = pageItemPL.adapterPlayerInstance;
                                     let adapterPL = adapterInstancePL.split('.');
                                     let deviceAdapterPL = adapterPL[0];
                      
                                     switch (deviceAdapterPL) {
                                         case 'spotify-premium':
                                             let strDevicePI = pageItemPL.playList[words[4]];
                                             console.log(strDevicePI);
                                             let playlistListString = (getState(adapterInstancePL + 'playlists.playlistListString').val).split(';');
                                             let playlistListIds = (getState(adapterInstancePL + 'playlists.playlistListIds').val).split(';');
                                             let playlistIndex = playlistListString.indexOf(strDevicePI);
                                             setState(adapterInstancePL + 'playlists.playlistList', playlistListIds[playlistIndex]);
                                             setTimeout(async function () {
                                                 globalTracklist = (function () { try {return JSON.parse(getState(adapterInstancePL + 'player.playlist.trackListArray').val);} catch(e) {return {};}})();
                                             }, 2000);
                                             break;
                                         case 'alexa2':
                                             let tempListItem = pageItemPL.playList[words[4]].split('.');
                                             setState(adapterInstancePL + 'Echo-Devices.' + pageItemPL.mediaDevice + '.Music-Provider.' + tempListItem[0], tempListItem[1]);
                                             break;
                                         case 'volumio':
                                             let strDevicePL = pageItemPL.playList[words[4]];
                                             request({ url:`${getState(adapterInstancePL+'info.host').val}/api/commands/?cmd=playplaylist&name=${strDevicePL}`, headers: {'User-Agent': 'ioBroker'} }, 
                                                       async (error, response, result)=>{}); /* nothing todo @ error */
                                             break;
                                     }
                                     break;
                                 case 'mode-tracklist':
                                     let pageItemTL = findPageItem(id);
                                     let adapterInstanceTL = pageItemTL.adapterPlayerInstance;
                                     let adapterTL = adapterInstanceTL.split('.')
                                     let deviceAdapterTL = adapterTL[0];
                      
                                     switch (deviceAdapterTL) {
                                         case 'spotify-premium':
                                             let trackArray = (function () { try {return JSON.parse(getState(pageItemTL.adapterPlayerInstance + 'player.playlist.trackListArray').val);} catch(e) {return {};}})();
                                             setState(adapterInstanceTL + 'player.trackId', getAttr(trackArray, words[4] + '.id'));
                                             break;
                                         case 'alexa2':
                                             if (Debug) console.log('Aktuell hat alexa2 keine Tracklist');
                                             break;
                                         case 'volumio':
                                             request({ url:`${getState(adapterInstanceTL+'info.host').val}/api/commands/?cmd=play&N=${words[4]}`, headers: {'User-Agent': 'ioBroker'} }, 
                                                 async (error, response, result)=>{}); /* nothing todo @ error */
                                             break;
                                     }
                                     break;
                                 case 'mode-repeat':
                                     let pageItemRP = findPageItem(id);
                                     let adapterInstanceRP = pageItemRP.adapterPlayerInstance;
                                     let adapterRP = adapterInstanceRP.split('.');
                                     let deviceAdapterRP = adapterRP[0];
                      
                                     switch (deviceAdapterRP) {
                                         case 'spotify-premium':
                                             setIfExists(id + '.REPEAT', pageItemRP.repeatList[words[4]]);
                                             break;
                                         case 'alexa2':
                                             break;
                                     }
                                     break;
                                 case 'mode-equalizer':
                                     let pageItemEQ = findPageItem(id);
                                     if (Debug) console.log(id);
                                     let lastIndex = (id.split('.')).pop();
                                     setState(NSPanel_Path + 'Media.Player.' + lastIndex + '.EQ.activeMode', pageItemEQ.equalizerList[words[4]]);
                                     setTimeout(async function () {
                                         GenerateDetailPage('popupInSel','equalizer', pageItemEQ);
                                     }, 2000);
                                     break;
                                 case 'mode-insel':
                                     setIfExists(id + '.VALUE', parseInt(words[4]));
                                     break;
                                 case 'media-OnOff':
                                     let pageItemTem = findPageItem(id);
                                     let adaInstanceSpli = pageItemTem.adapterPlayerInstance.split('.');
                                     if (adaInstanceSpli[0] == 'squeezeboxrpc') {
                                         let stateVal = getState(pageItemTem.adapterPlayerInstance + 'Power').val;
                                         if (stateVal === 0) {
                                             setState(pageItemTem.adapterPlayerInstance + 'Power', 1);
                                             setIfExists(id + '.STOP', false);
                                             setIfExists(id + '.STATE', 1);
                                         } else {
                                             setState(pageItemTem.adapterPlayerInstance + 'Power', 0);
                                             setIfExists(id + '.STOP', true);
                                             setIfExists(id + '.STATE', 0);
                                         }
                                     } else {
                                         setIfExists(id + '.STOP', true);
                                     }
                                     break;
                                 case 'timer-start':
                                     if (words[4] != undefined) {
                                         let timer_panel = words[4].split(':');
                                         setIfExists(id + '.ACTUAL', (parseInt(timer_panel[1]) * 60) + parseInt(timer_panel[2]));
                                     }
                                     setIfExists(id + '.STATE', 'active');
                                     break;
                                 case 'timer-pause':
                                     setIfExists(id + '.STATE', 'paused');
                                     break;
                                 case 'timer-cancle':
                                     setIfExists(id + '.STATE', 'idle');
                                     setIfExists(id + '.ACTUAL', 0);
                                     break;
                                 case 'timer-finish':
                                     setIfExists(id + '.STATE', 'idle');
                                     setIfExists(id + '.ACTUAL', 0);
                                     break;
                                 case 'hvac_action':
                                     if (words[4] == 'BOOT' || words[4] == 'PART' || words[4] == 'AUTT' || words[4] == 'MANT' || words[4] == 'VACT') {
                      
                                         switch (words[4]) {
                                             case 'BOOT':
                                                 setIfExists(words[2] + '.' + 'BOOST', !getState(words[2] + '.' + 'BOOST').val);
                                                 break;
                                             case 'PART':
                                                 setIfExists(words[2] + '.' + 'PARTY', !getState(words[2] + '.' + 'PARTY').val);
                                                 break;
                                             case 'AUTT':
                                                 setIfExists(words[2] + '.' + 'AUTOMATIC', !getState(words[2] + '.' + 'AUTOMATIC').val);
                                                 break;
                                             case 'MANT':
                                                 setIfExists(words[2] + '.' + 'MANUAL', !getState(words[2] + '.' + 'MANUAL').val);
                                                 break;
                                             case 'VACT':
                                                 setIfExists(words[2] + '.' + 'VACATION', !getState(words[2] + '.' + 'VACATION').val);
                                                 break;
                                         }
                                         let modes = ['BOOT', 'PART', 'AUTT', 'MANT', 'VACT'];
                                         let modesDP = ['BOOST', 'PARTY', 'AUTOMATIC', 'MANUAL', 'VACATION'];
                                         for (let mode=0; mode < 5; mode++) {
                                             if (words[4] != modes[mode]) {
                                                 setIfExists(words[2] + '.' + modesDP[mode], false);
                                             }
                                         }
                                         GeneratePage(config.pages[pageId]);
                                     } else {
                                         let HVACMode = 0;
                                         switch (words[4]) {
                                             case 'POWER':
                                                 HVACMode = 0;
                                                 setIfExists(words[2] + '.' + words[4], !getState(words[2] + '.' + words[4]).val);
                                                 if (getState(words[2] + '.' + words[4]).val) {
                                                     HVACMode = 1;
                                                 }
                                                 break;
                                             case 'AUTO':
                                                 HVACMode = 1;
                                                 break;
                                             case 'COOL':
                                                 HVACMode = 2;
                                                 break;
                                             case 'HEAT':
                                                 HVACMode = 3;
                                                 break;
                                             case 'ECO':
                                                 HVACMode = 4;
                                                 break;
                                             case 'FAN':
                                                 HVACMode = 5;
                                                 break;
                                             case 'DRY':
                                                 HVACMode = 6;
                                                 break;
                                             case 'SWING':
                                                 HVACMode = getState(words[2] + '.MODE').val;
                                                 if (getState(words[2] + '.SWING').val == 0) {
                                                     setIfExists(words[2] + '.SWING', 1);
                                                 } else {
                                                     setIfExists(words[2] + '.' + 'SWING', 0);
                                                 }
                                                 break;
                                         }
                                         setIfExists(words[2] + '.' + 'MODE', HVACMode);
                                         GeneratePage(config.pages[pageId]);
                                     }
                                     break;
                                 case 'mode-modus1':
                                     let pageItemT1 = findPageItem(id);
                                     setIfExists(id + '.' + pageItemT1.setThermoAlias[0], pageItemT1.popupThermoMode1[parseInt(words[4])]);
                                     break;
                                 case 'mode-modus2':
                                     let pageItemT2 = findPageItem(id);
                                     setIfExists(id + '.' + pageItemT2.setThermoAlias[1], pageItemT2.popupThermoMode2[parseInt(words[4])]);
                                     break;
                                 case 'mode-modus3':
                                     let pageItemT3 = findPageItem(id);
                                     setIfExists(id + '.' + pageItemT3.setThermoAlias[2], pageItemT3.popupThermoMode3[parseInt(words[4])]);
                                     break;
                                 case 'number-set':
                                     let nobj = getObject(id);
                                     switch (nobj.common.role) {
                                         case 'level.mode.fan':
                                             (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                             timeoutSlider = setTimeout(async function () {
                                                 setIfExists(id + '.SPEED', parseInt(words[4]));
                                             }, 250);
                                             break;
                                         default:    
                                             (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                             timeoutSlider = setTimeout(async function () {
                                                 setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                             }, 250);
                                             break;
                                     }
                                     break;
                                 case 'mode-preset_modes':
                                     setIfExists(id + '.MODE', parseInt(words[4]));
                                     break; 
                                 case 'A1': // Alarm-Page Alarm 1 aktivieren
                                     if (words[4] != '') {
                                         setIfExists(id + '.TYPE', 'A1');
                                         setIfExists(id + '.PIN', words[4]);
                                         setIfExists(id + '.ACTUAL', 'arming');
                                         setIfExists(id + '.PANEL', NSPanel_Path);
                                     }
                                     setTimeout(function(){
                                         GeneratePage(activePage);
                                     },250);
                                     break;
                                 case 'A2': // Alarm-Page Alarm 2 aktivieren
                                     if (words[4] != '') {
                                         setIfExists(id + '.TYPE', 'A2');
                                         setIfExists(id + '.PIN', words[4]);
                                         setIfExists(id + '.ACTUAL', 'arming');
                                         setIfExists(id + '.PANEL', NSPanel_Path);
                                     }
                                     setTimeout(function(){
                                         GeneratePage(activePage);
                                     },250);
                                     break;
                                 case 'A3': // Alarm-Page Alarm 3 aktivieren
                                     if (words[4] != '') {
                                         setIfExists(id + '.TYPE', 'A3');
                                         setIfExists(id + '.PIN', words[4]);
                                         setIfExists(id + '.ACTUAL', 'arming');
                                         setIfExists(id + '.PANEL', NSPanel_Path);
                                     }
                                     setTimeout(function(){
                                         GeneratePage(activePage);
                                     },250);
                                     break;
                                 case 'A4': // Alarm-Page Alarm 4 aktivieren
                                     if (words[4] != '') {
                                         setIfExists(id + '.TYPE', 'A4');
                                         setIfExists(id + '.PIN', words[4]);
                                         setIfExists(id + '.ACTUAL', 'arming');
                                         setIfExists(id + '.PANEL', NSPanel_Path);
                                     }
                                     setTimeout(function(){
                                         GeneratePage(activePage);
                                     },250);
                                     break;
                                 case 'D1': // Alarm-Page Alarm Deaktivieren
                                     if (Debug) {
                                         console.log('D1: ' + getState(id + '.PIN').val);
                                     }
                                     if (Debug) {
                                         console.log(words[4]);
                                     }
                                     if (words[4] != '') {
                                         if (getState(id + '.PIN').val == words[4]) {
                                             setIfExists(id + '.PIN', '0000');
                                             setIfExists(id + '.TYPE', 'D1');
                                             setIfExists(id + '.ACTUAL', 'pending');
                                             setIfExists(id + '.PIN_Failed', 0);
                                         } else {
                                             setIfExists(id + '.PIN_Failed', getState(id + '.PIN_Failed').val + 1);
                                             setIfExists(id + '.ACTUAL', 'triggered');
                                         }
                                         setIfExists(id + '.PANEL', NSPanel_Path);
                                         setTimeout(function(){
                                             GeneratePage(activePage);
                                         },500);
                                     }
                                     break;
                                 default:
                                     break;
                             }
                         } catch (err) {
                             console.log('function HandleButtonEvent: ' + err.message);
                         }
                      }
                      

                      EDIT: Hotfix ist jetzt auch auf Github verfügbar v3.9.0.2

                      Gruß Tom
                      https://github.com/tt-tom17
                      Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                      NSPanel Script Wiki
                      https://github.com/joBr99/nspanel-lovelace-ui/wiki

                      NSPanel Adapter Wiki
                      https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                      ArmilarA 1 Reply Last reply
                      0
                      • T TT-Tom

                        @wendy2702

                        so wir haben eine Lösung gefunden, bitte als Hotfix die Funktion HandleButtonEvent komplett austauschen mit folgendem Code im Spoiler

                        function HandleButtonEvent(words: any): void {
                           try {
                               let tempid = words[2].split('?');
                               let id = tempid[0];
                               let buttonAction = words[3];
                        
                               if (Debug) {
                                   console.log(words[0] + ' - ' + words[1] + ' - ' + words[2] + ' - ' + words[3] + ' - ' + words[4] + ' - PageId: ' + pageId);
                               }
                        
                               if ((words[2]).substring(0, 8) == 'navigate') {
                                   GeneratePage(eval((words[2]).substring(9, (words[2]).length)));
                                   return;
                               }
                        
                               if (words[2] == 'bNext' || words[2] == 'bPrev' || words[2] == 'bUp' || words[2] == 'bHome' || words[2] == 'bSubNext' || words[2] == 'bSubPrev' ) {
                                   buttonAction = words[2];
                               }
                        
                               if (Debug) {
                                   console.log(buttonAction);
                               }
                        
                               let pageNum:number = 0;
                        
                               if (buttonAction.startsWith('swipe')) {
                                   buttonAction = 'bExit';
                               }
                               switch (buttonAction) {
                        
                                   case 'bUp':
                                       if (pageId < 0) { // Prüfen, ob button1page oder button2page
                                           pageId = 0;
                                           UnsubscribeWatcher();
                                           GeneratePage(config.pages[pageId]);
                                       } else {
                                           pageNum = (((pageId - 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                           pageId = pageNum;
                                           UnsubscribeWatcher();
                                           if (activePage != undefined && activePage.parent != undefined) {
                                               //update pageID
                                               for (let i = 0; i < config.pages.length; i++) {
                                                   if (config.pages[i] == activePage.parent) {
                                                       pageId = i;
                                                       break;
                                                   }
                                               }
                                               GeneratePage(activePage.parent);
                                           }
                                           else {
                                               GeneratePage(config.pages[pageId]);
                                           }
                                           break;
                                       }
                                       break;
                                   case 'bNext':
                                       pageNum = (((pageId + 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                       pageId = pageNum;
                                       UnsubscribeWatcher();
                                       GeneratePage(config.pages[pageId]);
                                       break;
                                   case 'bSubNext':
                                       UnsubscribeWatcher();
                                       GeneratePage(eval(activePage.next));
                                       break;
                                   case 'bPrev':
                                       pageNum = (((pageId - 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                       pageId = pageNum;
                                       UnsubscribeWatcher();
                                       if (activePage != undefined && activePage.parent != undefined) {
                                           //update pageID
                                           for (let i = 0; i < config.pages.length; i++) {
                                               if (config.pages[i] == activePage.parent) {
                                                   pageId = i;
                                                   break;
                                               }
                                           }
                                           GeneratePage(activePage.parent);
                                       }
                                       else {
                                           GeneratePage(config.pages[pageId]);
                                       }
                                       break;
                                   case 'bSubPrev':          
                                       UnsubscribeWatcher();
                                       GeneratePage(eval(activePage.prev));
                                       break;
                                   case 'bExit':
                                       if (getState(NSPanel_Path + 'Config.Screensaver.screenSaverDoubleClick').val && words[2] == 'screensaver') {
                                           if (words[4] >= 2) {
                                               setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                               setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                               if (existsObject(NSPanel_Path + 'ScreensaverInfo.bExitPage') && getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val != null) {
                                                   pageId = getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val;
                                                   activePage = config.pages[pageId];
                                                   GeneratePage(activePage);
                                               } else {
                                                   GeneratePage(activePage);
                                               }
                                           } else {
                                               setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                               setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                               screensaverEnabled = true;
                                               break;
                                           }
                                       } else {
                                           if (Debug) {
                                               console.log('bExit: ' + words[4] + ' - ' + pageId);
                                           }
                                           setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                           setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                           if (existsObject(NSPanel_Path + 'ScreensaverInfo.bExitPage') && getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val != null) {
                                               pageId = getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val
                                               activePage = config.pages[pageId];
                                               GeneratePage(activePage);
                                           } else {
                                               GeneratePage(activePage);
                                           }    
                                       }
                                       break;
                                   case 'bHome':
                                       if (Debug) {
                                           console.log('bExit: ' + words[4] + ' - ' + pageId);
                                       }
                                       UnsubscribeWatcher();
                                       if (activePage.home != undefined) {
                                           GeneratePage(eval(activePage.home));
                                       } else {
                                           GeneratePage(config.pages[0]);
                                       }
                                       break;
                                   case 'notifyAction':
                                       if (words[4] == 'yes') {
                                           setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                           setState(popupNotifyAction, <iobJS.State>{ val: true, ack: true });
                                       } else if (words[4] == 'no') {
                                           setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                           setState(popupNotifyAction, <iobJS.State>{ val: false, ack: true });
                                       }
                        
                                       setIfExists(config.panelSendTopic, 'exitPopup');
                        
                                       break;
                                   case 'OnOff':
                                       if (existsObject(id)) {
                                           let action = false;
                                           if (words[4] == '1')
                                               action = true;
                                           let o = getObject(id);
                                           switch (o.common.role) {
                                               case 'level.mode.fan':
                                               case 'socket':
                                               case 'light':
                                                   let pageItem = findPageItem(id);	
                           						if(pageItem.monobutton != undefined && pageItem.monobutton == true){	
                           							triggerButton(id + ".SET");
                           						}	
                           						else {	
                           							setIfExists(id + '.SET', action);
                           						}		
                           						break;
                                               case 'dimmer':
                                                   setIfExists(id + '.ON_SET', action) ? true : setIfExists(id + '.ON_ACTUAL', action);
                                                   break;
                                               case 'ct':
                                                   setIfExists(id + '.ON', action);
                                                   break;
                                               case 'rgb':
                                               case 'rgbSingle':
                                               case 'hue':
                                                   setIfExists(id + '.ON_ACTUAL', action);
                                           }
                                       }
                                       break;
                                   case 'button':
                                       if (existsObject(id)) {
                                           let action = false;
                                           if (words[4] == '1')
                                               action = true;
                                           let o = getObject(id);
                                           switch (o.common.role) {
                                               case 'lock':
                                               case 'button':
                                                   toggleState(id + '.SET') ? true : toggleState(id + '.ON_SET');
                                                   break; 
                                               case 'buttonSensor':
                                                   if (existsObject(id + '.ACTUAL')) {
                                                       toggleState(id + '.ACTUAL');
                                                   }
                                                   break;
                                               case 'socket':
                                               case 'light':
                                                   // Änderung für Monobutton	
                                                   let pageItem = findPageItem(id);	
                           						if(pageItem.monobutton != undefined && pageItem.monobutton == true){	
                           							triggerButton(id + ".SET");
                           						}	
                           						else {	
                           							toggleState(id + ".SET") ? true : toggleState(id + ".ON_SET");
                           						}	
                           						break;	
                                               case 'dimmer':
                                                   toggleState(id + '.ON_SET') ? true : toggleState(id + '.ON_ACTUAL');
                                                   break;
                                               case 'ct':
                                                   toggleState(id + '.ON');
                                                   break;
                                               case 'rgb':
                                               case 'rgbSingle':
                                               case 'hue': // Armilar
                                                   toggleState(id + '.ON_ACTUAL');
                                               case 'media':
                                                   if (tempid[1] == 'repeat') {
                                                       let pageItemRepeat = findPageItem(id);
                                                       let adapterInstanceRepeat = pageItemRepeat.adapterPlayerInstance;
                                                       let adapterRepeat = adapterInstanceRepeat.split('.');
                                                       let deviceAdapterRP = adapterRepeat[0];
                        
                                                       switch (deviceAdapterRP) {
                                                           case 'spotify-premium':
                                                               let stateSpotifyRepeat = getState(id + '.REPEAT').val
                                                               if (stateSpotifyRepeat == 'off') {
                                                                   setIfExists(id + '.REPEAT', 'context');
                                                               } else if (stateSpotifyRepeat == 'context') {
                                                                   setIfExists(id + '.REPEAT', 'track');
                                                               } else if (stateSpotifyRepeat == 'track') {
                                                                   setIfExists(id + '.REPEAT', 'off');
                                                               }
                                                               break;
                                                           case 'alexa2':
                                                               try {
                                                                   if (getState(id + '.REPEAT').val == 'false') {
                                                                       setIfExists(id + '.REPEAT', true);
                                                                   } else {
                                                                       setIfExists(id + '.REPEAT', false);
                                                                   }
                                                               } catch (err) {
                                                                   console.log('Repeat kann nicht verändert werden');
                                                               }
                                                               break;
                                                           case 'volumio':
                                                               request({ url:`${getState(adapterInstanceRepeat+'info.host').val}/api/commands/?cmd=repeat`, headers: {'User-Agent': 'ioBroker'} }, 
                                                                   async (error, response, result)=>{}); /* nothing todo @ error */
                                                               break;
                                                       }
                                                   }
                                           }
                                       }
                                       break;
                                   case 'up':
                                       setIfExists(id + '.OPEN', true);
                                       break;
                                   case 'stop':
                                       setIfExists(id + '.STOP', true);
                                       break;
                                   case 'down':
                                       setIfExists(id + '.CLOSE', true);
                                       break;
                                   case 'positionSlider':
                                       (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                       timeoutSlider = setTimeout(async function () {
                                           setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                       }, 250);
                                       break;
                                   case 'tiltOpen':
                                       setIfExists(id + '.TILT_OPEN', true);
                                       break;
                                   case 'tiltStop':
                                       setIfExists(id + '.TILT_STOP', true);
                                       break;
                                   case 'tiltClose':
                                       setIfExists(id + '.TILT_CLOSE', true);
                                       break;
                                   case 'tiltSlider':
                                       (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                       timeoutSlider = setTimeout(async function () {
                                           setIfExists(id + '.TILT_SET', parseInt(words[4])) ? true : setIfExists(id + '.TILT_ACTUAL', parseInt(words[4]));
                                       }, 250);
                                       break;
                                   case 'brightnessSlider':
                                       (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                       timeoutSlider = setTimeout(async function () {
                                           if (existsObject(id)) {
                                               let o = getObject(id);
                                               let pageItem = findPageItem(id);
                        
                                               switch (o.common.role) {
                                                   case 'dimmer':
                                                       if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
                                                           let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
                                                           setIfExists(id + '.SET', sliderPos) ? true : setIfExists(id + '.ACTUAL', sliderPos);
                                                       } else {
                                                           setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                                       }
                                                       break;
                                                   case 'rgb':
                                                   case 'ct':
                                                   case 'rgbSingle':
                                                   case 'hue':
                                                       if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
                                                           let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
                                                           setIfExists(id + '.DIMMER', sliderPos);
                                                       } else {
                                                           setIfExists(id + '.DIMMER', parseInt(words[4]));
                                                       }
                                                       break;
                                               }
                                           }
                                       }, 250);
                                       break;
                                   case 'colorTempSlider': // Armilar - Slider tickt verkehrt - Hell = 0 / Dunkel = 100 -> Korrektur
                                       (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                       timeoutSlider = setTimeout(async function () {
                                           let pageItem = findPageItem(id);
                                           if (pageItem.minValueColorTemp !== undefined && pageItem.maxValueColorTemp !== undefined) {
                                               let colorTempK = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.minValueColorTemp, pageItem.maxValueColorTemp));
                                               setIfExists(id + '.TEMPERATURE', (colorTempK));
                                           } else {
                                               setIfExists(id + '.TEMPERATURE', 100 - words[4]);
                                           }
                                       }, 250);
                                       break;
                                   case 'colorWheel':
                                       let colorCoordinates = words[4].split('|');
                                       let rgb = pos_to_color(colorCoordinates[0], colorCoordinates[1]);
                                       if (Debug) {
                                           console.log(rgb);
                                       }
                                       if (Debug) {
                                           console.log(getHue(rgb.red, rgb.green, rgb.blue));
                                       }
                                       let o = getObject(id);
                                       switch (o.common.role) {
                                           case 'hue':
                                               setIfExists(id + '.HUE', getHue(rgb.red, rgb.green, rgb.blue));
                                               break;
                                           case 'rgb':
                                               setIfExists(id + '.RED', rgb.red);
                                               setIfExists(id + '.GREEN', rgb.green);
                                               setIfExists(id + '.BLUE', rgb.blue);
                                               break;
                                           case 'rgbSingle':
                                               let pageItem = findPageItem(id);
                                               if (pageItem.colormode == "xy") {
                                                   //Für z.B. Deconz XY
                                                   setIfExists(id + ".RGB", rgb_to_cie(rgb.red, rgb.green, rgb.blue));
                                                   if (Debug) {
                                                       console.log(rgb_to_cie(rgb.red, rgb.green, rgb.blue));
                                                   }
                                               }
                                               else {
                                                   //Für RGB
                                                   setIfExists(id + ".RGB", ConvertRGBtoHex(rgb.red, rgb.green, rgb.blue));
                                               }
                                               break;
                                       }
                                       break;
                                   case 'tempUpd':
                                       setIfExists(id + '.SET', parseInt(words[4]) / 10);
                                       break;
                                   case 'media-back':
                                       setIfExists(id + '.PREV', true);
                                       break;
                                   case 'media-pause':
                                       let pageItemTemp = findPageItem(id);
                                       let adaInstanceSplit = pageItemTemp.adapterPlayerInstance.split('.');
                                       if (adaInstanceSplit[0] == 'squeezeboxrpc') {
                                           let stateVal = getState(pageItemTemp.adapterPlayerInstance + 'state').val;
                                           if (stateVal == 0) {
                                               setState(pageItemTemp.adapterPlayerInstance + 'state', 1);
                                           } else if (stateVal == 1) {
                                               setState(pageItemTemp.adapterPlayerInstance + 'state', 0);
                                           } else if (stateVal == null) {
                                               setState(pageItemTemp.adapterPlayerInstance + 'state', 1);
                                           }
                                       } else {
                                           if (getState(id + '.STATE').val === true) {
                                               setIfExists(id + '.PAUSE', true);
                                           } else {
                                               setIfExists(id + '.PLAY', true);
                                           }
                                       }
                                       break;
                                   case 'media-next':
                                       setIfExists(id + '.NEXT', true);
                                       break;
                                   case 'media-shuffle':
                                       if ((findPageItem(id).adapterPlayerInstance).startsWith("volumio")) { findPageItem(id).playList = []; break; } //Volumio: empty playlist $uha-20230103
                                       if (getState(id + '.SHUFFLE').val == 'off') {
                                           setIfExists(id + '.SHUFFLE', 'on');
                                       } else {
                                           setIfExists(id + '.SHUFFLE', 'off');
                                       }
                                       break;
                                   case 'volumeSlider':
                                       setIfExists(id + '.VOLUME', parseInt(words[4]))
                                       break;
                                   case 'mode-speakerlist':
                                       let pageItem = findPageItem(id);
                                       let adapterInstance = pageItem.adapterPlayerInstance;
                                       let adapter = adapterInstance.split('.');
                                       let deviceAdapter = adapter[0];
                        
                                       switch (deviceAdapter) {
                                           case 'spotify-premium':
                                               let strDevicePI = pageItem.speakerList[words[4]];
                                               let strDeviceID = spotifyGetDeviceID(strDevicePI);
                                               setState(adapterInstance + 'devices.' + strDeviceID + ".useForPlayback", true);
                                               break;
                                           case 'alexa2':
                                               let i_list = Array.prototype.slice.apply($('[state.id="' + adapterInstance + 'Echo-Devices.*.Info.name"]'));
                                               for (let i_index in i_list) {
                                                   let i = i_list[i_index];
                                                   if ((getState(i).val) === pageItem.speakerList[words[4]]) {
                                                       console.log(getState(i).val + ' - ' + pageItem.speakerList[words[4]]);
                                                       let deviceId = i;
                                                       deviceId = deviceId.split('.');
                                                       setIfExists(adapterInstance + 'Echo-Devices.' + pageItem.mediaDevice + '.Commands.textCommand', 'Schiebe meine Musik auf ' + pageItem.speakerList[words[4]]);
                                                       pageItem.mediaDevice = deviceId[3];
                                                   } 
                                               }
                                               break;
                                           case 'sonos':
                                               break;
                                           case 'chromecast':
                                               break;
                                       }
                                       break;
                                   case 'mode-playlist':
                                       let pageItemPL = findPageItem(id);
                                       let adapterInstancePL = pageItemPL.adapterPlayerInstance;
                                       let adapterPL = adapterInstancePL.split('.');
                                       let deviceAdapterPL = adapterPL[0];
                        
                                       switch (deviceAdapterPL) {
                                           case 'spotify-premium':
                                               let strDevicePI = pageItemPL.playList[words[4]];
                                               console.log(strDevicePI);
                                               let playlistListString = (getState(adapterInstancePL + 'playlists.playlistListString').val).split(';');
                                               let playlistListIds = (getState(adapterInstancePL + 'playlists.playlistListIds').val).split(';');
                                               let playlistIndex = playlistListString.indexOf(strDevicePI);
                                               setState(adapterInstancePL + 'playlists.playlistList', playlistListIds[playlistIndex]);
                                               setTimeout(async function () {
                                                   globalTracklist = (function () { try {return JSON.parse(getState(adapterInstancePL + 'player.playlist.trackListArray').val);} catch(e) {return {};}})();
                                               }, 2000);
                                               break;
                                           case 'alexa2':
                                               let tempListItem = pageItemPL.playList[words[4]].split('.');
                                               setState(adapterInstancePL + 'Echo-Devices.' + pageItemPL.mediaDevice + '.Music-Provider.' + tempListItem[0], tempListItem[1]);
                                               break;
                                           case 'volumio':
                                               let strDevicePL = pageItemPL.playList[words[4]];
                                               request({ url:`${getState(adapterInstancePL+'info.host').val}/api/commands/?cmd=playplaylist&name=${strDevicePL}`, headers: {'User-Agent': 'ioBroker'} }, 
                                                         async (error, response, result)=>{}); /* nothing todo @ error */
                                               break;
                                       }
                                       break;
                                   case 'mode-tracklist':
                                       let pageItemTL = findPageItem(id);
                                       let adapterInstanceTL = pageItemTL.adapterPlayerInstance;
                                       let adapterTL = adapterInstanceTL.split('.')
                                       let deviceAdapterTL = adapterTL[0];
                        
                                       switch (deviceAdapterTL) {
                                           case 'spotify-premium':
                                               let trackArray = (function () { try {return JSON.parse(getState(pageItemTL.adapterPlayerInstance + 'player.playlist.trackListArray').val);} catch(e) {return {};}})();
                                               setState(adapterInstanceTL + 'player.trackId', getAttr(trackArray, words[4] + '.id'));
                                               break;
                                           case 'alexa2':
                                               if (Debug) console.log('Aktuell hat alexa2 keine Tracklist');
                                               break;
                                           case 'volumio':
                                               request({ url:`${getState(adapterInstanceTL+'info.host').val}/api/commands/?cmd=play&N=${words[4]}`, headers: {'User-Agent': 'ioBroker'} }, 
                                                   async (error, response, result)=>{}); /* nothing todo @ error */
                                               break;
                                       }
                                       break;
                                   case 'mode-repeat':
                                       let pageItemRP = findPageItem(id);
                                       let adapterInstanceRP = pageItemRP.adapterPlayerInstance;
                                       let adapterRP = adapterInstanceRP.split('.');
                                       let deviceAdapterRP = adapterRP[0];
                        
                                       switch (deviceAdapterRP) {
                                           case 'spotify-premium':
                                               setIfExists(id + '.REPEAT', pageItemRP.repeatList[words[4]]);
                                               break;
                                           case 'alexa2':
                                               break;
                                       }
                                       break;
                                   case 'mode-equalizer':
                                       let pageItemEQ = findPageItem(id);
                                       if (Debug) console.log(id);
                                       let lastIndex = (id.split('.')).pop();
                                       setState(NSPanel_Path + 'Media.Player.' + lastIndex + '.EQ.activeMode', pageItemEQ.equalizerList[words[4]]);
                                       setTimeout(async function () {
                                           GenerateDetailPage('popupInSel','equalizer', pageItemEQ);
                                       }, 2000);
                                       break;
                                   case 'mode-insel':
                                       setIfExists(id + '.VALUE', parseInt(words[4]));
                                       break;
                                   case 'media-OnOff':
                                       let pageItemTem = findPageItem(id);
                                       let adaInstanceSpli = pageItemTem.adapterPlayerInstance.split('.');
                                       if (adaInstanceSpli[0] == 'squeezeboxrpc') {
                                           let stateVal = getState(pageItemTem.adapterPlayerInstance + 'Power').val;
                                           if (stateVal === 0) {
                                               setState(pageItemTem.adapterPlayerInstance + 'Power', 1);
                                               setIfExists(id + '.STOP', false);
                                               setIfExists(id + '.STATE', 1);
                                           } else {
                                               setState(pageItemTem.adapterPlayerInstance + 'Power', 0);
                                               setIfExists(id + '.STOP', true);
                                               setIfExists(id + '.STATE', 0);
                                           }
                                       } else {
                                           setIfExists(id + '.STOP', true);
                                       }
                                       break;
                                   case 'timer-start':
                                       if (words[4] != undefined) {
                                           let timer_panel = words[4].split(':');
                                           setIfExists(id + '.ACTUAL', (parseInt(timer_panel[1]) * 60) + parseInt(timer_panel[2]));
                                       }
                                       setIfExists(id + '.STATE', 'active');
                                       break;
                                   case 'timer-pause':
                                       setIfExists(id + '.STATE', 'paused');
                                       break;
                                   case 'timer-cancle':
                                       setIfExists(id + '.STATE', 'idle');
                                       setIfExists(id + '.ACTUAL', 0);
                                       break;
                                   case 'timer-finish':
                                       setIfExists(id + '.STATE', 'idle');
                                       setIfExists(id + '.ACTUAL', 0);
                                       break;
                                   case 'hvac_action':
                                       if (words[4] == 'BOOT' || words[4] == 'PART' || words[4] == 'AUTT' || words[4] == 'MANT' || words[4] == 'VACT') {
                        
                                           switch (words[4]) {
                                               case 'BOOT':
                                                   setIfExists(words[2] + '.' + 'BOOST', !getState(words[2] + '.' + 'BOOST').val);
                                                   break;
                                               case 'PART':
                                                   setIfExists(words[2] + '.' + 'PARTY', !getState(words[2] + '.' + 'PARTY').val);
                                                   break;
                                               case 'AUTT':
                                                   setIfExists(words[2] + '.' + 'AUTOMATIC', !getState(words[2] + '.' + 'AUTOMATIC').val);
                                                   break;
                                               case 'MANT':
                                                   setIfExists(words[2] + '.' + 'MANUAL', !getState(words[2] + '.' + 'MANUAL').val);
                                                   break;
                                               case 'VACT':
                                                   setIfExists(words[2] + '.' + 'VACATION', !getState(words[2] + '.' + 'VACATION').val);
                                                   break;
                                           }
                                           let modes = ['BOOT', 'PART', 'AUTT', 'MANT', 'VACT'];
                                           let modesDP = ['BOOST', 'PARTY', 'AUTOMATIC', 'MANUAL', 'VACATION'];
                                           for (let mode=0; mode < 5; mode++) {
                                               if (words[4] != modes[mode]) {
                                                   setIfExists(words[2] + '.' + modesDP[mode], false);
                                               }
                                           }
                                           GeneratePage(config.pages[pageId]);
                                       } else {
                                           let HVACMode = 0;
                                           switch (words[4]) {
                                               case 'POWER':
                                                   HVACMode = 0;
                                                   setIfExists(words[2] + '.' + words[4], !getState(words[2] + '.' + words[4]).val);
                                                   if (getState(words[2] + '.' + words[4]).val) {
                                                       HVACMode = 1;
                                                   }
                                                   break;
                                               case 'AUTO':
                                                   HVACMode = 1;
                                                   break;
                                               case 'COOL':
                                                   HVACMode = 2;
                                                   break;
                                               case 'HEAT':
                                                   HVACMode = 3;
                                                   break;
                                               case 'ECO':
                                                   HVACMode = 4;
                                                   break;
                                               case 'FAN':
                                                   HVACMode = 5;
                                                   break;
                                               case 'DRY':
                                                   HVACMode = 6;
                                                   break;
                                               case 'SWING':
                                                   HVACMode = getState(words[2] + '.MODE').val;
                                                   if (getState(words[2] + '.SWING').val == 0) {
                                                       setIfExists(words[2] + '.SWING', 1);
                                                   } else {
                                                       setIfExists(words[2] + '.' + 'SWING', 0);
                                                   }
                                                   break;
                                           }
                                           setIfExists(words[2] + '.' + 'MODE', HVACMode);
                                           GeneratePage(config.pages[pageId]);
                                       }
                                       break;
                                   case 'mode-modus1':
                                       let pageItemT1 = findPageItem(id);
                                       setIfExists(id + '.' + pageItemT1.setThermoAlias[0], pageItemT1.popupThermoMode1[parseInt(words[4])]);
                                       break;
                                   case 'mode-modus2':
                                       let pageItemT2 = findPageItem(id);
                                       setIfExists(id + '.' + pageItemT2.setThermoAlias[1], pageItemT2.popupThermoMode2[parseInt(words[4])]);
                                       break;
                                   case 'mode-modus3':
                                       let pageItemT3 = findPageItem(id);
                                       setIfExists(id + '.' + pageItemT3.setThermoAlias[2], pageItemT3.popupThermoMode3[parseInt(words[4])]);
                                       break;
                                   case 'number-set':
                                       let nobj = getObject(id);
                                       switch (nobj.common.role) {
                                           case 'level.mode.fan':
                                               (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                               timeoutSlider = setTimeout(async function () {
                                                   setIfExists(id + '.SPEED', parseInt(words[4]));
                                               }, 250);
                                               break;
                                           default:    
                                               (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                               timeoutSlider = setTimeout(async function () {
                                                   setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                               }, 250);
                                               break;
                                       }
                                       break;
                                   case 'mode-preset_modes':
                                       setIfExists(id + '.MODE', parseInt(words[4]));
                                       break; 
                                   case 'A1': // Alarm-Page Alarm 1 aktivieren
                                       if (words[4] != '') {
                                           setIfExists(id + '.TYPE', 'A1');
                                           setIfExists(id + '.PIN', words[4]);
                                           setIfExists(id + '.ACTUAL', 'arming');
                                           setIfExists(id + '.PANEL', NSPanel_Path);
                                       }
                                       setTimeout(function(){
                                           GeneratePage(activePage);
                                       },250);
                                       break;
                                   case 'A2': // Alarm-Page Alarm 2 aktivieren
                                       if (words[4] != '') {
                                           setIfExists(id + '.TYPE', 'A2');
                                           setIfExists(id + '.PIN', words[4]);
                                           setIfExists(id + '.ACTUAL', 'arming');
                                           setIfExists(id + '.PANEL', NSPanel_Path);
                                       }
                                       setTimeout(function(){
                                           GeneratePage(activePage);
                                       },250);
                                       break;
                                   case 'A3': // Alarm-Page Alarm 3 aktivieren
                                       if (words[4] != '') {
                                           setIfExists(id + '.TYPE', 'A3');
                                           setIfExists(id + '.PIN', words[4]);
                                           setIfExists(id + '.ACTUAL', 'arming');
                                           setIfExists(id + '.PANEL', NSPanel_Path);
                                       }
                                       setTimeout(function(){
                                           GeneratePage(activePage);
                                       },250);
                                       break;
                                   case 'A4': // Alarm-Page Alarm 4 aktivieren
                                       if (words[4] != '') {
                                           setIfExists(id + '.TYPE', 'A4');
                                           setIfExists(id + '.PIN', words[4]);
                                           setIfExists(id + '.ACTUAL', 'arming');
                                           setIfExists(id + '.PANEL', NSPanel_Path);
                                       }
                                       setTimeout(function(){
                                           GeneratePage(activePage);
                                       },250);
                                       break;
                                   case 'D1': // Alarm-Page Alarm Deaktivieren
                                       if (Debug) {
                                           console.log('D1: ' + getState(id + '.PIN').val);
                                       }
                                       if (Debug) {
                                           console.log(words[4]);
                                       }
                                       if (words[4] != '') {
                                           if (getState(id + '.PIN').val == words[4]) {
                                               setIfExists(id + '.PIN', '0000');
                                               setIfExists(id + '.TYPE', 'D1');
                                               setIfExists(id + '.ACTUAL', 'pending');
                                               setIfExists(id + '.PIN_Failed', 0);
                                           } else {
                                               setIfExists(id + '.PIN_Failed', getState(id + '.PIN_Failed').val + 1);
                                               setIfExists(id + '.ACTUAL', 'triggered');
                                           }
                                           setIfExists(id + '.PANEL', NSPanel_Path);
                                           setTimeout(function(){
                                               GeneratePage(activePage);
                                           },500);
                                       }
                                       break;
                                   default:
                                       break;
                               }
                           } catch (err) {
                               console.log('function HandleButtonEvent: ' + err.message);
                           }
                        }
                        

                        EDIT: Hotfix ist jetzt auch auf Github verfügbar v3.9.0.2

                        ArmilarA Offline
                        ArmilarA Offline
                        Armilar
                        Most Active Forum Testing
                        wrote on last edited by Armilar
                        #2062

                        @tt-tom @wendy2702

                        Es gab tatsächlich 2 Lücken, die den Screensaver zum anhalten gebracht haben.

                        1. Unbekannte Befehle, die in der HMI ausgelöst wurden, jedoch im Script nicht behandelt wurden
                        2. Ein Event hat den Screensaver angehalten, für den Fall, das eine Notify aufgeschaltet wird und die Screensaver-Updates die Notify nicht überschreiben. Das passiert auch immer noch, jedoch wird das bei einem einfachen Druck auf den Screensaver jetzt verhindert.

                        Sollte jetzt funktionieren...

                        Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        wendy2702W 1 Reply Last reply
                        0
                        • ArmilarA Armilar

                          @tt-tom @wendy2702

                          Es gab tatsächlich 2 Lücken, die den Screensaver zum anhalten gebracht haben.

                          1. Unbekannte Befehle, die in der HMI ausgelöst wurden, jedoch im Script nicht behandelt wurden
                          2. Ein Event hat den Screensaver angehalten, für den Fall, das eine Notify aufgeschaltet wird und die Screensaver-Updates die Notify nicht überschreiben. Das passiert auch immer noch, jedoch wird das bei einem einfachen Druck auf den Screensaver jetzt verhindert.

                          Sollte jetzt funktionieren...

                          wendy2702W Offline
                          wendy2702W Offline
                          wendy2702
                          wrote on last edited by wendy2702
                          #2063

                          @armilar @TT-Tom

                          Danke.

                          Werde ich morgen testen

                          EDIT: Der Hotfix funktioniert. Danke für die schnelle Lösung

                          Bitte keine Fragen per PN, die gehören ins Forum!

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          1 Reply Last reply
                          0
                          • D Offline
                            D Offline
                            Dieter Kurz
                            wrote on last edited by
                            #2064

                            Hallo zusammen,
                            ich habe ein Panel mit 3.6.0 erfolgreich am laufen, zumindest mit dem was ich brauche 😉
                            Nun habe ich ein zweites Panel und möchte dies mit der aktuellen Version installieren.
                            Können dann beide parallel betrieben werden, oder bringt das alles durcheinander?
                            Welche Vorgehensweise würdet ihr mir empfehlen?
                            Freue mich auf Tipps und Anregungen ....

                            Dieter

                            ArmilarA T 2 Replies Last reply
                            0
                            • D Dieter Kurz

                              Hallo zusammen,
                              ich habe ein Panel mit 3.6.0 erfolgreich am laufen, zumindest mit dem was ich brauche 😉
                              Nun habe ich ein zweites Panel und möchte dies mit der aktuellen Version installieren.
                              Können dann beide parallel betrieben werden, oder bringt das alles durcheinander?
                              Welche Vorgehensweise würdet ihr mir empfehlen?
                              Freue mich auf Tipps und Anregungen ....

                              Dieter

                              ArmilarA Offline
                              ArmilarA Offline
                              Armilar
                              Most Active Forum Testing
                              wrote on last edited by Armilar
                              #2065

                              @dieter-kurz

                              Im Script gibt es einen Pfad für jedes Panel:

                              const NSPanel_Path = '0_userdata.0.NSPanel.2.'; // Anpassen an das jeweilige NSPanel

                              Die MQTT-Parameter müssen natürlich auch auf das neue Panel angepasst werden.

                              panelRecvTopic: 'mqtt.0.SmartHome.NSPanel_2.tele.RESULT',       // anpassen
                              panelSendTopic: 'mqtt.0.SmartHome.NSPanel_2.cmnd.CustomSend',   // anpassen
                              

                              Das wäre alles...

                              Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                              https://github.com/joBr99/nspanel-lovelace-ui/wiki

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              1 Reply Last reply
                              0
                              • D Dieter Kurz

                                Hallo zusammen,
                                ich habe ein Panel mit 3.6.0 erfolgreich am laufen, zumindest mit dem was ich brauche 😉
                                Nun habe ich ein zweites Panel und möchte dies mit der aktuellen Version installieren.
                                Können dann beide parallel betrieben werden, oder bringt das alles durcheinander?
                                Welche Vorgehensweise würdet ihr mir empfehlen?
                                Freue mich auf Tipps und Anregungen ....

                                Dieter

                                T Offline
                                T Offline
                                TT-Tom
                                wrote on last edited by
                                #2066

                                @dieter-kurz

                                Es gibt schon Unterschiede bei den Parameter zwischen 3.6.0 und 3.9.0. im Script.

                                Gruß Tom
                                https://github.com/tt-tom17
                                Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                NSPanel Script Wiki
                                https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                NSPanel Adapter Wiki
                                https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                1 Reply Last reply
                                0
                                • D Offline
                                  D Offline
                                  Dieter Kurz
                                  wrote on last edited by
                                  #2067

                                  Danke für die Info, läuft so weit mit einer cardEntities Licht1 und Sonos, hab aber jede Menge Warnhinweise
                                  Und noch eine Frage, wir haben insgesamt 4 Sonos Play1 am laufen und ich würde wenigstens zwei davon integrieren, geht das?

                                  ArmilarA 1 Reply Last reply
                                  0
                                  • D Dieter Kurz

                                    Danke für die Info, läuft so weit mit einer cardEntities Licht1 und Sonos, hab aber jede Menge Warnhinweise
                                    Und noch eine Frage, wir haben insgesamt 4 Sonos Play1 am laufen und ich würde wenigstens zwei davon integrieren, geht das?

                                    ArmilarA Offline
                                    ArmilarA Offline
                                    Armilar
                                    Most Active Forum Testing
                                    wrote on last edited by Armilar
                                    #2068

                                    @dieter-kurz

                                    sofern diese im Sonosadapter eine IP haben, ja

                                    Zu den Warnungen im Log kann ich erst etwas sagen, wenn du es sendest 😉

                                    Kleiner Hinweis, in den MRIcons (Script-Config) sind auch Relays mit MQTT-Parametern

                                    Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                    https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                    D 1 Reply Last reply
                                    0
                                    • GarganoG Offline
                                      GarganoG Offline
                                      Gargano
                                      wrote on last edited by
                                      #2069

                                      @Armilar
                                      Johannes hat freundlicherweise meine Anregung für einen alternativen Screensaver mit mehr Infos umgesetzt.
                                      Machst Du da noch die Erweiterungen im NSPanelsTS.ts für IObroker ?

                                      VG Werner

                                      ArmilarA 1 Reply Last reply
                                      0
                                      • ArmilarA Armilar

                                        @dieter-kurz

                                        sofern diese im Sonosadapter eine IP haben, ja

                                        Zu den Warnungen im Log kann ich erst etwas sagen, wenn du es sendest 😉

                                        Kleiner Hinweis, in den MRIcons (Script-Config) sind auch Relays mit MQTT-Parametern

                                        D Offline
                                        D Offline
                                        Dieter Kurz
                                        wrote on last edited by
                                        #2070

                                        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                                        @dieter-kurz

                                        sofern diese im Sonosadapter eine IP haben, ja

                                        Zu den Warnungen im Log kann ich erst etwas sagen, wenn du es sendest 😉

                                        Kleiner Hinweis, in den MRIcons (Script-Config) sind auch Relays mit MQTT-Parametern

                                        Hier mein Log

                                        2023-02-04 15:56:00.476 - info: javascript.0 (327597) Stop script script.js.NSPanels.NSPanel_1_3_9_0
                                        2023-02-04 15:56:00.579 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: compiling TypeScript source...
                                        2023-02-04 15:56:01.888 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: source code did not change, using cached compilation result...
                                        2023-02-04 15:56:02.006 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: Wetter-Alias für accuweather.0. existiert bereits
                                        2023-02-04 15:56:02.097 - warn: javascript.0 (327597) getState "mqtt.0.SmartHome.tele.NSPanel_1.INFO2" not found (3)
                                        2023-02-04 15:56:02.101 - warn: javascript.0 (327597) at get_current_tasmota_ip_address (script.js.NSPanels.NSPanel_1_3_9_0:2792:34)
                                        2023-02-04 15:56:02.101 - warn: javascript.0 (327597) at get_tasmota_status0 (script.js.NSPanels.NSPanel_1_3_9_0:2899:42)
                                        2023-02-04 15:56:02.101 - warn: javascript.0 (327597) at script.js.NSPanels.NSPanel_1_3_9_0:2480:1
                                        2023-02-04 15:56:02.101 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: function get_current_tasmota_ip_address: Cannot read properties of null (reading 'Info2')
                                        2023-02-04 15:56:02.105 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: function check_updates: Cannot read properties of null (reading 'split')
                                        2023-02-04 15:56:02.106 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: registered 31 subscriptions, 7 schedules, 0 messages, 0 logs and 0 file subscriptions
                                        2023-02-04 15:56:02.137 - error: javascript.0 (327597) Request error: Error: getaddrinfo ENOTFOUND undefined
                                        2023-02-04 15:56:02.514 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: Desired TFT Firmware: 49 / v3.9.0
                                        2023-02-04 15:56:02.515 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: Installed TFT Firmware: 49 / v3.9.0
                                        2023-02-04 15:56:02.602 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: get_tasmota_status0Unexpected token u in JSON at position 0
                                        2023-02-04 15:56:02.632 - warn: javascript.0 (327597) getState "mqtt.0.SmartHome.tele.NSPanel_1.INFO2" not found (3)
                                        2023-02-04 15:56:02.633 - warn: javascript.0 (327597) at get_current_tasmota_ip_address (script.js.NSPanels.NSPanel_1_3_9_0:2792:34)
                                        2023-02-04 15:56:02.634 - warn: javascript.0 (327597) at script.js.NSPanels.NSPanel_1_3_9_0:2764:99
                                        2023-02-04 15:56:02.634 - warn: javascript.0 (327597) at step (script.js.NSPanels.NSPanel_1_3_9_0:33:23)
                                        2023-02-04 15:56:02.635 - warn: javascript.0 (327597) at Object.next (script.js.NSPanels.NSPanel_1_3_9_0:14:53)
                                        2023-02-04 15:56:02.636 - warn: javascript.0 (327597) at fulfilled (script.js.NSPanels.NSPanel_1_3_9_0:5:58)
                                        2023-02-04 15:56:02.636 - warn: javascript.0 (327597) at runMicrotasks ()
                                        2023-02-04 15:56:02.636 - warn: javascript.0 (327597) at runNextTicks (node:internal/process/task_queues:61:5)
                                        2023-02-04 15:56:02.637 - warn: javascript.0 (327597) at processImmediate (node:internal/timers:437:9)
                                        2023-02-04 15:56:02.637 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: function get_current_tasmota_ip_address: Cannot read properties of null (reading 'Info2')
                                        2023-02-04 15:56:02.756 - info: javascript.0 (327597) State value to set for "0_userdata.0.NSPanel.NSPanel_1.NSPanel_ipAddress" has to be type "string" but received type "object"
                                        2023-02-04 15:56:03.065 - warn: javascript.0 (327597) getState "mqtt.0.SmartHome.tele.NSPanel_1.INFO2" not found (3)
                                        2023-02-04 15:56:03.066 - warn: javascript.0 (327597) at get_current_tasmota_ip_address (script.js.NSPanels.NSPanel_1_3_9_0:2792:34)
                                        2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at get_current_berry_driver_version (script.js.NSPanels.NSPanel_1_3_9_0:2852:42)
                                        2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at script.js.NSPanels.NSPanel_1_3_9_0:2775:21
                                        2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at step (script.js.NSPanels.NSPanel_1_3_9_0:33:23)
                                        2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at Object.next (script.js.NSPanels.NSPanel_1_3_9_0:14:53)
                                        2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at fulfilled (script.js.NSPanels.NSPanel_1_3_9_0:5:58)
                                        2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at runMicrotasks ()
                                        2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at processTicksAndRejections (node:internal/process/task_queues:96:5)
                                        2023-02-04 15:56:03.068 - warn: javascript.0 (327597) at runNextTicks (node:internal/process/task_queues:65:3)
                                        2023-02-04 15:56:03.068 - warn: javascript.0 (327597) at processImmediate (node:internal/timers:437:9)
                                        2023-02-04 15:56:03.068 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: function get_current_tasmota_ip_address: Cannot read properties of null (reading 'Info2')
                                        2023-02-04 15:56:03.094 - error: javascript.0 (327597) Request error: Error: getaddrinfo ENOTFOUND undefined
                                        2023-02-04 15:56:03.101 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: get_current_berry_driver_version: Unexpected token u in JSON at position 0
                                        
                                        
                                        T 1 Reply Last reply
                                        0
                                        • D Dieter Kurz

                                          @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                                          @dieter-kurz

                                          sofern diese im Sonosadapter eine IP haben, ja

                                          Zu den Warnungen im Log kann ich erst etwas sagen, wenn du es sendest 😉

                                          Kleiner Hinweis, in den MRIcons (Script-Config) sind auch Relays mit MQTT-Parametern

                                          Hier mein Log

                                          2023-02-04 15:56:00.476 - info: javascript.0 (327597) Stop script script.js.NSPanels.NSPanel_1_3_9_0
                                          2023-02-04 15:56:00.579 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: compiling TypeScript source...
                                          2023-02-04 15:56:01.888 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: source code did not change, using cached compilation result...
                                          2023-02-04 15:56:02.006 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: Wetter-Alias für accuweather.0. existiert bereits
                                          2023-02-04 15:56:02.097 - warn: javascript.0 (327597) getState "mqtt.0.SmartHome.tele.NSPanel_1.INFO2" not found (3)
                                          2023-02-04 15:56:02.101 - warn: javascript.0 (327597) at get_current_tasmota_ip_address (script.js.NSPanels.NSPanel_1_3_9_0:2792:34)
                                          2023-02-04 15:56:02.101 - warn: javascript.0 (327597) at get_tasmota_status0 (script.js.NSPanels.NSPanel_1_3_9_0:2899:42)
                                          2023-02-04 15:56:02.101 - warn: javascript.0 (327597) at script.js.NSPanels.NSPanel_1_3_9_0:2480:1
                                          2023-02-04 15:56:02.101 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: function get_current_tasmota_ip_address: Cannot read properties of null (reading 'Info2')
                                          2023-02-04 15:56:02.105 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: function check_updates: Cannot read properties of null (reading 'split')
                                          2023-02-04 15:56:02.106 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: registered 31 subscriptions, 7 schedules, 0 messages, 0 logs and 0 file subscriptions
                                          2023-02-04 15:56:02.137 - error: javascript.0 (327597) Request error: Error: getaddrinfo ENOTFOUND undefined
                                          2023-02-04 15:56:02.514 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: Desired TFT Firmware: 49 / v3.9.0
                                          2023-02-04 15:56:02.515 - info: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: Installed TFT Firmware: 49 / v3.9.0
                                          2023-02-04 15:56:02.602 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: get_tasmota_status0Unexpected token u in JSON at position 0
                                          2023-02-04 15:56:02.632 - warn: javascript.0 (327597) getState "mqtt.0.SmartHome.tele.NSPanel_1.INFO2" not found (3)
                                          2023-02-04 15:56:02.633 - warn: javascript.0 (327597) at get_current_tasmota_ip_address (script.js.NSPanels.NSPanel_1_3_9_0:2792:34)
                                          2023-02-04 15:56:02.634 - warn: javascript.0 (327597) at script.js.NSPanels.NSPanel_1_3_9_0:2764:99
                                          2023-02-04 15:56:02.634 - warn: javascript.0 (327597) at step (script.js.NSPanels.NSPanel_1_3_9_0:33:23)
                                          2023-02-04 15:56:02.635 - warn: javascript.0 (327597) at Object.next (script.js.NSPanels.NSPanel_1_3_9_0:14:53)
                                          2023-02-04 15:56:02.636 - warn: javascript.0 (327597) at fulfilled (script.js.NSPanels.NSPanel_1_3_9_0:5:58)
                                          2023-02-04 15:56:02.636 - warn: javascript.0 (327597) at runMicrotasks ()
                                          2023-02-04 15:56:02.636 - warn: javascript.0 (327597) at runNextTicks (node:internal/process/task_queues:61:5)
                                          2023-02-04 15:56:02.637 - warn: javascript.0 (327597) at processImmediate (node:internal/timers:437:9)
                                          2023-02-04 15:56:02.637 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: function get_current_tasmota_ip_address: Cannot read properties of null (reading 'Info2')
                                          2023-02-04 15:56:02.756 - info: javascript.0 (327597) State value to set for "0_userdata.0.NSPanel.NSPanel_1.NSPanel_ipAddress" has to be type "string" but received type "object"
                                          2023-02-04 15:56:03.065 - warn: javascript.0 (327597) getState "mqtt.0.SmartHome.tele.NSPanel_1.INFO2" not found (3)
                                          2023-02-04 15:56:03.066 - warn: javascript.0 (327597) at get_current_tasmota_ip_address (script.js.NSPanels.NSPanel_1_3_9_0:2792:34)
                                          2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at get_current_berry_driver_version (script.js.NSPanels.NSPanel_1_3_9_0:2852:42)
                                          2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at script.js.NSPanels.NSPanel_1_3_9_0:2775:21
                                          2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at step (script.js.NSPanels.NSPanel_1_3_9_0:33:23)
                                          2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at Object.next (script.js.NSPanels.NSPanel_1_3_9_0:14:53)
                                          2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at fulfilled (script.js.NSPanels.NSPanel_1_3_9_0:5:58)
                                          2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at runMicrotasks ()
                                          2023-02-04 15:56:03.067 - warn: javascript.0 (327597) at processTicksAndRejections (node:internal/process/task_queues:96:5)
                                          2023-02-04 15:56:03.068 - warn: javascript.0 (327597) at runNextTicks (node:internal/process/task_queues:65:3)
                                          2023-02-04 15:56:03.068 - warn: javascript.0 (327597) at processImmediate (node:internal/timers:437:9)
                                          2023-02-04 15:56:03.068 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: function get_current_tasmota_ip_address: Cannot read properties of null (reading 'Info2')
                                          2023-02-04 15:56:03.094 - error: javascript.0 (327597) Request error: Error: getaddrinfo ENOTFOUND undefined
                                          2023-02-04 15:56:03.101 - warn: javascript.0 (327597) script.js.NSPanels.NSPanel_1_3_9_0: get_current_berry_driver_version: Unexpected token u in JSON at position 0
                                          
                                          
                                          T Offline
                                          T Offline
                                          TT-Tom
                                          wrote on last edited by TT-Tom
                                          #2071

                                          @dieter-kurz

                                          Du hast noch Fehler in der Config. Der MQTT Pfad stimmt eventuell nicht. Welche Version vom Script nutz du den jetzt für das Panel. Zeige bitte mal auch den Teil der Config aus dem Script. We.che Tasmota Version läuft auf dem Panel?

                                          Gruß Tom
                                          https://github.com/tt-tom17
                                          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                          NSPanel Script Wiki
                                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                          NSPanel Adapter Wiki
                                          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                          D 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          56

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe