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

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • Armilar
      Armilar Most Active Forum Testing @wolwin last edited by

      @wolwin

      Vielen Dank für den Beitrag...

      Wir werden die Anleitung für den MQTT-Client Adapter mit ins Wiki übernehmen... Auch die beiden Änderungen machen im Kontext mit dem MQTT-Client Adapter sinn...

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

        840e6e36-0fbe-42cb-85f5-c67273e3d418-image.png

        https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts

        Änderungen betreffen ausschließlich den unteren Teil ab:

        5f868619-ca74-45cb-ac87-8d1ee6aff0f9-image.png

        PR hatte @TT-Tom schon vorbereitet 😊

        W 1 Reply Last reply Reply Quote 2
        • W
          wolwin @Armilar last edited by

          @armilar

          ... und da ist ja noch die Sache mit der manuellen Erstinstallation eines NSPanels im ioBroker ...

          Gut, dass es Proxmox gibt ... nach vielen Debug-Sitzungen mit einer minimal Default-Konfiguration denke ich, dass ich jetzt verstanden habe, warum und wann der beschriebene Fehler auftritt: beim erstmaligen Start des Scripts installiert der automatische Updater (bei mir reproduzierbar) die online TFT-Firmware, obwohl die aktuelle Firmware auf dem NSPanel vorhanden ist. Das Ganze endet immer mit einer um 90 Grad gedrehten Fehlermeldung im Display des NSPanels.

          Zuerst habe ich im ioBroker / Script gesucht, warum dort die Firmware 3.3.1 eingetragen ist - gefunden habe ich folgendes unter:

          0_userdata.0.nspanel_073.1.Display_Firmware.TFT.currentVersion = 0 / v3.3.1

          Erzeugt wird dieser Eintrag an dieser Stelle (ab Scriptzeile1266):

          async function Init_Release() {
              const FWVersion = [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56];
              const FWRelease = ['3.3.1', '3.4.0', '3.5.0', '3.5.X', '3.6.0', '3.7.3', '3.8.0', '3.8.3', '3.9.4', '4.0.5', '4.1.4', '4.2.1', '4.4.0', '4.4.0', '4.5.0', '4.6.0'];
              try {
                  if (existsObject(NSPanel_Path + 'Display_Firmware.desiredVersion') == false) {
                      await createStateAsync(NSPanel_Path + 'Display_Firmware.desiredVersion', desired_display_firmware_version, { type: 'number', write: false });
                  } else {
                      await setStateAsync(NSPanel_Path + 'Display_Firmware.desiredVersion', desired_display_firmware_version, true);
                  }
          
                  if (existsObject(NSPanel_Path + 'Config.Update.activ') == false) {
                      await createStateAsync(NSPanel_Path + 'Config.Update.activ', 1, { type: 'number', write: false });
                  } else {
                      await setStateAsync(NSPanel_Path + 'Config.Update.activ', 0, true);
                  }
          
                  let currentFW = 0;
                  let findFWIndex = 0;
                  log('Desired TFT Firmware: ' + desired_display_firmware_version + ' / ' + tft_version, 'info');
                  if (existsObject(NSPanel_Path + 'Display_Firmware.currentVersion')) {
                      currentFW = parseInt(getState(NSPanel_Path + 'Display_Firmware.currentVersion').val);
                      findFWIndex = FWVersion.indexOf(currentFW);
                      log('Installed TFT Firmware: ' + currentFW + ' / v' + FWRelease[findFWIndex], 'info');
                  }
          

          Beim ersten Durchlauf gibt es zwar das Objekt 'Display_Firmware.currentVersion', aber der Inhalt ist leer ... das führt dann zu dem Index '0', der dann aus 'FWRelease' den ersten Eintrag '3.3.1' nimmt ... und schon steht '0 / v3.3.1' als aktuelle TFT-Firmware Version da (btw: besser wäre bei 'unbekannt' der Eintrag '0 / v0' gewesen).

          Aber warum kommt es überhaupt soweit, dass der Objekt-Eintrag leer ist? Der Knackpunkt liegt in den Scriptzeilen ab Zeile 2687:

          // Updates currently compare every 12 hours
          let scheduleCheckUpdates = adapterSchedule(undefined, 60 * 60 * 12, () => {
              get_tasmota_status0();
              get_panel_update_data();
              check_updates();
          });
          
          // Check for updates with Start
          get_locales();
          get_locales_servicemenu();
          setIfExists(config.panelSendTopic, 'pageType~pageStartup');
          get_tasmota_status0();
          get_panel_update_data();
          check_updates();
          

          Nach Aufruf der Initialisierungsfunktionen sollen beim Start die Updates gecheckt werden (8 ... 14) - dabei werden dann auch fehlende Objekt-Einträge automatisch angelegt. Gleichzeitig ist jedoch auch der Scheduler 'scheduleCheckUpdates' gestartet worden (2 ... 6) ... und hier lauert jetzt der Fehler: der startet (direkt) parallel zum laufenden Update-Prozess einen zweiten Update-Prozess, in dem die gleichen Funktionen 'get_tasmota_status0', 'get_panel_update_data' und 'check_updates' aufgerufen werden. So kommt es dann zu einer 'undefinierten Initialisierung' - zufällig wird bei mir eben die TFT-Firmware aktualisiert ... bei anderen Konstellationen kann was anderes dabei rauskommen.

          Ich habe mehrere Szenarien für die Inbetriebnahme durchgespielt - das würde aber diesen Rahmen hier sprengen - Github ist da vielleicht besser zur Diskussion geeignet. Leider habe ich keinen 'einfachen Weg' gefunden - es wären m.E. immer einige Code-Anpassungen notwendig ... und da möchte ich Dir nicht vorgreifen.

          Vielleicht hast Du ja auch noch die ioBroker Integration im Blick ... ☺

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

            @wolwin
            Danke für deinen ausführlichen Test. Die einfachste Variante wäre vielleicht die 0/0, wird aber auch zum Fehler führen, da es die Datei nicht gibt. Wir werden uns zusammen tun und eine Lösung finden.

            Armilar 1 Reply Last reply Reply Quote 1
            • Armilar
              Armilar Most Active Forum Testing @TT-Tom last edited by Armilar

              @tt-tom
              @wolwin

              Ich würde check_updates(); einfach gar nicht mehr durchführen, wenn der Versions-Datenpunkt 0 oder null oder undefined ist.

              Bzw. diese Prüfung in die function check_updates() legen...

              Der Datenpunkt kann beim allerersten Start des Skriptes ja nur:

              • nicht vorhanden sein
              • vorhanden und nicht gefüllt, d.h. null sein
              • vorhanden und gefüllt sein

              In dem Fall brauchst du auch nicht mehr auf 0 prüfen


              Ebenfalls kann in der function Init_Release() eine Prüfung auf !null erfolgen

              W 1 Reply Last reply Reply Quote 1
              • W
                wolwin @Armilar last edited by wolwin

                @armilar

                Ganz so einfach ist es leider nicht ...

                Ich habe in den letzten Tagen das Script v4.4.0.6 von allen 'Warnungen' / 'Fehlern' bei der Erstinbetriebnahme (mit oder ohne angeschlossenem NSPanel) befreit ... einige kleine Bugs, die ich dabei gefunden habe, habe ich ebenfalls bereinigt.

                Gerne kann ich Dir die Änderungen / das Script zukommen lassen.

                Ich habe noch eine kleine Macke im Script, die ich noch heraushaben möchte: beim erstmaligen hochstarten wird ja die Einstellung 'en-US' benutzt ... es wird dann zwar nach der Initialisierung die Darstellung des Bildschirmschoners in 'de-DE' gesetzt, jedoch sind die 'Service Menü' Seiten weiterhin in 'en-US' (also nicht in Deutsch). Startet man das Script ein zweites Mal, dann ist ja alles initialisiert und die Seiten werden korrekt in 'de-DE' dargestellt.

                BTW: genau das gleiche Verhalten kann man auch im aktuellen Script nachvollziehen, wenn man den Zeichensatz umstellt: der Bildschirmschoner übernimmt den eingestellten Zeichensatz, die Seiten bleiben jedoch unverändert.

                Mein Frage ist, wie ich den Seitenaufbau noch einmal neu starten kann (am besten mit welchen Funktionen) ...

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

                  @wolwin sagte in SONOFF NSPanel mit Lovelace UI:

                  Gerne kann ich Dir die Änderungen / das Script zukommen lassen.

                  Stelle besser einen PR ins Github ein... dann könne wir Änderungen dort auch diskutieren...

                  Ich habe noch eine kleine Macke im Script, die ich noch heraushaben möchte: beim erstmaligen hochstarten wird ja die Einstellung 'en-US' benutzt ... es wird dann zwar nach der Initialisierung die Darstellung des Bildschirmschoners in 'de-DE' gesetzt, jedoch sind die 'Service Menü' Seiten weiterhin in 'en-US' (also nicht in Deutsch). Startet man das Script ein zweites Mal, dann ist ja alles initialisiert und die Seiten werden korrekt in 'de-DE' dargestellt.

                  Ist aktuell nicht getriggert, da wir der Ansicht waren, dass man nur einmal die Sprache festlegen wird...

                  BTW: genau das gleiche Verhalten kann man auch im aktuellen Script nachvollziehen, wenn man den Zeichensatz umstellt: der Bildschirmschoner übernimmt den eingestellten Zeichensatz, die Seiten bleiben jedoch unverändert.

                  Welcher Zeichensatz?

                  Mein Frage ist, wie ich den Seitenaufbau noch einmal neu starten kann (am besten mit welchen Funktionen) ...

                  GeneratePage

                  L W 2 Replies Last reply Reply Quote 0
                  • L
                    lustig29 @Armilar last edited by

                    Ich möchte gerne im Bad 2 Lichtszenen zur Auswahl haben. Einmal gedimmtes Licht und einmal 100%. Wie realisiere ich das am besten?

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

                      @lustig29

                      Ist ja immer eine Frage, was man bevorzugt und wie man es gerne hätte...

                      Eine Variante wäre das:
                      https://forum.iobroker.net/post/1096881

                      Muss nicht zwingend in einer cardGrid sein...

                      Eine andere Variante wäre im popupLight die Auswahl zu treffen (gleiche Nutzung, jedoch nicht auf Shelly Duo bezogen):

                      https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker---FAQ-&-Anleitungen#23-shelly-duo-lampen

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        Kuckuckmann @Armilar last edited by

                        @armilar
                        Sehr cool, dass Du das anbringst. Ich habe grade drüber nachgedacht, wie ich es hin bekomme, dass ich von den 5 Birnen in der Lampe welche unterschiedlich gestalte. Mit dem InselPopup auf der Card könnte das gehen 😄

                        1 Reply Last reply Reply Quote 1
                        • W
                          wolwin @Armilar last edited by

                          @armilar

                          Habe den PR eingestellt:

                          https://github.com/joBr99/nspanel-lovelace-ui/pull/1263

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

                          closed ioBroker - Update DEV NSPanelTs.ts - different fixes #1263

                          L 1 Reply Last reply Reply Quote 2
                          • L
                            lustig29 @wolwin last edited by

                            Bekomme ich irgendwie die Luftfeuchtigkeitsanzeige von einem externen Luftfeuchtigkeitsmesser in dem Screensaver integriert?

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

                              @lustig29
                              ja

                              mit ein paar Infos mehr bekommst du auch mehr 😉
                              gibt den Datenpunkte im ioBroker??

                              1 Reply Last reply Reply Quote 0
                              • L
                                lustig29 last edited by lustig29

                                @tt-tom
                                Die bekommst du natürlich. Das sind die Datenpunkte des Govee Hyrometers.

                                cee0bbe2-a602-4b78-8e46-cd2f7a9f0bbd-image.png

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

                                  @lustig29

                                  Wenn du mir jetzt noch sagst welcher Screensaver und wo dort der Wert angezeigt werden soll haben wir alle Infos zusammen. 🙂

                                  L 1 Reply Last reply Reply Quote 1
                                  • L
                                    lustig29 @TT-Tom last edited by

                                    @tt-tom IMG_5867.jpeg

                                    Am liebsten hier auf diesen Screensaver.

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

                                      @lustig29

                                      erstelle dir einen Alias vom Type Feuchte, hier zum nachlesen

                                      dann passt du dein Screensaver an.

                                      // bottomScreensaverEntity 1
                                                  {
                                                                  ScreensaverEntity: 'alias.0.nspanel..... humid.ACTUAL', // pfad zum Alias-Datenpunkt
                                                                  ScreensaverEntityFactor: (1/100),
                                                                  ScreensaverEntityDecimalPlaces: 1,
                                                                  ScreensaverEntityIconOn: 'water-percent',
                                                                  ScreensaverEntityIconOff: null,
                                                                  ScreensaverEntityText: 'Feuchte',
                                                                  ScreensaverEntityUnitText: '%',
                                                                  ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65}
                                                              },
                                      

                                      EDIT: hier sind die Infos zum Screensaver

                                      Armilar 1 Reply Last reply Reply Quote 1
                                      • Armilar
                                        Armilar Most Active Forum Testing @TT-Tom last edited by Armilar

                                        dc6c30c4-d7e9-4762-a114-77f44e80e08e-image.png

                                        • 75e32367-e740-4200-997b-6a922d4fdd07-image.png

                                        • Achtung

                                          dieser Fix hat keinen Einfluss auf laufende Installationen, sondern lediglich auf die Erstinbetriebnahme... Es muss daher aktuell kein Update gemacht werden, wenn das NSPanel mit dem TS-Script bereits läuft.

                                        https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts

                                        N 1 Reply Last reply Reply Quote 1
                                        • N
                                          Neral12 @Armilar last edited by

                                          Mal eine einfache Frage, wie schalte ich denn den Screensaver komplett aus? Hab da nirgends was gefunden und einfach 0_userdata.0.NSPanel.1.Config.Screensaver.timeoutScreensaver auf 0 geht leider nicht.

                                          K 1 Reply Last reply Reply Quote 0
                                          • K
                                            Kuckuckmann @Neral12 last edited by

                                            @neral12

                                            Hi und willkommen 🙂

                                            Hast Du das Skript und das Panel mal neu gestartet?
                                            Ich kann mich erinnern, dass dies bei mir auch erst gegriffen hatte, nachdem ich es neu gestartet hatte.

                                            LG

                                            N T 2 Replies Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            994
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            260
                                            7128
                                            4284580
                                            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