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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. SONOFF NSPanel mit Lovelace UI

NEWS

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

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

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

SONOFF NSPanel mit Lovelace UI

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
7.8k Beiträge 272 Kommentatoren 6.7m Aufrufe 254 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • 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
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • ArmilarA Armilar

            @wendy2702

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

            wendy2702W Offline
            wendy2702W Offline
            wendy2702
            schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                    0
                    • D Offline
                      D Offline
                      Dieter Kurz
                      schrieb am zuletzt editiert von
                      #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 Antworten Letzte Antwort
                      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
                        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • D Offline
                            D Offline
                            Dieter Kurz
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                              0
                              • GarganoG Offline
                                GarganoG Offline
                                Gargano
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                    0
                                    • T TT-Tom

                                      @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?

                                      D Offline
                                      D Offline
                                      Dieter Kurz
                                      schrieb am zuletzt editiert von
                                      #2072

                                      @tt-tom sagte in SONOFF NSPanel mit Lovelace UI:

                                      @dieter-kurz

                                      Du hast noch Fehler in der Config. Den MQTT Pfad stimmt nicht. Welche Version vom Script nutz du den jetzt für das Panel. Zeige bitte mal auch den Teil der Config aus dem Script

                                      Erstmal DANKE für Deine Hilfe!
                                      Hier meine Config:

                                      export const config: Config = {
                                      panelRecvTopic: 'mqtt.0.SmartHome.tele.NSPanel_1.RESULT', // Bitte anpassen
                                      panelSendTopic: 'mqtt.0.SmartHome.cmnd.NSPanel_1.CustomSend', // Bitte anpassen

                                      // 4 kleine Icons im Screensaver
                                      // Mit 3.9.0 neue Parameter - Bitte anpassen - siehe auch Wiki
                                      firstScreensaverEntity:   { ScreensaverEntity: 'accuweather.0.Hourly.h0.PrecipitationProbability',
                                                                  ScreensaverEntityFactor: 1,                                 //New
                                                                  ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                  ScreensaverEntityIcon: 'weather-pouring', 
                                                                  ScreensaverEntityText: 'Regen', 
                                                                  ScreensaverEntityUnitText: '%', 
                                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} 
                                                                },
                                      secondScreensaverEntity:  { ScreensaverEntity: 'parser.0.windSpeed', 
                                                                  ScreensaverEntityFactor: (1000/1000),                       //New
                                                                  ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                                  ScreensaverEntityIcon: 'weather-windy', 
                                                                  ScreensaverEntityText: "Wind", 
                                                                  ScreensaverEntityUnitText: 'km/h', 
                                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 120} 
                                                                },
                                      thirdScreensaverEntity:   { ScreensaverEntity: 'hm-rpc.0.LEQ0227831.1.TEMPERATURE',
                                                                  ScreensaverEntityFactor: 1,                                 //New
                                                                  ScreensaverEntityDecimalPlaces: 0,                          //New  
                                                                  ScreensaverEntityIcon: 'home-thermometer-outline', 
                                                                  ScreensaverEntityText: 'Innen', 
                                                                  ScreensaverEntityUnitText: '°C', 
                                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 40, 'val_best': 22 } 
                                                                },
                                      fourthScreensaverEntity:  { ScreensaverEntity: 'parser.0.outHumidity', 
                                                                  ScreensaverEntityFactor: 1,                                 //New
                                                                  ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                  ScreensaverEntityIcon: 'water-percent', 
                                                                  ScreensaverEntityText: 'Luft', 
                                                                  ScreensaverEntityUnitText: '%', 
                                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} 
                                                                },
                                      
                                      // Indikator Icons im oberen Teil des Screensavers
                                      // Mit 3.9.0 neue Parameter - Bitte anpassen - siehe auch Wiki
                                      mrIcon1ScreensaverEntity: { ScreensaverEntity: 'mqtt.0.SmartHome.stat.NSPanel_1.POWER1', 
                                                                  ScreensaverEntityIconOn: 'lightbulb',                           //Rename
                                                                  ScreensaverEntityIconOff: null, 
                                                                  ScreensaverEntityValue: null,                                   //New
                                                                  ScreensaverEntityValueDecimalPlace : 0,                         //New
                                                                  ScreensaverEntityValueUnit: null,                               //New
                                                                  ScreensaverEntityOnColor: On, 
                                                                  ScreensaverEntityOffColor: HMIOff },
                                      mrIcon2ScreensaverEntity: { ScreensaverEntity: 'mqtt.0.SmartHome.stat.NSPanel_1.POWER2', 
                                                                  ScreensaverEntityIconOn: 'heat-wave',
                                                                  ScreensaverEntityIconOff: null, 
                                                                  ScreensaverEntityValue: NSPanel_Path + 'Sensor.ANALOG.Temperature',
                                                                  ScreensaverEntityValueDecimalPlace : 1,
                                                                  ScreensaverEntityValueUnit: '°', 
                                                                  ScreensaverEntityOnColor: MSRed, 
                                                                  ScreensaverEntityOffColor: Yellow },
                                      
                                      weatherEntity: 'alias.0.Wetter.Pliezhausen',    // Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden
                                      defaultOffColor: Off,               // Default-Farbe für Off-Zustände
                                      defaultOnColor: On,                 // Default-Farbe für On-Zustände
                                      defaultColor: Off,
                                      defaultBackgroundColor: HMIDark,    // Default-Hintergrundfarbe HMIDark oder Black
                                      
                                      // Mit 3.9.0 in Datenpunkte verschoben. Auch über Service Pages konfigurierbar
                                          //alternativeScreensaverLayout: false,
                                          //autoWeatherColorScreensaverLayout: true,
                                          //timeoutScreensaver: 10,
                                          //screenSaverDoubleClick: true,
                                          //temperatureUnit: '°C',
                                          //locale: 'de-DE',                    
                                      
                                      pages: [
                                      
                                              Licht1,
                                              Sonos,
                                              NSPanel_Service         //Auto-Alias Service Page
                                              
                                      ],
                                      subPages: [
                                                  
                                                  NSPanel_Infos,                          //Auto-Alias Service Page
                                                      NSPanel_Wifi_Info_1,                //Auto-Alias Service Page
                                                      NSPanel_Wifi_Info_2,                //Auto-Alias Service Page
                                                      NSPanel_Sensoren,                   //Auto-Alias Service Page
                                                      NSPanel_Hardware,                   //Auto-Alias Service Page
                                                  NSPanel_Einstellungen,                  //Auto-Alias Service Page
                                                      NSPanel_Screensaver,                //Auto-Alias Service Page
                                                          NSPanel_ScreensaverDimmode,     //Auto-Alias Service Page
                                                          NSPanel_ScreensaverOther,       //Auto-Alias Service Page
                                                          NSPanel_Weather,                //Auto-Alias Service Page
                                                          NSPanel_Dateformat,             //Auto-Alias Service Page
                                                          NSPanel_Indicators,             //Auto-Alias Service Page
                                                          NSPanel_Relays,                 //Auto-Alias Service Page
                                                  NSPanel_Firmware,                       //Auto-Alias Service Page
                                                      NSPanel_FirmwareTasmota,            //Auto-Alias Service Page
                                                      NSPanel_FirmwareBerry,              //Auto-Alias Service Page
                                                      NSPanel_FirmwareNextion,            //Auto-Alias Service Page
                                      ],
                                      button1Page: null,   //Beispiel-Seite auf Button 1, wenn Rule2 definiert - Wenn nicht definiert --> button1Page: null, 
                                      button2Page: null    //Beispiel-Seite auf Button 2, wenn Rule2 definiert - Wenn nicht definiert --> button1Page: null,
                                      

                                      };

                                      :

                                      T ArmilarA 2 Antworten Letzte Antwort
                                      0
                                      • GarganoG Gargano

                                        @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 Offline
                                        ArmilarA Offline
                                        Armilar
                                        Most Active Forum Testing
                                        schrieb am zuletzt editiert von
                                        #2073

                                        @gargano

                                        ist schon fertig... kommt mit der 4.0.0

                                        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.

                                        GarganoG 1 Antwort Letzte Antwort
                                        0
                                        • D Dieter Kurz

                                          @tt-tom sagte in SONOFF NSPanel mit Lovelace UI:

                                          @dieter-kurz

                                          Du hast noch Fehler in der Config. Den MQTT Pfad stimmt nicht. Welche Version vom Script nutz du den jetzt für das Panel. Zeige bitte mal auch den Teil der Config aus dem Script

                                          Erstmal DANKE für Deine Hilfe!
                                          Hier meine Config:

                                          export const config: Config = {
                                          panelRecvTopic: 'mqtt.0.SmartHome.tele.NSPanel_1.RESULT', // Bitte anpassen
                                          panelSendTopic: 'mqtt.0.SmartHome.cmnd.NSPanel_1.CustomSend', // Bitte anpassen

                                          // 4 kleine Icons im Screensaver
                                          // Mit 3.9.0 neue Parameter - Bitte anpassen - siehe auch Wiki
                                          firstScreensaverEntity:   { ScreensaverEntity: 'accuweather.0.Hourly.h0.PrecipitationProbability',
                                                                      ScreensaverEntityFactor: 1,                                 //New
                                                                      ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                      ScreensaverEntityIcon: 'weather-pouring', 
                                                                      ScreensaverEntityText: 'Regen', 
                                                                      ScreensaverEntityUnitText: '%', 
                                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} 
                                                                    },
                                          secondScreensaverEntity:  { ScreensaverEntity: 'parser.0.windSpeed', 
                                                                      ScreensaverEntityFactor: (1000/1000),                       //New
                                                                      ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                                      ScreensaverEntityIcon: 'weather-windy', 
                                                                      ScreensaverEntityText: "Wind", 
                                                                      ScreensaverEntityUnitText: 'km/h', 
                                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 120} 
                                                                    },
                                          thirdScreensaverEntity:   { ScreensaverEntity: 'hm-rpc.0.LEQ0227831.1.TEMPERATURE',
                                                                      ScreensaverEntityFactor: 1,                                 //New
                                                                      ScreensaverEntityDecimalPlaces: 0,                          //New  
                                                                      ScreensaverEntityIcon: 'home-thermometer-outline', 
                                                                      ScreensaverEntityText: 'Innen', 
                                                                      ScreensaverEntityUnitText: '°C', 
                                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 40, 'val_best': 22 } 
                                                                    },
                                          fourthScreensaverEntity:  { ScreensaverEntity: 'parser.0.outHumidity', 
                                                                      ScreensaverEntityFactor: 1,                                 //New
                                                                      ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                      ScreensaverEntityIcon: 'water-percent', 
                                                                      ScreensaverEntityText: 'Luft', 
                                                                      ScreensaverEntityUnitText: '%', 
                                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} 
                                                                    },
                                          
                                          // Indikator Icons im oberen Teil des Screensavers
                                          // Mit 3.9.0 neue Parameter - Bitte anpassen - siehe auch Wiki
                                          mrIcon1ScreensaverEntity: { ScreensaverEntity: 'mqtt.0.SmartHome.stat.NSPanel_1.POWER1', 
                                                                      ScreensaverEntityIconOn: 'lightbulb',                           //Rename
                                                                      ScreensaverEntityIconOff: null, 
                                                                      ScreensaverEntityValue: null,                                   //New
                                                                      ScreensaverEntityValueDecimalPlace : 0,                         //New
                                                                      ScreensaverEntityValueUnit: null,                               //New
                                                                      ScreensaverEntityOnColor: On, 
                                                                      ScreensaverEntityOffColor: HMIOff },
                                          mrIcon2ScreensaverEntity: { ScreensaverEntity: 'mqtt.0.SmartHome.stat.NSPanel_1.POWER2', 
                                                                      ScreensaverEntityIconOn: 'heat-wave',
                                                                      ScreensaverEntityIconOff: null, 
                                                                      ScreensaverEntityValue: NSPanel_Path + 'Sensor.ANALOG.Temperature',
                                                                      ScreensaverEntityValueDecimalPlace : 1,
                                                                      ScreensaverEntityValueUnit: '°', 
                                                                      ScreensaverEntityOnColor: MSRed, 
                                                                      ScreensaverEntityOffColor: Yellow },
                                          
                                          weatherEntity: 'alias.0.Wetter.Pliezhausen',    // Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden
                                          defaultOffColor: Off,               // Default-Farbe für Off-Zustände
                                          defaultOnColor: On,                 // Default-Farbe für On-Zustände
                                          defaultColor: Off,
                                          defaultBackgroundColor: HMIDark,    // Default-Hintergrundfarbe HMIDark oder Black
                                          
                                          // Mit 3.9.0 in Datenpunkte verschoben. Auch über Service Pages konfigurierbar
                                              //alternativeScreensaverLayout: false,
                                              //autoWeatherColorScreensaverLayout: true,
                                              //timeoutScreensaver: 10,
                                              //screenSaverDoubleClick: true,
                                              //temperatureUnit: '°C',
                                              //locale: 'de-DE',                    
                                          
                                          pages: [
                                          
                                                  Licht1,
                                                  Sonos,
                                                  NSPanel_Service         //Auto-Alias Service Page
                                                  
                                          ],
                                          subPages: [
                                                      
                                                      NSPanel_Infos,                          //Auto-Alias Service Page
                                                          NSPanel_Wifi_Info_1,                //Auto-Alias Service Page
                                                          NSPanel_Wifi_Info_2,                //Auto-Alias Service Page
                                                          NSPanel_Sensoren,                   //Auto-Alias Service Page
                                                          NSPanel_Hardware,                   //Auto-Alias Service Page
                                                      NSPanel_Einstellungen,                  //Auto-Alias Service Page
                                                          NSPanel_Screensaver,                //Auto-Alias Service Page
                                                              NSPanel_ScreensaverDimmode,     //Auto-Alias Service Page
                                                              NSPanel_ScreensaverOther,       //Auto-Alias Service Page
                                                              NSPanel_Weather,                //Auto-Alias Service Page
                                                              NSPanel_Dateformat,             //Auto-Alias Service Page
                                                              NSPanel_Indicators,             //Auto-Alias Service Page
                                                              NSPanel_Relays,                 //Auto-Alias Service Page
                                                      NSPanel_Firmware,                       //Auto-Alias Service Page
                                                          NSPanel_FirmwareTasmota,            //Auto-Alias Service Page
                                                          NSPanel_FirmwareBerry,              //Auto-Alias Service Page
                                                          NSPanel_FirmwareNextion,            //Auto-Alias Service Page
                                          ],
                                          button1Page: null,   //Beispiel-Seite auf Button 1, wenn Rule2 definiert - Wenn nicht definiert --> button1Page: null, 
                                          button2Page: null    //Beispiel-Seite auf Button 2, wenn Rule2 definiert - Wenn nicht definiert --> button1Page: null,
                                          

                                          };

                                          :

                                          T Offline
                                          T Offline
                                          TT-Tom
                                          schrieb am zuletzt editiert von
                                          #2074

                                          @dieter-kurz

                                          Kannst du mal die Tasmota Version senden.

                                          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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          748

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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