Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. SONOFF NSPanel mit Lovelace UI

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      nk63 @Armilar last edited by

      @armilar
      Ich bin ein Anfänger in der Nutzung des iobrokers mit Sonoff NSPanels unter Lovelace UI. Zuerst einmal ein großes Dankeschön an die Programmierer. Es ist schon beachtlich, was ich bisher zum Laufen bringen konnte. Allerdings komme ich jetzt an einer Stelle nicht weiter und benötige eure Hilfe.

      Ich habe Lovelace UI in der neuesten Version auf dem Panel. Nun möchte ich auch die Inhalte des Screensavers in der Advanced Version füllen. Dabei hat es mir auch der Abfallkalender angetan. Dazu habe ich das Typescript Abfall_to_NSPanel von tt-tom genutzt.
      Die Datenpunkte unter 0_userdata.o.abfallkalender und alias.0.NSPanel.Abfall werden sauber gefüllt.
      Wenn ich allerdings den Eintrag in die NSPanel.ts vornehme:

      // leftScreensaverEntity 3 (only Advanced Screensaver)
              	{
                      ScreensaverEntity: '0_userdata.0.Abfallkalender.1.date',
                      ScreensaverEntityFactor: 1,
                      ScreensaverEntityDecimalPlaces: 0,
                      ScreensaverEntityIconOn: 'trash-can',
                      ScreensaverEntityIconOff: null,
                      ScreensaverEntityText: 'Abfall',
                      ScreensaverEntityUnitText: '',
                      ScreensaverEntityIconColor: '0_userdata.0.Abfallkalender.1.color'
                  },
      

      Dann bleibt der Screensaver bis auf die Datumsanzeige leer. Wenn ich die erste Zeile auskommentiere:

      //    ScreensaverEntity: '0_userdata.0.Abfallkalender.1.date',
      

      Dann zeigt es mir alles an, nur, dass hinter der blauen Mülltonne ein "null" steht.

      Das Objekt, auf das Bezug genommen wird sieht im Objectbrowser so aus:

      a87fda99-8cd2-46d0-95ee-596e09fced01-image.png

      Ich habe keine Idee mehr, was ich falsch gemacht haben könnte.
      VG Nico

      1 Reply Last reply Reply Quote 0
      • P
        peer69 Forum Testing last edited by peer69

        Wenn ich für die Buttons des Panels eine Rule2 definiere und aktiviere, dann aktualisieren sich die Wetter-Daten nicht mehr (das ist zumindest das, was optisch auffällt), sobald ein Button tatsächlich gedrückt wurde. Nach einem Neustart des Panels aktualisiert sich das Panel wieder und alle anderen Panels, bei denen die Rule definiert ist aber kein Button gedrückt wurde, aktualisieren immer problemlos:

        Rule2 on Button1#state do Publish nspanel/%topic%/tele/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish nspanel/%topic%/tele/RESULT {"CustomRecv":"event,button2"} endon
        Rule2 1
        

        Trigger im Skript:

            button1: {
                mode: 'set',     // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
                page: null,     // Zielpage - Verwendet wenn mode = page (bisher button1Page)
                entity: '0_userdata.0.Szenen.Arrive-Home',   // Zielentity - Verwendet wenn mode = set oder toggle
                setValue: 1  // Zielwert - Verwendet wenn mode = set
            },
            button2: {
                mode: 'set',     // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
                page: null,     // Zielpage - Verwendet wenn mode = page (bisher button2Page)
                entity: '0_userdata.0.Szenen.Leave-Home',   // Zielentity - Verwendet wenn mode = set oder toggle
                setValue: 1  // Zielwert - Verwendet wenn mode = set
            }
        

        Kann damit jemand spontan etwas anfangen? Ich werde morgen mal testen, ob mit SetOption73 das Verhalten gleich ist, ist aber dann weniger schön als mit der Rule2 und Definition im Skript.

        Armilar 1 Reply Last reply Reply Quote 0
        • Armilar
          Armilar Most Active Forum Testing last edited by

          @nk63

          versuche mal:

                      // leftScreensaverEntity 3 (only Advanced Screensaver)
                  	{
                          ScreensaverEntity: '0_userdata.0.Abfallkalender.1.date',
                          ScreensaverEntityFactor: 1,
                          ScreensaverEntityDecimalPlaces: 0,
                          ScreensaverEntityDateFormat: { year: 'numeric', month: '2-digit', day: '2-digit' },
                          ScreensaverEntityIconOn: 'trash-can',
                          ScreensaverEntityIconOff: null,
                          ScreensaverEntityText: 'Abfall',
                          ScreensaverEntityUnitText: '',
                          ScreensaverEntityIconColor: '0_userdata.0.Abfallkalender.1.color'
                      },
          
          N 1 Reply Last reply Reply Quote 0
          • Armilar
            Armilar Most Active Forum Testing @peer69 last edited by Armilar

            @peer69 sagte in SONOFF NSPanel mit Lovelace UI:

            sobald ein Button tatsächlich gedrückt wurde. Nach einem Neustart des Panels aktualisiert sich das Panel wieder und alle anderen Panels, bei denen die Rule definiert ist aber kein Button gedrückt wurde, aktualisieren immer problemlos:

            Spannendes und Interessantes Verhalten. Die function HandleScreensaverUpdate() hat nichts mit den Buttons oder der Rule2 zu tun und daher denke ich im Moment, dass wir an einer anderen Stelle suchen sollten.

            Im Moment fällt mir nur ein Grund ein, warum sich der Screensaver nicht aktualisieren sollte. Sieh mal in den Datenpunkten für den Screensaver

            9ada4d13-f742-4551-9735-1114d4d93c47-image.png

            in den Datenpunkten popupNotifyHeading und popupNotifyText darf nichts drin stehen...

            P 1 Reply Last reply Reply Quote 0
            • P
              peer69 Forum Testing @Armilar last edited by

              @armilar Die Datenpunkte sind hier tatsächlich auch leer:

              16a83748-2743-4f7e-84bb-8e40b3c0385a-image.png

              Armilar T 2 Replies Last reply Reply Quote 0
              • Armilar
                Armilar Most Active Forum Testing @peer69 last edited by Armilar

                @peer69

                Und wenn die Rule2 deaktiviert ist läuft alles? 😶 Ganz sicher?

                Ist das korrekt so?
                nspanel/%topic%/tele/RESULT

                P 1 Reply Last reply Reply Quote 0
                • N
                  nk63 @Armilar last edited by

                  @armilar
                  Vielen Dank für deine schnelle Antwort. Leider hat sich dadurch das Verhalten nicht geändert. Mit dem kompletten Script
                  bleibt der Screensaver leer, auskommentierte erste Zeile ergibt Symbol + "null".
                  VG Nico

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    TT-Tom @nk63 last edited by TT-Tom

                    @nk63

                    Welche Version vom Script NSPanel nutzt du?
                    Welche Version vom Abfall_to_NsPanel?

                    zeige bitte mal die Komplette Config von leftScreensaverEntity.

                    Akteviere auf dem Panel mal den Debug Modus und Poste mal die Ausgabe ab.

                    Debugmodus aktiviert
                    

                    danach sollte beim Laden des Screensaver Meldungen dieser Art erscheinen

                    2023-11-10 23:04:41.447	info	script.js.common.Testcenter.PanelTestversion: moments.js --> Datum In 4 Tagen valid?: false
                    2023-11-10 23:04:41.449	info	script.js.common.Testcenter.PanelTestversion: moments.js --> Datum In 4 Tagen valid?: false
                    2023-11-10 23:04:41.450	info	script.js.common.Testcenter.PanelTestversion: moments.js --> Datum In einer Woche valid?: false
                    2023-11-10 23:04:41.452	info	script.js.common.Testcenter.PanelTestversion: moments.js --> Datum 2023-09-26T06:58:00+02:00 valid?: true
                    
                    N 1 Reply Last reply Reply Quote 1
                    • T
                      TT-Tom @peer69 last edited by

                      @peer69

                      wie lautet den dein Full Topic unter der MQTT Einstellung in Tasmota?

                      1 Reply Last reply Reply Quote 1
                      • P
                        peer69 Forum Testing @Armilar last edited by

                        @armilar
                        Ob es läuft wenn die Rule deaktiviert ist, muss ich noch testen. Sie war bis jetzt auf allen Panels aktiv und nur die, bei denen ich Buttons tatsächlich gedrückt hatte, sind ausgestiegen.

                        Das Full-Topic lautet nspanel/%topic%/%prefix%/ und die Rückmeldung des Panels kommt im richtigen Datenpunkt im MQTT-Pfad an, meine im Skript angegebene Automatisierung triggert auch völlig korrekt und problemlos. Nur das Wetter setzt anschließend aus.

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          TT-Tom @peer69 last edited by

                          @peer69

                          um es mal nachzustellen meinst du die aktuellen Wetterdaten oder den Forcast?
                          Welchen Screensaver Typ nutzt du?

                          P 1 Reply Last reply Reply Quote 0
                          • P
                            peer69 Forum Testing @TT-Tom last edited by peer69

                            @tt-tom

                            Standard-Screensaver und das Skript ist bis auf die Buttons quasi nicht verändert. Skript in v4.3.3.
                            Daten kommen vom Accuweather-Adapter.

                            Es geht um das aktuelle Wetter unten links im Screensaver, sowohl Symbol als auch Wert der Temperatur.
                            Ob der Forecast auch betroffen ist, kann ich noch nicht genau sagen, habe nicht explizit darauf geachtet.

                            Ich habe jetzt ein Panel auf SetOption 73 umgestellt, auf einem weiteren die Rule2 deaktiviert und auf einem anderen im bisherigen Zustand einen Button bedient. Ich kann dann morgen berichten, ob sich das Verhalten zwischen den Panels nun unterscheidet.

                            T 1 Reply Last reply Reply Quote 1
                            • T
                              TT-Tom last edited by

                              @peer69

                              okay ich bau das mal nach und lass über nacht mal laufen

                              1 Reply Last reply Reply Quote 1
                              • T
                                TT-Tom @peer69 last edited by

                                @peer69

                                Ich kann es nachstellen, kann dir aber noch nicht die Ursache nennen. Kannst du bitte ein Issues in Github auf machen.

                                P 1 Reply Last reply Reply Quote 2
                                • N
                                  nk63 @TT-Tom last edited by

                                  @tt-tom
                                  Version NSPanel.ts: 4.3.2.1
                                  Version Abfall_to_NSPanel.ts: 5.0.1

                                  leftScreensaverEntity:
                                          [
                                              // leftScreensaverEntity 1 (only Advanced Screensaver)
                                              {
                                                  ScreensaverEntity: 'fhem.0.MA_0e07d6653380.temperature',
                                                  ScreensaverEntityFactor: 1,
                                                  ScreensaverEntityDecimalPlaces: 1,
                                                  ScreensaverEntityIconOn: 'thermometer',
                                                  ScreensaverEntityIconOff: null,
                                                  ScreensaverEntityText: 'Temperatur',
                                                  ScreensaverEntityUnitText: '°C',
                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35, 'val_best': 22}
                                              },
                                              // leftScreensaverEntity 2 (only Advanced Screensaver)
                                              {
                                                  ScreensaverEntity: 'fhem.0.AktuellerVerbrauch.state',
                                                  ScreensaverEntityFactor: 1,
                                                  ScreensaverEntityDecimalPlaces: 0,
                                                  ScreensaverEntityIconOn: 'counter',
                                                  ScreensaverEntityIconOff: null,
                                                  ScreensaverEntityText: 'L1-L3',
                                                  ScreensaverEntityUnitText: ' W',
                                                  ScreensaverEntityIconColor: {'val_min': -1000, 'val_max': 5000, 'val_best':0}
                                              },
                                              // leftScreensaverEntity 3 (only Advanced Screensaver)
                                          	{
                                                  ScreensaverEntity: '0_userdata.0.Abfallkalender.1.date',
                                                  ScreensaverEntityFactor: 1,
                                                  ScreensaverEntityDecimalPlaces: 0,
                                                  ScreensaverEntityDateFormat: { year: 'numeric', month: '2-digit', day: '2-digit' },
                                                  ScreensaverEntityIconOn: 'trash-can',
                                                  ScreensaverEntityIconOff: null,
                                                  ScreensaverEntityText: 'Abfall',
                                                  ScreensaverEntityUnitText: '',
                                                  ScreensaverEntityIconColor: '0_userdata.0.Abfallkalender.1.color'
                                              },
                                          ],
                                  

                                  Im Protokoll finde ich unter den vielen Warnungen nur diese auffälligen Zeilen:

                                  javascript.0
                                  2023-11-11 09:07:11.521	warn	script.js.common.nspanel-1_4_3_2_1: error at function HandleScreensaverUpdate: parseFormat is not a function
                                  
                                  javascript.0
                                  2023-11-11 09:07:00.087	info	State value to set for "mqtt.0.SmartHome.nspanel-1.cmnd.CustomSend" has to be type "number" but received type "string"
                                  

                                  Einträge mit dem Inhalt:

                                  "Datum in ..."
                                  

                                  finde ich im Protokoll gar nicht.

                                  T 1 Reply Last reply Reply Quote 0
                                  • T
                                    TT-Tom @nk63 last edited by TT-Tom

                                    @nk63 sagte in SONOFF NSPanel mit Lovelace UI:

                                    parseFormat is not a function

                                    das ist der Fehler, hast du in der Javainstanz die npm Module nachgeladen?

                                    In der JS-Adapter-Instanz die Module moment und moment-parseformat eintragen.

                                    https://forum.iobroker.net/post/1077067

                                    State value to set for "mqtt.0.SmartHome.nspanel-1.cmnd.CustomSend" has to be type "number" but received type "string"

                                    kannst du diese Meldung noch einmal reproduzieren?? Sprich bei welcher Bedienung kommt sie?

                                    Einträge mit dem Inhalt:

                                    "Datum in ..."
                                    

                                    finde ich im Protokoll gar nicht.

                                    wenn dann siehst du sie nur, wenn Du den Debugmodus in den Service Seiten aktivierst. (Einstellungen -> Script)

                                    N 1 Reply Last reply Reply Quote 0
                                    • P
                                      peer69 Forum Testing @TT-Tom last edited by

                                      @tt-tom https://github.com/joBr99/nspanel-lovelace-ui/issues/1020

                                      peer69 created this issue in joBr99/nspanel-lovelace-ui

                                      closed [BUG] Current weather information not updated when buttons detached by Rule2 and pressed #1020

                                      T 1 Reply Last reply Reply Quote 1
                                      • N
                                        nk63 @TT-Tom last edited by

                                        @tt-tom das war's, vielen Dank für den Hinweis. Vielleicht könnte man noch in das ts-File reinschreiben, dass man die NPM-Module moment und moment-parseformat laden muss. Nun funktioniert alles bestens.

                                        State value to set for "mqtt.0.SmartHome.nspanel-1.cmnd.CustomSend" has to be type "number" but received type "string"
                                        

                                        Erscheint in den Sekunden 11, 34 und 57 je doppelt und in der Sekunde 00 5fach. Das wiederholt sich jeder Minute auch ohne Bedienhandlungen.
                                        Ich hatte alle Screensaver - Einträge auskommentiert und auch alle Seiten bis auf die Service Seite. Dann verschwand der Sekunde 00-Eintrag, die anderen kamen aber im gleichen Schema weiter. Rund um das Eintragen der Abfalldaten kam aber keine solche Meldung.

                                        T 1 Reply Last reply Reply Quote 0
                                        • T
                                          TT-Tom @nk63 last edited by

                                          @nk63

                                          hast du den cmnd.CustomSend selbst an gelegt? Stell mal den Datenpunkt auf String, dann sollte es vorbei sein.

                                          e6bfebfc-8293-4b1a-9f81-176ef013b432-image.png

                                          N 1 Reply Last reply Reply Quote 0
                                          • T
                                            TT-Tom @peer69 last edited by

                                            @peer69

                                            wir habe hier ein Lösung. Kannst du diese bitte mal bei dir testen. Du musst in dieser Funktion folgende Codezeile screensaverEnabled = true; nachtragen an zwei Stellen. Hier im Ausschnitt ist es 26 und 33.

                                            function HandleHardwareButton(method: string): void {
                                                try {
                                                    let buttonConfig: ConfigButtonFunction = config[method];
                                                    if(buttonConfig.mode === null) {
                                                        return;
                                                    }
                                            
                                                    switch(buttonConfig.mode) {
                                                        case 'page':
                                                            if (Debug) console.log('HandleHardwareButton -> Mode Page');
                                                            if (buttonConfig.page) {
                                                                if(method == 'button1') {
                                                                    pageId = -1;
                                                                } else if (method == 'button2') {
                                                                    pageId = -2;
                                                                }
                                                                GeneratePage(buttonConfig.page);
                                                                break;
                                                            }
                                                        case 'toggle':
                                                            if (Debug) console.log('HandleHardwareButton -> Mode Toggle');
                                                            if (buttonConfig.entity) {
                                                                let current = getState(buttonConfig.entity).val;
                                                                setState(buttonConfig.entity, !current);
                                                            }
                                                            screensaverEnabled = true;
                                                            break;
                                                        case 'set':
                                                            if (Debug) console.log('HandleHardwareButton -> Mode Set');
                                                            if (buttonConfig.entity) {
                                                                setState(buttonConfig.entity, buttonConfig.setValue);
                                                            }
                                                            screensaverEnabled = true;
                                                            break;
                                                    }
                                                } catch (err) {
                                                    console.warn('error at function HandleHardwareButton: ' + err.message);
                                                }
                                            }
                                            
                                            P 1 Reply Last reply Reply Quote 2
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            802
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            263
                                            7229
                                            4959988
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo