Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. SONOFF NSPanel mit Lovelace UI

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

SONOFF NSPanel mit Lovelace UI

Scheduled Pinned Locked Moved Hardware
lovelace uinspanelsonoff
7.9k Posts 277 Posters 7.1m Views 262 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.
  • E Offline
    E Offline
    eMd
    wrote on last edited by
    #4046

    Ich denke mal das wird bestimmt bald ein Adapter werden um alles ein wenig zu vereinfachen 😉😉😉

    Master: Intel NUC 16GB/500GB
    Slave: Raspberry Pi 3 + Homematicmodul
    Shelly, Google Home, Zigbee Aqara, Sonoff

    Meine VIS: https://youtu.be/JMYr2KYlpME

    1 Reply Last reply
    0
    • ArmilarA Armilar

      @Bergi84

      kam keine Antwort mehr...

      Ich habe die Änderungen in die v4.3.1.6 gesetzt...

      fe09ab24-9edc-4164-9123-95b87b4f1ab0-image.png

      Wer die Funktionalität der erweiterten Alias-Gerätetypen in der Navi verwenden möchte, kann den unteren Teil des NSPanelTs.ts austauschen.

      Siehe Post von @Bergi84

      @all
      Übrigens hab ich gleich auch noch einen Verbesserungswunsch den ich hier zur Diskussion stellen wollte. Und zwar geht es darum dass ich gerne hätte wenn ich zB auf auf einer GridPage auf die Temperatur vom zB. Wohnzimmer drücke dass sich dann eine subPage öffnet. Durch hinzufügen entsprechenden cases in der Funktion CreateEntity in der switch abfrage für die dynamischen navi icons hab ich das mal ausprobiert und in meinem Fall funktioniert das.

      geänderte Config damit es auch funktioniert:

      let NSPanel_Temp = <PageGrid>
      {
          'type': 'cardGrid',
          'heading': 'Temperaturen',
          'useColor': true,
          'items': [
              <PageItem>{ navigate: true, targetPage: 'NSPanel_TestSub', id: 'alias.0.devices.TempSchlafzimmer', unit: '°C', name: 'Schlafzimmer', offColor: MSRed, onColor: MSGreen, useValue: true, colorScale: {'val_min': 20, 'val_max': 25, 'val_best': 23} },
          ]
      };
      

      Ansonsten hat das Update keine Auswirkungen auf bisherige Funktionalität...

      B Offline
      B Offline
      Bergi84
      wrote on last edited by Bergi84
      #4047

      @Bergi84

      kam keine Antwort mehr...

      Ich habe die Änderungen in die v4.3.1.6 gesetzt...

      fe09ab24-9edc-4164-9123-95b87b4f1ab0-image.png

      Wer die Funktionalität der erweiterten Alias-Gerätetypen in der Navi verwenden möchte, kann den unteren Teil des NSPanelTs.ts austauschen.

      Siehe Post von @Bergi84

      @all
      Übrigens hab ich gleich auch noch einen Verbesserungswunsch den ich hier zur Diskussion stellen wollte. Und zwar geht es darum dass ich gerne hätte wenn ich zB auf auf einer GridPage auf die Temperatur vom zB. Wohnzimmer drücke dass sich dann eine subPage öffnet. Durch hinzufügen entsprechenden cases in der Funktion CreateEntity in der switch abfrage für die dynamischen navi icons hab ich das mal ausprobiert und in meinem Fall funktioniert das.

      geänderte Config damit es auch funktioniert:

      let NSPanel_Temp = <PageGrid>
      {
          'type': 'cardGrid',
          'heading': 'Temperaturen',
          'useColor': true,
          'items': [
              <PageItem>{ navigate: true, targetPage: 'NSPanel_TestSub', id: 'alias.0.devices.TempSchlafzimmer', unit: '°C', name: 'Schlafzimmer', offColor: MSRed, onColor: MSGreen, useValue: true, colorScale: {'val_min': 20, 'val_max': 25, 'val_best': 23} },
          ]
      };
      

      Ansonsten hat das Update keine Auswirkungen auf bisherige Funktionalität...

      Sorry das ich nicht geantwortet habe. Mir fehlt leider ein wenig die zeit mich um das regelmäßig zu kümmern. Verzeihung.

      Danke für die Änderung, Somit kann ich das Script ohne Modifikation einsetzen.

      1 Reply Last reply
      0
      • ArmilarA Armilar

        @bergi84

        Wenn ich ein Notify Popup verwende, wie bekomme ich mit das der Nutzer auf das schließen X in der rechten oberen Ecke gedrückt hat oder der timeout abgelaufen ist. Für die unteren zwei Buttons kann ich ja auf den State "popupNotify.popupNotifyAction" triggern. Das Problem ist ja das mein Trigger scharf bleibt und wenn zufällig ein anderes Notify Popup reinspringt dann passiert irgend was.

        weil die HMI bei dem "x" ein bExit sendet und bei den beiden Buttons ein Event mit b1 oder b2, welches ausgewertet werden kann:

        396b9563-11da-4081-921c-9fd4a1f3952f-image.png

        Somit wird nicht explizit ein "false" gesendet, wenn das "x" gedrückt wird. Das popUp wird durch die HMI beendet.

        Warum kann man nur dann die Schriftart des Textes im Popup ändern wenn man auf Layout 2 umschaltet? Das funktioniert mit dem Standard Layout prinzipiell auch und die Standard Schriftart des Popups ist arg klein und ich kann keine Icons im Text verwenden.

        Weil die HMI vor einiger Zeit bereits eine neue zusätzliche Version des popupNotify bekam. Sollte eigentlich die alte ablösen. Wir wollten die alte Version jedoch weiter benutzen (wird aber nicht mehr weiterentwickelt) und haben die daher Layout 1und 2 genannt. In der älteren Version berücksichtigt die Nextion HMI keine Schriftarten...

        B Offline
        B Offline
        Bergi84
        wrote on last edited by
        #4048

        @armilar said in SONOFF NSPanel mit Lovelace UI:

        @bergi84

        Wenn ich ein Notify Popup verwende, wie bekomme ich mit das der Nutzer auf das schließen X in der rechten oberen Ecke gedrückt hat oder der timeout abgelaufen ist. Für die unteren zwei Buttons kann ich ja auf den State "popupNotify.popupNotifyAction" triggern. Das Problem ist ja das mein Trigger scharf bleibt und wenn zufällig ein anderes Notify Popup reinspringt dann passiert irgend was.

        weil die HMI bei dem "x" ein bExit sendet und bei den beiden Buttons ein Event mit b1 oder b2, welches ausgewertet werden kann:

        396b9563-11da-4081-921c-9fd4a1f3952f-image.png

        Somit wird nicht explizit ein "false" gesendet, wenn das "x" gedrückt wird. Das popUp wird durch die HMI beendet.

        Das meine ich ja. Wenn ich das Popup verwende bekomme ich eben nicht mit das es geschlossen wurde. Und das ist ungünstig da ja mein Subscribe auf ACTION auch nicht gelöscht wird und sobald ein anderes Popup wie zB Tasmota update hinein springt und ich dort auf Ja drücke wird auch das andere Script fälschlicherweise getriggert. Ich glaube es wäre besser das über ACTION als String die Werte 'true', 'false', 'exit' und 'timeout' kommuniziert werden. Mir ist natürlich klar das dass nicht einfach ist weil es inkompatibel ist.

        Warum kann man nur dann die Schriftart des Textes im Popup ändern wenn man auf Layout 2 umschaltet? Das funktioniert mit dem Standard Layout prinzipiell auch und die Standard Schriftart des Popups ist arg klein und ich kann keine Icons im Text verwenden.

        Weil die HMI vor einiger Zeit bereits eine neue zusätzliche Version des popupNotify bekam. Sollte eigentlich die alte ablösen. Wir wollten die alte Version jedoch weiter benutzen (wird aber nicht mehr weiterentwickelt) und haben die daher Layout 1und 2 genannt. In der älteren Version berücksichtigt die Nextion HMI keine Schriftarten...

        Ich möchte kurz erklären für was ich das verwende. Ich hab mir im ioBroker ein Warningsystem geschrieben das unter anderem überwacht ob alle nötigen Sensoren verfügbar sind und ob der Batteriestand bei batteriebetriebenen Geräten über einen gewissen Grenzwert ist. Alle Warnung werden in einer Liste gesammelt. Da es in der NSPanel UI keine geeignete Page für sowas gibt verwende ich das Layout 1 des Notify Popups. Ich zeige pro Seite 3 Warnungen an und verwende eben auch Symbole damit es auf einen Blick erkennbar ist, was das Problem ist gefolgt von dem überwachten State. Wenn es mehr als 3 Warnungen gibt nutze ich die unteren zwei Tasten zum blättern. Damit die Symbole angezeigt werden muss entsprechend die richtige Schriftart gewählt werden. Die aktuelle Firmware des Nextion Displays entscheidet anhand der Anwesenheit des ICON ob es Layout 1 oder Layout 2 verwendet. Die gewählte Schriftart wird auf beide Layouts angewendet. Das hab ich auch schon ausprobiert in dem ich die Variabel v_popupNotifyFontIdText inde folgendem Codeabschnitt vor das If gezogen habe.

                    notification = 'entityUpdateDetail' + '~'
                        + getState(popupNotifyInternalName).val + '~'
                        + getState(popupNotifyHeading).val + '~'
                        + v_popupNotifyHeadingColor + '~'
                        + getState(popupNotifyButton1Text).val + '~'
                        + v_popupNotifyButton1TextColor + '~'
                        + getState(popupNotifyButton2Text).val + '~'
                        + v_popupNotifyButton2TextColor + '~'
                        + getState(popupNotifyText).val + '~'
                        + v_popupNotifyTextColor + '~'
                        + getState(popupNotifySleepTimeout).val;
        
                    if (getState(popupNotifyLayout).val == 2) {
                        notification = notification + '~'
                        + v_popupNotifyFontIdText + '~'
                        + Icons.GetIcon(v_popupNotifyIcon) + '~'
                        + v_popupNotifyIconColor;
                    }
        
        D T 2 Replies Last reply
        0
        • B Bergi84

          @armilar said in SONOFF NSPanel mit Lovelace UI:

          @bergi84

          Wenn ich ein Notify Popup verwende, wie bekomme ich mit das der Nutzer auf das schließen X in der rechten oberen Ecke gedrückt hat oder der timeout abgelaufen ist. Für die unteren zwei Buttons kann ich ja auf den State "popupNotify.popupNotifyAction" triggern. Das Problem ist ja das mein Trigger scharf bleibt und wenn zufällig ein anderes Notify Popup reinspringt dann passiert irgend was.

          weil die HMI bei dem "x" ein bExit sendet und bei den beiden Buttons ein Event mit b1 oder b2, welches ausgewertet werden kann:

          396b9563-11da-4081-921c-9fd4a1f3952f-image.png

          Somit wird nicht explizit ein "false" gesendet, wenn das "x" gedrückt wird. Das popUp wird durch die HMI beendet.

          Das meine ich ja. Wenn ich das Popup verwende bekomme ich eben nicht mit das es geschlossen wurde. Und das ist ungünstig da ja mein Subscribe auf ACTION auch nicht gelöscht wird und sobald ein anderes Popup wie zB Tasmota update hinein springt und ich dort auf Ja drücke wird auch das andere Script fälschlicherweise getriggert. Ich glaube es wäre besser das über ACTION als String die Werte 'true', 'false', 'exit' und 'timeout' kommuniziert werden. Mir ist natürlich klar das dass nicht einfach ist weil es inkompatibel ist.

          Warum kann man nur dann die Schriftart des Textes im Popup ändern wenn man auf Layout 2 umschaltet? Das funktioniert mit dem Standard Layout prinzipiell auch und die Standard Schriftart des Popups ist arg klein und ich kann keine Icons im Text verwenden.

          Weil die HMI vor einiger Zeit bereits eine neue zusätzliche Version des popupNotify bekam. Sollte eigentlich die alte ablösen. Wir wollten die alte Version jedoch weiter benutzen (wird aber nicht mehr weiterentwickelt) und haben die daher Layout 1und 2 genannt. In der älteren Version berücksichtigt die Nextion HMI keine Schriftarten...

          Ich möchte kurz erklären für was ich das verwende. Ich hab mir im ioBroker ein Warningsystem geschrieben das unter anderem überwacht ob alle nötigen Sensoren verfügbar sind und ob der Batteriestand bei batteriebetriebenen Geräten über einen gewissen Grenzwert ist. Alle Warnung werden in einer Liste gesammelt. Da es in der NSPanel UI keine geeignete Page für sowas gibt verwende ich das Layout 1 des Notify Popups. Ich zeige pro Seite 3 Warnungen an und verwende eben auch Symbole damit es auf einen Blick erkennbar ist, was das Problem ist gefolgt von dem überwachten State. Wenn es mehr als 3 Warnungen gibt nutze ich die unteren zwei Tasten zum blättern. Damit die Symbole angezeigt werden muss entsprechend die richtige Schriftart gewählt werden. Die aktuelle Firmware des Nextion Displays entscheidet anhand der Anwesenheit des ICON ob es Layout 1 oder Layout 2 verwendet. Die gewählte Schriftart wird auf beide Layouts angewendet. Das hab ich auch schon ausprobiert in dem ich die Variabel v_popupNotifyFontIdText inde folgendem Codeabschnitt vor das If gezogen habe.

                      notification = 'entityUpdateDetail' + '~'
                          + getState(popupNotifyInternalName).val + '~'
                          + getState(popupNotifyHeading).val + '~'
                          + v_popupNotifyHeadingColor + '~'
                          + getState(popupNotifyButton1Text).val + '~'
                          + v_popupNotifyButton1TextColor + '~'
                          + getState(popupNotifyButton2Text).val + '~'
                          + v_popupNotifyButton2TextColor + '~'
                          + getState(popupNotifyText).val + '~'
                          + v_popupNotifyTextColor + '~'
                          + getState(popupNotifySleepTimeout).val;
          
                      if (getState(popupNotifyLayout).val == 2) {
                          notification = notification + '~'
                          + v_popupNotifyFontIdText + '~'
                          + Icons.GetIcon(v_popupNotifyIcon) + '~'
                          + v_popupNotifyIconColor;
                      }
          
          D Offline
          D Offline
          danny_v1
          wrote on last edited by
          #4049

          @bergi84

          kannst du das mit dem Warnsystem mal reinstellen wie du das umgesetzt hast.
          Sowas habe ich auch noch vor.
          Hab das schon mit geöffneten Fenstern beim verlassen das Hauses (auf einem Panel neben der Haustür) umgesetzt , aber so 100% zufrieden bin ich mit dem Layout noch nicht.

          1 Reply Last reply
          0
          • B Bergi84

            @armilar said in SONOFF NSPanel mit Lovelace UI:

            @bergi84

            Wenn ich ein Notify Popup verwende, wie bekomme ich mit das der Nutzer auf das schließen X in der rechten oberen Ecke gedrückt hat oder der timeout abgelaufen ist. Für die unteren zwei Buttons kann ich ja auf den State "popupNotify.popupNotifyAction" triggern. Das Problem ist ja das mein Trigger scharf bleibt und wenn zufällig ein anderes Notify Popup reinspringt dann passiert irgend was.

            weil die HMI bei dem "x" ein bExit sendet und bei den beiden Buttons ein Event mit b1 oder b2, welches ausgewertet werden kann:

            396b9563-11da-4081-921c-9fd4a1f3952f-image.png

            Somit wird nicht explizit ein "false" gesendet, wenn das "x" gedrückt wird. Das popUp wird durch die HMI beendet.

            Das meine ich ja. Wenn ich das Popup verwende bekomme ich eben nicht mit das es geschlossen wurde. Und das ist ungünstig da ja mein Subscribe auf ACTION auch nicht gelöscht wird und sobald ein anderes Popup wie zB Tasmota update hinein springt und ich dort auf Ja drücke wird auch das andere Script fälschlicherweise getriggert. Ich glaube es wäre besser das über ACTION als String die Werte 'true', 'false', 'exit' und 'timeout' kommuniziert werden. Mir ist natürlich klar das dass nicht einfach ist weil es inkompatibel ist.

            Warum kann man nur dann die Schriftart des Textes im Popup ändern wenn man auf Layout 2 umschaltet? Das funktioniert mit dem Standard Layout prinzipiell auch und die Standard Schriftart des Popups ist arg klein und ich kann keine Icons im Text verwenden.

            Weil die HMI vor einiger Zeit bereits eine neue zusätzliche Version des popupNotify bekam. Sollte eigentlich die alte ablösen. Wir wollten die alte Version jedoch weiter benutzen (wird aber nicht mehr weiterentwickelt) und haben die daher Layout 1und 2 genannt. In der älteren Version berücksichtigt die Nextion HMI keine Schriftarten...

            Ich möchte kurz erklären für was ich das verwende. Ich hab mir im ioBroker ein Warningsystem geschrieben das unter anderem überwacht ob alle nötigen Sensoren verfügbar sind und ob der Batteriestand bei batteriebetriebenen Geräten über einen gewissen Grenzwert ist. Alle Warnung werden in einer Liste gesammelt. Da es in der NSPanel UI keine geeignete Page für sowas gibt verwende ich das Layout 1 des Notify Popups. Ich zeige pro Seite 3 Warnungen an und verwende eben auch Symbole damit es auf einen Blick erkennbar ist, was das Problem ist gefolgt von dem überwachten State. Wenn es mehr als 3 Warnungen gibt nutze ich die unteren zwei Tasten zum blättern. Damit die Symbole angezeigt werden muss entsprechend die richtige Schriftart gewählt werden. Die aktuelle Firmware des Nextion Displays entscheidet anhand der Anwesenheit des ICON ob es Layout 1 oder Layout 2 verwendet. Die gewählte Schriftart wird auf beide Layouts angewendet. Das hab ich auch schon ausprobiert in dem ich die Variabel v_popupNotifyFontIdText inde folgendem Codeabschnitt vor das If gezogen habe.

                        notification = 'entityUpdateDetail' + '~'
                            + getState(popupNotifyInternalName).val + '~'
                            + getState(popupNotifyHeading).val + '~'
                            + v_popupNotifyHeadingColor + '~'
                            + getState(popupNotifyButton1Text).val + '~'
                            + v_popupNotifyButton1TextColor + '~'
                            + getState(popupNotifyButton2Text).val + '~'
                            + v_popupNotifyButton2TextColor + '~'
                            + getState(popupNotifyText).val + '~'
                            + v_popupNotifyTextColor + '~'
                            + getState(popupNotifySleepTimeout).val;
            
                        if (getState(popupNotifyLayout).val == 2) {
                            notification = notification + '~'
                            + v_popupNotifyFontIdText + '~'
                            + Icons.GetIcon(v_popupNotifyIcon) + '~'
                            + v_popupNotifyIconColor;
                        }
            
            T Offline
            T Offline
            TT-Tom
            wrote on last edited by
            #4050

            @bergi84

            Ein Tipp zum Trigger. Ich prüfe zusätzlich den internen Namen des PopupNotify. Das komplette Script findest du in meinem Github (Fahrplan).

             const internalName: string = getState(DP_NSPanel + 'popupNotify.popupNotifyInternalName').val;
                        if (internalName.includes('Delay')) {
                            if (internalName == 'DelayFahrplanScript') {
                                console.log('jetzt kommmt Text 2' + Info + '%');
            

            Damit weist du von welchem popupNotify der Action kommt.

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

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

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

            1 Reply Last reply
            0
            • 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

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

              @l4rs

              Hi Lars,

              Ich habe hier mal das Problem ins Forum gepostet. Muss mich mit @Armilar noch abstimmen.

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

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

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

              1 Reply Last reply
              0
              • 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 Offline
                  draexlerD Offline
                  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:

                        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 :blush:

                                  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 :blush:

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

                                    @armilar

                                    das wars.....eine dämliche Kleinigkeit. :spock-hand: 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. :spock-hand: 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 :blush:

                                      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 :blush:

                                        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
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          727

                                          Online

                                          32.7k

                                          Users

                                          82.4k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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