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

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

NEWS

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

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

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

SONOFF NSPanel mit Lovelace UI

SONOFF NSPanel mit Lovelace UI

Scheduled Pinned Locked Moved Hardware
lovelace uinspanelsonoff
7.7k Posts 271 Posters 6.7m Views 253 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Bergi84
    wrote on last edited by
    #4052

    @danny_v1
    puh das ist aber viel verstreuter Code und sicher noch nicht fehlerfrei. Ich versuch mal zumindest den NSPanel teil zu erklären und poste.

    Also damit die Liste aufgeht habe ich einen passenden Button Channel in den Objekten unter userdata angelegt:

    let mainConfig =  <PageGrid>
    {
        'type': 'cardGrid',
        'heading': 'Einstellungen',
        'useColor': true,
        'items': [
            <PageItem>{ id: '0_userdata.0.NSPanel.1.warning.showAlertInfo', icon: 'alert', name: 'Warnings', offColor: Yellow, onColor: Yellow},
    }
    

    Ich triggere einfach auf das umschalten und zeige anschließen das Notify an. Die Daten sind in mehrere Listen von den jeweiligen Überwachungsscripten aufgeteilt. Und jede liste ist als JSON in einem State der ebenfalls unter userdata gespeichert ist abgelegt. Bei jeder Änderung einer dieser Listen sammle ich alle daten ein sortiere Sie und aktualisiere die Anzeige. Das mach folgender code:

    // warn system
    createState(NSPanel_Path + 'warning.cnt');
    createState(NSPanel_Path + 'warning.aktiv');
    
    let warnPageNo;
    let warnPageCnt;
    let warnSubscribeHandler;
    let warningList :warningItem[];
    let warnItemsPerPage = 4;
    
    let warningListIds = [
        {id: '0_userdata.0.sensorSuperVisor.missingSensors', icon: 'connection', prefix: 'Verloren: ', postfix: ' vor '},
        {id: '0_userdata.0.batteryMonitor.batterLow', icon: 'battery-alert-variant-outline', prefix: 'Batterie schwach: ', postfix: ' vor '}
    ]
    function updateWarnings(aObj: iobJS.ChangedStateObject<any,any>)
    {
        warningList = [];
    
        warningListIds.forEach(listEle => {
            JSON.parse(getState(listEle.id).val).forEach((e :warningItem) => {
                e.source = listEle.id; warningList.push(e);
            });
        });
    
        console.log(JSON.stringify(warningListIds));
        console.log(JSON.stringify(warningList));
    
        let listLen = warningList.length;
    
        warningList.sort((a, b) => a.time - b.time);
    
        warnPageCnt = (listLen == 0) ? 1 : ((listLen + warnItemsPerPage-1) / warnItemsPerPage | 0);
    
        console.log('warnPageCnt: ' + warnPageCnt + ', listLen: ' + listLen);
    
        setState(NSPanel_Path + 'warning.cnt', warningList.length);
        setState(NSPanel_Path + 'warning.aktiv', (warningList.length) > 0);
    }
    updateWarnings(null);
    warningListIds.forEach(e => on({id: e.id, change: 'any'}, updateWarnings));
    
    function showAlert(aObj: iobJS.ChangedStateObject<any,any>)
    {
        warnPageNo = 0;
        console.log('show Alert: ' + aObj.state.val);
    
        warnSubscribeHandler = on({id: '0_userdata.0.NSPanel.1.popupNotify.popupNotifyAction', change: 'any'}, switchPage);
        showAlarmPage();
    
        if(Debug) {
            console.log('show Alarmpage');
        }
    }
    
    function switchPage(aObj: iobJS.ChangedStateObject<any,any>)
    {
        if(aObj.state.val) {
            if(warningList.length != 0 && warnPageCnt != warnPageNo + 1) {
                warnPageNo = warnPageNo + 1;
            }
        }
        else
        {
            if(warnPageCnt != 0) {
                warnPageNo = warnPageNo - 1;
            }
        }
        showAlarmPage();
    
        if(Debug) {
            console.log('switch Alarmpage');
        }
    }
    on({id: '0_userdata.0.NSPanel.1.warning.showAlertInfo.SET', change: 'any'}, showAlert);
    
    function showAlarmPage()
    {
        let itemIndex = 0;
        let timeNow = Date.now();
    
        let popupText :string[] = [];
    
        if(warningList.length > 0)
        {
            for(let i = warnPageNo * warnItemsPerPage; i < (warnPageNo + 1)* warnItemsPerPage; i++) {
                if(i < warningList.length) {
                    let deltaTime = (timeNow - warningList[i].time)/1000 | 0;
                    let deltaTimeStr :string;
    
                    if(deltaTime < 60) {
                        deltaTimeStr = deltaTime + 's';
                    } else {
                        deltaTime = deltaTime/60 | 0;
                        if(deltaTime < 60) {
                            deltaTimeStr = deltaTime + 'm';
                        } else {
                            deltaTime = deltaTime/60 | 0;
                            if(deltaTime < 24) {
                                deltaTimeStr = deltaTime + 'h';
                            } else {
                                deltaTime = deltaTime/24 | 0;
                                deltaTimeStr = deltaTime + 'd';
                            }
                        }
                    }
    
                    let sourceList = warningListIds.find(e => e.id == warningList[i].source);
    
                    popupText.push(Icons.GetIcon(sourceList.icon) + ' ' + sourceList.prefix + warningList[i].objId + sourceList.postfix + deltaTimeStr);
                }
            }
        }
        else
        {
            popupText.push('No Warnings');
        }
    
        setStateAsync(popupNotifyHeading, <iobJS.State>{ val: 'Warnungsliste (' + (warnPageNo + 1) + '/' + warnPageCnt + ')', ack: false });
        setStateAsync(popupNotifyHeadingColor, <iobJS.State>{ val: rgb_dec565(Yellow).toString(), ack: false });
        setStateAsync(popupNotifyButton1Text, <iobJS.State>{ val: warnPageNo != 0 ? 'up' : '', ack: false });
        setStateAsync(popupNotifyButton1TextColor, <iobJS.State>{ val: rgb_dec565(White).toString(), ack: false });
        setStateAsync(popupNotifyButton2Text, <iobJS.State>{ val: (warnPageNo + 1) != warnPageCnt ? 'down' : '', ack: false });
        setStateAsync(popupNotifyButton2TextColor, <iobJS.State>{ val: rgb_dec565(White).toString(), ack: false });
        setStateAsync(popupNotifySleepTimeout, <iobJS.State>{ val: getState('0_userdata.0.NSPanel.1.Config.Screensaver.timeoutScreensaver').val, ack: false });
        setStateAsync(popupNotifyInternalName, <iobJS.State>{ val: '', ack: false });
        setStateAsync(popupNotifyLayout, <iobJS.State>{ val: 1, ack: false });
        setStateAsync(popupNotifyFontIdText, <iobJS.State>{ val: 1, ack: false });
        setStateAsync(popupNotifyText, <iobJS.State>{ val: popupText.join('\r\n\r\n'), ack: false });
    }
    
    type warningItem = {
        objId: string,
        time: number,
        source: (string | undefined)
    };
    

    @TT-Tom
    Danke das war genau der hinweis den ich gebraucht habe.

    draexlerD 1 Reply Last reply
    0
    • B Bergi84

      @danny_v1
      puh das ist aber viel verstreuter Code und sicher noch nicht fehlerfrei. Ich versuch mal zumindest den NSPanel teil zu erklären und poste.

      Also damit die Liste aufgeht habe ich einen passenden Button Channel in den Objekten unter userdata angelegt:

      let mainConfig =  <PageGrid>
      {
          'type': 'cardGrid',
          'heading': 'Einstellungen',
          'useColor': true,
          'items': [
              <PageItem>{ id: '0_userdata.0.NSPanel.1.warning.showAlertInfo', icon: 'alert', name: 'Warnings', offColor: Yellow, onColor: Yellow},
      }
      

      Ich triggere einfach auf das umschalten und zeige anschließen das Notify an. Die Daten sind in mehrere Listen von den jeweiligen Überwachungsscripten aufgeteilt. Und jede liste ist als JSON in einem State der ebenfalls unter userdata gespeichert ist abgelegt. Bei jeder Änderung einer dieser Listen sammle ich alle daten ein sortiere Sie und aktualisiere die Anzeige. Das mach folgender code:

      // warn system
      createState(NSPanel_Path + 'warning.cnt');
      createState(NSPanel_Path + 'warning.aktiv');
      
      let warnPageNo;
      let warnPageCnt;
      let warnSubscribeHandler;
      let warningList :warningItem[];
      let warnItemsPerPage = 4;
      
      let warningListIds = [
          {id: '0_userdata.0.sensorSuperVisor.missingSensors', icon: 'connection', prefix: 'Verloren: ', postfix: ' vor '},
          {id: '0_userdata.0.batteryMonitor.batterLow', icon: 'battery-alert-variant-outline', prefix: 'Batterie schwach: ', postfix: ' vor '}
      ]
      function updateWarnings(aObj: iobJS.ChangedStateObject<any,any>)
      {
          warningList = [];
      
          warningListIds.forEach(listEle => {
              JSON.parse(getState(listEle.id).val).forEach((e :warningItem) => {
                  e.source = listEle.id; warningList.push(e);
              });
          });
      
          console.log(JSON.stringify(warningListIds));
          console.log(JSON.stringify(warningList));
      
          let listLen = warningList.length;
      
          warningList.sort((a, b) => a.time - b.time);
      
          warnPageCnt = (listLen == 0) ? 1 : ((listLen + warnItemsPerPage-1) / warnItemsPerPage | 0);
      
          console.log('warnPageCnt: ' + warnPageCnt + ', listLen: ' + listLen);
      
          setState(NSPanel_Path + 'warning.cnt', warningList.length);
          setState(NSPanel_Path + 'warning.aktiv', (warningList.length) > 0);
      }
      updateWarnings(null);
      warningListIds.forEach(e => on({id: e.id, change: 'any'}, updateWarnings));
      
      function showAlert(aObj: iobJS.ChangedStateObject<any,any>)
      {
          warnPageNo = 0;
          console.log('show Alert: ' + aObj.state.val);
      
          warnSubscribeHandler = on({id: '0_userdata.0.NSPanel.1.popupNotify.popupNotifyAction', change: 'any'}, switchPage);
          showAlarmPage();
      
          if(Debug) {
              console.log('show Alarmpage');
          }
      }
      
      function switchPage(aObj: iobJS.ChangedStateObject<any,any>)
      {
          if(aObj.state.val) {
              if(warningList.length != 0 && warnPageCnt != warnPageNo + 1) {
                  warnPageNo = warnPageNo + 1;
              }
          }
          else
          {
              if(warnPageCnt != 0) {
                  warnPageNo = warnPageNo - 1;
              }
          }
          showAlarmPage();
      
          if(Debug) {
              console.log('switch Alarmpage');
          }
      }
      on({id: '0_userdata.0.NSPanel.1.warning.showAlertInfo.SET', change: 'any'}, showAlert);
      
      function showAlarmPage()
      {
          let itemIndex = 0;
          let timeNow = Date.now();
      
          let popupText :string[] = [];
      
          if(warningList.length > 0)
          {
              for(let i = warnPageNo * warnItemsPerPage; i < (warnPageNo + 1)* warnItemsPerPage; i++) {
                  if(i < warningList.length) {
                      let deltaTime = (timeNow - warningList[i].time)/1000 | 0;
                      let deltaTimeStr :string;
      
                      if(deltaTime < 60) {
                          deltaTimeStr = deltaTime + 's';
                      } else {
                          deltaTime = deltaTime/60 | 0;
                          if(deltaTime < 60) {
                              deltaTimeStr = deltaTime + 'm';
                          } else {
                              deltaTime = deltaTime/60 | 0;
                              if(deltaTime < 24) {
                                  deltaTimeStr = deltaTime + 'h';
                              } else {
                                  deltaTime = deltaTime/24 | 0;
                                  deltaTimeStr = deltaTime + 'd';
                              }
                          }
                      }
      
                      let sourceList = warningListIds.find(e => e.id == warningList[i].source);
      
                      popupText.push(Icons.GetIcon(sourceList.icon) + ' ' + sourceList.prefix + warningList[i].objId + sourceList.postfix + deltaTimeStr);
                  }
              }
          }
          else
          {
              popupText.push('No Warnings');
          }
      
          setStateAsync(popupNotifyHeading, <iobJS.State>{ val: 'Warnungsliste (' + (warnPageNo + 1) + '/' + warnPageCnt + ')', ack: false });
          setStateAsync(popupNotifyHeadingColor, <iobJS.State>{ val: rgb_dec565(Yellow).toString(), ack: false });
          setStateAsync(popupNotifyButton1Text, <iobJS.State>{ val: warnPageNo != 0 ? 'up' : '', ack: false });
          setStateAsync(popupNotifyButton1TextColor, <iobJS.State>{ val: rgb_dec565(White).toString(), ack: false });
          setStateAsync(popupNotifyButton2Text, <iobJS.State>{ val: (warnPageNo + 1) != warnPageCnt ? 'down' : '', ack: false });
          setStateAsync(popupNotifyButton2TextColor, <iobJS.State>{ val: rgb_dec565(White).toString(), ack: false });
          setStateAsync(popupNotifySleepTimeout, <iobJS.State>{ val: getState('0_userdata.0.NSPanel.1.Config.Screensaver.timeoutScreensaver').val, ack: false });
          setStateAsync(popupNotifyInternalName, <iobJS.State>{ val: '', ack: false });
          setStateAsync(popupNotifyLayout, <iobJS.State>{ val: 1, ack: false });
          setStateAsync(popupNotifyFontIdText, <iobJS.State>{ val: 1, ack: false });
          setStateAsync(popupNotifyText, <iobJS.State>{ val: popupText.join('\r\n\r\n'), ack: false });
      }
      
      type warningItem = {
          objId: string,
          time: number,
          source: (string | undefined)
      };
      

      @TT-Tom
      Danke das war genau der hinweis den ich gebraucht habe.

      draexlerD Do not disturb
      draexlerD Do not disturb
      draexler
      wrote on last edited by
      #4053

      Will das hier nicht kappern 😉 Aber vielleicht kann ja jemand zwei Panels brauchen bzw. scheut das flashen.

      https://forum.iobroker.net/topic/69548/verkaufe-zwei-sonoff-nspanel

      1 Reply Last reply
      0
      • F Foradh 0

        @tt-tom
        Die Einstellung ScreensaverInfo.activeBrightness hat bei mir keine Auswirkung auf die Helligkeit der popupNotify

        Allerdings bin ich durch deinen Hinweis auf die Benachrichtungen über ScreensaverInfo und nicht über popupNotify gestoßen.
        Diese Anzeige der Benachrichtigung gefällt mir für meinen Fall besser.
        Allerdings habe ich auch hier ein paar Probleme...Ich habe mein Blockly entsprechend angepasst und es wird nun der Datenpunkt ScreensaverInfo.popupNotifyText gefüllt. Die Anzeige funktioniert ebenfalls einwandfrei, auch ist das Display nach wie vor korrekt gedimmt und springt nicht auf 100% Helligkeit.
        Doch wenn ich nun die Benachrichtigung mit Klick auf das Display beende bleiben die Datenpunkte wie ScreensaverInfo.popupNotifyText mit dem Text bestehen.
        Wenn dann eine neue Benachrichtigung mit dem gleichen Text erscheinen soll wird dieser nicht getriggert und auch nichts im Display angezeigt.
        Mein Ziel ist es die Benachrichtigungen so einzustellen, dass die Nachricht und evtl. auch die Farbe des Hintergrund geändert wird, bis man die Benachrichtigung auf dem Display quittiert, dadurch die Datenpunkte wieder geleert werden und auch das Display wieder in die normale Hintergrundfarbe wechselt.

        F Offline
        F Offline
        Foradh 0
        wrote on last edited by
        #4054

        @foradh-0 sagte in SONOFF NSPanel mit Lovelace UI:

        @tt-tom
        Die Einstellung ScreensaverInfo.activeBrightness hat bei mir keine Auswirkung auf die Helligkeit der popupNotify

        Allerdings bin ich durch deinen Hinweis auf die Benachrichtungen über ScreensaverInfo und nicht über popupNotify gestoßen.
        Diese Anzeige der Benachrichtigung gefällt mir für meinen Fall besser.
        Allerdings habe ich auch hier ein paar Probleme...Ich habe mein Blockly entsprechend angepasst und es wird nun der Datenpunkt ScreensaverInfo.popupNotifyText gefüllt. Die Anzeige funktioniert ebenfalls einwandfrei, auch ist das Display nach wie vor korrekt gedimmt und springt nicht auf 100% Helligkeit.
        > Doch wenn ich nun die Benachrichtigung mit Klick auf das Display beende bleiben die Datenpunkte wie ScreensaverInfo.popupNotifyText mit dem Text bestehen.
        Wenn dann eine neue Benachrichtigung mit dem gleichen Text erscheinen soll wird dieser nicht getriggert und auch nichts im Display angezeigt.
        Mein Ziel ist es die Benachrichtigungen so einzustellen, dass die Nachricht und evtl. auch die Farbe des Hintergrund geändert wird, bis man die Benachrichtigung auf dem Display quittiert, dadurch die Datenpunkte wieder geleert werden und auch das Display wieder in die normale Hintergrundfarbe wechselt.

        Hat evtl. jemand die Benachrichtigungen so konfiguriert wie ich es hier beschrieben hatte und kann mir seine Konfiguration als Beispiel zur Verfügung stellen?

        Vielen Dank im Voraus

        T 1 Reply Last reply
        0
        • F Foradh 0

          @foradh-0 sagte in SONOFF NSPanel mit Lovelace UI:

          @tt-tom
          Die Einstellung ScreensaverInfo.activeBrightness hat bei mir keine Auswirkung auf die Helligkeit der popupNotify

          Allerdings bin ich durch deinen Hinweis auf die Benachrichtungen über ScreensaverInfo und nicht über popupNotify gestoßen.
          Diese Anzeige der Benachrichtigung gefällt mir für meinen Fall besser.
          Allerdings habe ich auch hier ein paar Probleme...Ich habe mein Blockly entsprechend angepasst und es wird nun der Datenpunkt ScreensaverInfo.popupNotifyText gefüllt. Die Anzeige funktioniert ebenfalls einwandfrei, auch ist das Display nach wie vor korrekt gedimmt und springt nicht auf 100% Helligkeit.
          > Doch wenn ich nun die Benachrichtigung mit Klick auf das Display beende bleiben die Datenpunkte wie ScreensaverInfo.popupNotifyText mit dem Text bestehen.
          Wenn dann eine neue Benachrichtigung mit dem gleichen Text erscheinen soll wird dieser nicht getriggert und auch nichts im Display angezeigt.
          Mein Ziel ist es die Benachrichtigungen so einzustellen, dass die Nachricht und evtl. auch die Farbe des Hintergrund geändert wird, bis man die Benachrichtigung auf dem Display quittiert, dadurch die Datenpunkte wieder geleert werden und auch das Display wieder in die normale Hintergrundfarbe wechselt.

          Hat evtl. jemand die Benachrichtigungen so konfiguriert wie ich es hier beschrieben hatte und kann mir seine Konfiguration als Beispiel zur Verfügung stellen?

          Vielen Dank im Voraus

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

          @foradh-0
          Der Trigger reagiert auf die Datenpunkte ScreensaverInfo.popupNotifyHeading und ScreensaverInfo.popupNotifyText. Damit der Trigger immer reagiert habe ich zur Meldung (TEXT) immer die Uhrzeit mit eingefügt. Damit sehe ich auch, wann die Meldung aufgelaufen ist.

          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

          F 1 Reply Last reply
          1
          • T TT-Tom

            @foradh-0
            Der Trigger reagiert auf die Datenpunkte ScreensaverInfo.popupNotifyHeading und ScreensaverInfo.popupNotifyText. Damit der Trigger immer reagiert habe ich zur Meldung (TEXT) immer die Uhrzeit mit eingefügt. Damit sehe ich auch, wann die Meldung aufgelaufen ist.

            F Offline
            F Offline
            Foradh 0
            wrote on last edited by
            #4056

            @tt-tom
            Vielen Dank Tom 👍

            1 Reply Last reply
            0
            • T TT-Tom

              @danny_v1

              Ja das Script ist schon sehr mächtig geworden und hat dadurch sehr viele Einstellungsmöglichkeiten. Ich muss auch öfter nochmal in den Code sehen, um nicht falsches zu schreiben. Aber wie du siehst passiert mir das auch hin und wieder. Weiter viel Spass

              D Offline
              D Offline
              danny_v1
              wrote on last edited by
              #4057

              @tt-tom
              Ich habe heute mal die Navigation angepasst, der Fehler ist immer noch vorhanden (beim Schliessen des Popups wird die Subpage als CardEntitie anstatt PageGrid angezeigt).
              Dabei habe ich gleich mal die Variante 3 (dynamische Icons getestet), und hier ändert sich bei mir die Farbe des Icons nicht egal ob der Datenpunkt den ich bei id eintrage true oder false ist. Hier ist die Seiten Konfig dazu:

                         let Wohnzimmer1 = <PageGrid>
              
                          {
                              "type": "cardGrid",
                              "heading": "Wohnzimmer 1",
                              "useColor": true,
                              "subPage": true,
                              "parent": Obergeschoss,
                              'prev': undefined,
                              'next': 'Wohnzimmer2',
                              'home': undefined,
                              "items": [
                                      <PageItem>{ navigate: true, id: 'alias.0.Wohnzimmer.Deckenlampe.Alle.Info.ACTUAL.ACTUAL', targetPage: "Deckenlampen_WZ", icon: "ceiling-light-multiple", useColor:true, onColor: Yellow, offColor: White, name: "Deckenlampen"},
                                      <PageItem>{ navigate: true, id: null, targetPage: "Lampen_WZ", icon: "floor-lamp", onColor: White, name: "Lampen"},
                                      <PageItem>{ navigate: true, id: null, targetPage: "Lampen2_WZ", icon: "floor-lamp", onColor: White, name: "Lampen sonstige"},
                                      <PageItem>{ navigate: true, id: null, targetPage: "Alexa_WZ", icon: "music", onColor: White, name: "Alexa"}
                              ]
              
                          };
              

              Woran könnte das liegen?

              ArmilarA 1 Reply Last reply
              0
              • D danny_v1

                @tt-tom
                Ich habe heute mal die Navigation angepasst, der Fehler ist immer noch vorhanden (beim Schliessen des Popups wird die Subpage als CardEntitie anstatt PageGrid angezeigt).
                Dabei habe ich gleich mal die Variante 3 (dynamische Icons getestet), und hier ändert sich bei mir die Farbe des Icons nicht egal ob der Datenpunkt den ich bei id eintrage true oder false ist. Hier ist die Seiten Konfig dazu:

                           let Wohnzimmer1 = <PageGrid>
                
                            {
                                "type": "cardGrid",
                                "heading": "Wohnzimmer 1",
                                "useColor": true,
                                "subPage": true,
                                "parent": Obergeschoss,
                                'prev': undefined,
                                'next': 'Wohnzimmer2',
                                'home': undefined,
                                "items": [
                                        <PageItem>{ navigate: true, id: 'alias.0.Wohnzimmer.Deckenlampe.Alle.Info.ACTUAL.ACTUAL', targetPage: "Deckenlampen_WZ", icon: "ceiling-light-multiple", useColor:true, onColor: Yellow, offColor: White, name: "Deckenlampen"},
                                        <PageItem>{ navigate: true, id: null, targetPage: "Lampen_WZ", icon: "floor-lamp", onColor: White, name: "Lampen"},
                                        <PageItem>{ navigate: true, id: null, targetPage: "Lampen2_WZ", icon: "floor-lamp", onColor: White, name: "Lampen sonstige"},
                                        <PageItem>{ navigate: true, id: null, targetPage: "Alexa_WZ", icon: "music", onColor: White, name: "Alexa"}
                                ]
                
                            };
                

                Woran könnte das liegen?

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

                @danny_v1 sagte in SONOFF NSPanel mit Lovelace UI:

                                                                                                                                                                                                        "items": [
                

                Der Fehler dürfte dann wohl hier liegen:

                ACTUAL.ACTUAL

                Das .ACTUAL wird nicht mitgegeben... Zwei machen es aber auch nicht besser 😉

                Heißt der wirklich?:

                id: 'alias.0.Wohnzimmer.Deckenlampe.Alle.Info
                

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

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

                D 1 Reply Last reply
                0
                • ArmilarA Armilar

                  @danny_v1 sagte in SONOFF NSPanel mit Lovelace UI:

                                                                                                                                                                                                          "items": [
                  

                  Der Fehler dürfte dann wohl hier liegen:

                  ACTUAL.ACTUAL

                  Das .ACTUAL wird nicht mitgegeben... Zwei machen es aber auch nicht besser 😉

                  Heißt der wirklich?:

                  id: 'alias.0.Wohnzimmer.Deckenlampe.Alle.Info
                  
                  D Offline
                  D Offline
                  danny_v1
                  wrote on last edited by
                  #4059

                  @armilar Danke, manchmal sollte man sich abends doch besser eine andere Aufgabe suchen!
                  Das zweite Actual passt aber, habe warum auch immer den Ordner so genannt.

                  1 Reply Last reply
                  1
                  • CiwaC Offline
                    CiwaC Offline
                    Ciwa
                    wrote on last edited by
                    #4060

                    Hallo,

                    ich habe meine beiden NS Panels auf die TypeScript v4.3.1.3 umgestellt. Funktioniert alles bestens......Nur der rechte Button lässt sich nicht überreden die Seite mit der Gäste Wlan Konfiguration anzuzeigen. Im Type Script kann ich "Page" nicht verwenden. Da kommt folgender Fehler:

                    19:57:42.657	error	javascript.0 (452) script.js.common.NS_Panel: TypeScript compilation failed: mode: page, ^ ERROR: Cannot find name 'page'.  
                    
                     button2: {
                            mode: page,     // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
                            page: Wlan,     // Zielpage - Verwendet wenn mode = page (bisher button2Page)
                            entity: null,   // Zielentity - Verwendet wenn mode = set oder toggle
                            setValue: null  // Zielwert - Verwendet wenn mode = set
                        }
                    

                    Im NS Panel habe ich folgendes eingegeben:

                    Rule2 on Button2#state do Publish SmartHome/%topic%/tele/RESULT {"CustomRecv":"event,button2"} endon
                    
                    Rule2 On
                    

                    Wahrscheinlich nur eine dämliche Kleinigkeit.....aber ich komm nicht drauf 😞

                    Danke für eure Hilfe

                    Gruß

                    Ciwa

                    no blaming, no complaining, no excuses......only responsibility

                    ArmilarA 1 Reply Last reply
                    0
                    • CiwaC Ciwa

                      Hallo,

                      ich habe meine beiden NS Panels auf die TypeScript v4.3.1.3 umgestellt. Funktioniert alles bestens......Nur der rechte Button lässt sich nicht überreden die Seite mit der Gäste Wlan Konfiguration anzuzeigen. Im Type Script kann ich "Page" nicht verwenden. Da kommt folgender Fehler:

                      19:57:42.657	error	javascript.0 (452) script.js.common.NS_Panel: TypeScript compilation failed: mode: page, ^ ERROR: Cannot find name 'page'.  
                      
                       button2: {
                              mode: page,     // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
                              page: Wlan,     // Zielpage - Verwendet wenn mode = page (bisher button2Page)
                              entity: null,   // Zielentity - Verwendet wenn mode = set oder toggle
                              setValue: null  // Zielwert - Verwendet wenn mode = set
                          }
                      

                      Im NS Panel habe ich folgendes eingegeben:

                      Rule2 on Button2#state do Publish SmartHome/%topic%/tele/RESULT {"CustomRecv":"event,button2"} endon
                      
                      Rule2 On
                      

                      Wahrscheinlich nur eine dämliche Kleinigkeit.....aber ich komm nicht drauf 😞

                      Danke für eure Hilfe

                      Gruß

                      Ciwa

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

                      @ciwa

                      Wie sieht denn die Seite Wlan aus?

                      EDIT:

                          button2: {
                              mode: 'page',   // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
                              page: Wlan,  // Zielpage - Verwendet wenn mode = page (bisher button2Page)
                              entity: null,   // Zielentity - Verwendet wenn mode = set oder toggle
                              setValue: null  // Zielwert - Verwendet wenn mode = set
                          }
                      

                      denke so wird es funktionieren. page ist ein String 😊

                      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.

                      CiwaC 1 Reply Last reply
                      1
                      • ArmilarA Armilar

                        @ciwa

                        Wie sieht denn die Seite Wlan aus?

                        EDIT:

                            button2: {
                                mode: 'page',   // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
                                page: Wlan,  // Zielpage - Verwendet wenn mode = page (bisher button2Page)
                                entity: null,   // Zielentity - Verwendet wenn mode = set oder toggle
                                setValue: null  // Zielwert - Verwendet wenn mode = set
                            }
                        

                        denke so wird es funktionieren. page ist ein String 😊

                        CiwaC Offline
                        CiwaC Offline
                        Ciwa
                        wrote on last edited by
                        #4062

                        @armilar

                        das wars.....eine dämliche Kleinigkeit. 🖖 Ist halt ein String........mano 🙂

                        Vielen Dank......

                        Gruß

                        Ciwa

                        no blaming, no complaining, no excuses......only responsibility

                        ArmilarA 1 Reply Last reply
                        1
                        • CiwaC Ciwa

                          @armilar

                          das wars.....eine dämliche Kleinigkeit. 🖖 Ist halt ein String........mano 🙂

                          Vielen Dank......

                          Gruß

                          Ciwa

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

                          @ciwa

                          ist so - manchmal ist der Wald einfach komplett weg. Viel Spaß noch 😊

                          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.

                          X 1 Reply Last reply
                          1
                          • ArmilarA Armilar

                            @ciwa

                            ist so - manchmal ist der Wald einfach komplett weg. Viel Spaß noch 😊

                            X Offline
                            X Offline
                            xelarep
                            wrote on last edited by xelarep
                            #4064

                            Puh, ich hoffe ihr steinigt mich nicht, aber alle 4.000+ Beiträge vorher durchzusehen...

                            Ich hab mir die letzten Tage ein NS Panel zugelegt und dieses gestern mit einer ersten Konfiguration in Betrieb genommen - funktioniert soweit so gut:

                            Tasmota 13.2.0(nspanel), aktuellen Berrydriver 9, DisplayFirmware 53/4.3.1 - 'ganz frisch'

                            Im moment hab ich nur den Bildschirmschoner im advanced Modus mit Wettervorhersage am laufen. Ansonsten die Standardseite zur Abfrage/Konfiguration des Panels

                            Ich hab das PanelTemplate um ein fehlendes 6. Symbol in der bottomScreenSaverEntity für advanced erweitert, sowie die leftScreenSaver entity gefüllt. Ale Wetterdienst AccuWeather eingerichtet. die mrIconX entities zeigen Raumtemperatur und Feuchte.

                            Im Idealfall sieh das dann im Wechsel etwa so aus

                            Bildschirmfoto 2023-10-29 um 19.49.19.png Bildschirmfoto 2023-10-29 um 19.47.04.png

                            Allerdings habe ich immer wieder für ein paar Sekunden 'Geisterbilder' aus den Default Ansichten

                            Bildschirmfoto 2023-10-29 um 19.48.06.png

                            Das ist quasi die Konfiguration wie sie aus dem Ursprungstemplate kommt, ohne Left und 6. Bottom. Lustigerweise geht die Luftfeuchte dann mit einer Zehntelstelle mehr an (hatte ich zwischendrin mal experimentier...). Manchmal eine Sekunde, manchmal 4-6s.

                            Woher kommt das, und wie bekomme ich das weg?

                            Was ich bisher probiert habe: Panel-Script angehalten, alias.0.xxx und 0userdata.xxx Zweige für das Panel komplett gelöscht und mit Scriptstart neu generiert - keine Änderung

                            GarganoG 1 Reply Last reply
                            0
                            • X xelarep

                              Puh, ich hoffe ihr steinigt mich nicht, aber alle 4.000+ Beiträge vorher durchzusehen...

                              Ich hab mir die letzten Tage ein NS Panel zugelegt und dieses gestern mit einer ersten Konfiguration in Betrieb genommen - funktioniert soweit so gut:

                              Tasmota 13.2.0(nspanel), aktuellen Berrydriver 9, DisplayFirmware 53/4.3.1 - 'ganz frisch'

                              Im moment hab ich nur den Bildschirmschoner im advanced Modus mit Wettervorhersage am laufen. Ansonsten die Standardseite zur Abfrage/Konfiguration des Panels

                              Ich hab das PanelTemplate um ein fehlendes 6. Symbol in der bottomScreenSaverEntity für advanced erweitert, sowie die leftScreenSaver entity gefüllt. Ale Wetterdienst AccuWeather eingerichtet. die mrIconX entities zeigen Raumtemperatur und Feuchte.

                              Im Idealfall sieh das dann im Wechsel etwa so aus

                              Bildschirmfoto 2023-10-29 um 19.49.19.png Bildschirmfoto 2023-10-29 um 19.47.04.png

                              Allerdings habe ich immer wieder für ein paar Sekunden 'Geisterbilder' aus den Default Ansichten

                              Bildschirmfoto 2023-10-29 um 19.48.06.png

                              Das ist quasi die Konfiguration wie sie aus dem Ursprungstemplate kommt, ohne Left und 6. Bottom. Lustigerweise geht die Luftfeuchte dann mit einer Zehntelstelle mehr an (hatte ich zwischendrin mal experimentier...). Manchmal eine Sekunde, manchmal 4-6s.

                              Woher kommt das, und wie bekomme ich das weg?

                              Was ich bisher probiert habe: Panel-Script angehalten, alias.0.xxx und 0userdata.xxx Zweige für das Panel komplett gelöscht und mit Scriptstart neu generiert - keine Änderung

                              GarganoG Offline
                              GarganoG Offline
                              Gargano
                              wrote on last edited by Gargano
                              #4065

                              @xelarep Starte mal die js-Instanz neu unter Instanzen

                              X 1 Reply Last reply
                              2
                              • GarganoG Gargano

                                @xelarep Starte mal die js-Instanz neu unter Instanzen

                                X Offline
                                X Offline
                                xelarep
                                wrote on last edited by
                                #4066

                                @gargano Krass! Wieder knapp an der IT Regel Nummer 1 - "Boot tut Gut!" - vorbeigekommen.

                                Ich hab mich jetzt mal 3 Minuten hingestellt und keine Geisterbilder mehr gesehen, Danke!

                                GarganoG 1 Reply Last reply
                                0
                                • X xelarep

                                  @gargano Krass! Wieder knapp an der IT Regel Nummer 1 - "Boot tut Gut!" - vorbeigekommen.

                                  Ich hab mich jetzt mal 3 Minuten hingestellt und keine Geisterbilder mehr gesehen, Danke!

                                  GarganoG Offline
                                  GarganoG Offline
                                  Gargano
                                  wrote on last edited by
                                  #4067

                                  @xelarep Hast Du die aktuelle Script Version verwendet ? Eigentlich sollte da die onStop Funktion enthalten sein, der die Schedules löscht. Wenn die nicht explizit gelöscht werden, laufen die weiter, auch wenn das Script gestoppt wurde.

                                  X 1 Reply Last reply
                                  0
                                  • GarganoG Gargano

                                    @xelarep Hast Du die aktuelle Script Version verwendet ? Eigentlich sollte da die onStop Funktion enthalten sein, der die Schedules löscht. Wenn die nicht explizit gelöscht werden, laufen die weiter, auch wenn das Script gestoppt wurde.

                                    X Offline
                                    X Offline
                                    xelarep
                                    wrote on last edited by
                                    #4068

                                    @gargano welches Skript meinst Du? Im Prinzip ja, alles Stand Donnerstag 26.10.

                                    ArmilarA 1 Reply Last reply
                                    1
                                    • X xelarep

                                      @gargano welches Skript meinst Du? Im Prinzip ja, alles Stand Donnerstag 26.10.

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

                                      @xelarep

                                      Passt - die onStop ist auch drin... Denke mal da war irgendetwas anderes am Haken...

                                      @Gargano meinte nur, es sollten sich beim Beenden des Scriptes alle offenen Timer automatisch schließen, da das speziell im Script berücksichtigt wird...

                                      Falls das nochmal vorkommt, kurz bescheid geben...

                                      Ansonsten noch viel Spaß beim Konfigurieren. 😊

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

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

                                      1 Reply Last reply
                                      1
                                      • L L4rs

                                        @tt-tom Ist hier auch so, der Raspberry steht auf Europa/Berlin, die Uhrzeit ist aktuell, ioBroker steht ebenfalls auf Deutsch mit dem Datumsformat DD.MM.YYYY und der JS_Adapter verwendet die Systemeinstellungen.

                                        Das Blockly liefert bei mir aber auch den falschen Wert. 02.11.2023 -> 11.02.23.

                                        Gruß, Lars

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

                                        @l4rs

                                        @tt-tom Ist hier auch so, der Raspberry steht auf Europa/Berlin, die Uhrzeit ist aktuell, ioBroker steht ebenfalls auf Deutsch mit dem Datumsformat DD.MM.YYYY und der JS_Adapter verwendet die Systemeinstellungen.

                                        Das Blockly liefert bei mir aber auch den falschen Wert. 02.11.2023 -> 11.02.23.

                                        Gruß, Lars

                                        Das liegt in der Tat an JS-Funktionen (ggfs. sogar an NodeJS). Die Funktionen Date.parse() und formatDate() liefern teils keine korrekten Ergebnisse. Gibt dazu bereits ein (interessanterweise recht altes) github Issue von @haus-automatisierung

                                        https://github.com/ioBroker/ioBroker.javascript/issues/980

                                        Ich bin immer noch in der Abstimmung mit @TT-Tom. Wir werden jedoch in Kürze eine funktionierende Alternative in die nächste Version bringen... Erste Test bringen schon akzeptable Ergebnisse... Also noch kurz die Füße stillhalten --> Die Lösung kommt... 😊

                                        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.

                                        ArmilarA 1 Reply Last reply
                                        2
                                        • ArmilarA Armilar

                                          @l4rs

                                          @tt-tom Ist hier auch so, der Raspberry steht auf Europa/Berlin, die Uhrzeit ist aktuell, ioBroker steht ebenfalls auf Deutsch mit dem Datumsformat DD.MM.YYYY und der JS_Adapter verwendet die Systemeinstellungen.

                                          Das Blockly liefert bei mir aber auch den falschen Wert. 02.11.2023 -> 11.02.23.

                                          Gruß, Lars

                                          Das liegt in der Tat an JS-Funktionen (ggfs. sogar an NodeJS). Die Funktionen Date.parse() und formatDate() liefern teils keine korrekten Ergebnisse. Gibt dazu bereits ein (interessanterweise recht altes) github Issue von @haus-automatisierung

                                          https://github.com/ioBroker/ioBroker.javascript/issues/980

                                          Ich bin immer noch in der Abstimmung mit @TT-Tom. Wir werden jedoch in Kürze eine funktionierende Alternative in die nächste Version bringen... Erste Test bringen schon akzeptable Ergebnisse... Also noch kurz die Füße stillhalten --> Die Lösung kommt... 😊

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

                                          v4.3.2 - Update

                                          91fe4d4d-e8d5-46ee-a241-52e7a95c5d11-image.png

                                          • Das TS-Script in der Version v4.3.2.1 bringt neue Methoden in der Datumsformatierung im Screensaver, da die Standardmethoden im JavaScript teils fehlerbehaftet sind und bei bestimmten Tagen, Tag und Monat vertauschen. Um die aktuelle Version des TS-Script zu benutzen sind zwei npm Module (moment und moment-parseformat) in die JS-Adapter-Instanz einzutragen.

                                            Anleitung siehe Wiki:
                                            https://github.com/joBr99/nspanel-lovelace-ui/wiki/iobroker---Basisinstallation#8--einstellungen-in-js-adapter-instanz

                                            Um eine fehlerhafte Darstellung der Formate zu vermeiden, könnte eine Anpassung der ScreensaverEntities erforderlich sein, sofern ScreensaverEntityDateFormat verwendet wird.

                                            Die neue Formatierung sieht wie folgt aus...
                                            e327ee5a-6fc4-4c37-b4ef-ae56b229f2a8-image.png
                                            ... und ist hier jetzt ausführlich in der Wiki beschrieben:
                                            https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400

                                            Das aktuelle TS-Script findet ihr hier:
                                            https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts

                                            Es reicht den unteren Teil des Scriptes zu ersetzen ab:

                                            // _______________ Ab hier keine Konfiguration mehr ____
                                            
                                          • Das TFT-Update korrigiert fehlerhafte Darstellungen beim Wechsel zu benachbarten Cards (Pages) neben einer cardGrid2. Einfach nachfolgenden Befehl in der Tasmota-Console ausführen...

                                            FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.3.2.tft
                                            

                                            ... oder über das Service-Menü des NSPanels aktualisieren...

                                          Viel Spaß mit dem Update: 😊

                                          Armilar und @TT-Tom

                                          EDIT:
                                          zu Fragen und Anregungen wie immer nachfragen. 😉

                                          Änderungen: https://github.com/joBr99/nspanel-lovelace-ui/commit/1bc042d126b2d8255334eb1ead206213fec5235e

                                          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.

                                          X 1 Reply Last reply
                                          5
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          608

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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