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.
    • D
      DaPeace @Armilar last edited by

      @armilar Ich hab mal noch ein Problem festgestellt. Wenn ich ein Thermostat konfiguriert habe hab ich das Problem das ich den Wert zwar am Panel senken kann aber das Erhöhen geht nicht mehr. Das hab ich auch bei einem Kumpel der jetzt 15 von den Dingern installiert hat. Hast du einen Tip woran das liegen kann?

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

        @dapeace

        aktuell (und ohne irgendeinen Anhaltspunkt zu deiner Variable zu haben 😉 ) gehe ich davon aus, dass die minValue: 50, maxValue: 315 im pageItem mit Komma versehen sind. Die Angabe muss ohne Komma erfolgen, da das NSPanel es sonst nicht verarbeiten kann.

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

          @ravenst0ne

          gibt da keine langen Diskussionen. Ist eine etwas aufwendigere Geschichte und auch schon des Öfteren erörtert.
          Daher

          • entweder selbst machen und "Pull Request" auf github einstellen
          • warten bis jemand einen Adapter schreibt
          • oder warten bis ich Zeit dafür finde...

          VG

          Vumer 1 Reply Last reply Reply Quote 0
          • W
            wavemaster01 last edited by

            Hallo, zuerst einmal möchte ich mich für das tolle Projekt bedanken. Das UI läuft prima auf meinem NSPanel. Nun habe ich aber eine weitergehende Frage.

            Da das NSPanel neben unserer Haustüre installiert werden soll, hätte ich gerne, dass der Screensaver je nachdem, ob Fenster zu, offen oder gekippt sind, eine andere Hintergrundfarbe bekommt.
            Per MQTT steht im IOBroker eine Variable zur Verfügung (Werte: 0= Fenster zu, 1 = Fenster = offen, 2 = Fenster gekippt).
            In Zeile 199 des Skripts habe ich folgende Konstante gefunden, mit der ich dauerhaft die Hintergrundfarbe ändern kann.

            //Screensaver Default Theme Colors
            const scbackground: RGB = { red: 0, green: 0, blue: 0}

            Wie schaffe ich es aber nun je nach oben genannten Stati die Hintergrundfarbe zu ändern. Es sollte wohl mit einer if-Bedingung klappen, aber alle meine rudimentären Versuche endeten mit einem defekten Skript 😉

            Vielleicht hat jmd. die Syntax zur Lösung des "Problems" für mich.

            Vielen Dank!!!!

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

              @wavemaster01 sagte in SONOFF NSPanel mit Lovelace UI:

              Es sollte wohl mit einer if-Bedingung klappen

              Die Antwort ist nein. Mit einer if-Bedingung wird es nicht klappen.

              Zunächst muss das Skript einen Trigger verarbeiten der den Zustand des/der Fenster verarbeitet. Dann muss der Screensaver neu gerendert werden und im Payload (aktuell nicht variabel für Background) muss dann die Farbe für den Screensaver mitgegeben werden. Hierbei können dann die Farbkonstanten benutzt werden und in rgb565-Konvertierung an das Panel gesendet werden. Das ist wiederum ein Update auf den Screensaver

              Aber ich bin mir sicher, dass mindestens eine if-Bedingung benötigt wird 😉

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

                @armilar Vielen Dank für deine Antwort!! Da wird der Schalter wohl nicht so schnell den HMIP-BSL ersetzen können, aber einmal schauen, was sich mit der Zeit im Skript generell tut 👍 . Danke ebenfalls für deine technischen Ausführungen, da ist eine if-Bedingung gedanklich immerhin ein Anfang bei mir gewesen 😄 😉

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

                  @wavemaster01

                  Die Überlegung wäre nicht direkt "in Fenstern" zu denken, sondern einen Indikator über Datenpunkt zu triggern, der dann den die grundsätzliche Möglichkeit bietet die Hintergrundfarbe des Screensavers zu ändern. Gibt aber aktuell auch nur eine Hintergrundfarbe für alle Fenster. Mit bExit müsste die Farbe spätestens wieder zurückgedreht werden.

                  Ich durchdenke das mal...

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

                    @wavemaster01

                    Hi wavemaster,

                    vlt. kann ich Dir einen anderen Ansatz bieten.

                    Ich habe mein Panel in einem 3D gedruckten Gehäuse eingelassen und habe obendrüber zwei große LEDs montiert, um damit den Status der Relays anzuzeigen. Dies kann man natürlich auch zweckentfremden und aus dem ioBroker anderweitig schalten.
                    In einer anderen Lösug habe ich eine LED für den Stauts meiner Heizung und einen On/Off Button für das Panel darüber gesetzt. Vlt. muss die Signalgebung nicht immer zwingend auf dem Panel abgebildet werden. LEDs die man ansteuern kann gibt es mittlerweile ja auch ganz günstig (Falls Du die Relays im panel nicht nutzt, kannst Du auch damit eine 230V LED steuern - kann da einen Tipp geben für schöne Edelstahl LEDs) und mit einem Logigskript im ioBroker kann man viel machen 😉

                    LG

                    W T 2 Replies Last reply Reply Quote 0
                    • W
                      wavemaster01 @Kuckuckmann last edited by

                      @kuckuckmann Hallo kuckuckmann, ein ganz andere Ansatz 👍 , wobei ein Relais brauche ich, damit ich die Treppenhausbeleuchtung neben der Tür schalten kann, damit bleibt mir ein Relais. Wenn ich gerade richtig mitdenke, kann ich aber mit diesem Relais wiederum nur zwei Zustände anzeigen, wobei ich zu/offen/gekippt bräuchte überleg oder habe ich da gerade einen Denkfehler bezüglich der Ansteuerung der LEDs

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

                        @wavemaster01

                        Ich hab zwar gerade kein Beispiel dafür (Hardware), aber es gibt doch bestimmt LEDs wo man via Skript die Farbe wechseln kann? Bsp. WLED gesteuert.

                        Musst Du denn offen und gekippt zwingend unterscheiden? Beides ist doch letztlich offen, oder nicht?

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

                          Hallo,

                          @kuckuckmann sagte in SONOFF NSPanel mit Lovelace UI:

                          Ich habe mein Panel in einem 3D gedruckten Gehäuse eingelassen

                          ich habe auch schon überlegt ein Gehäuse zu bauen. Kannst du mal ein Foto zeigen, wie das bei dir aussieht?

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

                            @armilar sorry für die wenigen Infos.
                            Mein Alias verweist auf einen Set-Point mit Komma.
                            Wie kriege ich denn das dann bitte gerundet?

                            Bei mir schaut das Thermostat so aus:

                            var Wohnzimmer_Themostat: PageThermo = 
                            {
                                "type": "cardThermo",
                                "heading": "Thermostat",
                                "useColor": true,
                                "subPage": false,
                                "parent": undefined,
                                "items": [<PageItem>{ id: "alias.0.NSPanelWozi-Settings.ThermostatWozi", minValue: 5, maxValue: 30 }]
                            };
                            
                            
                            Armilar H 2 Replies Last reply Reply Quote 0
                            • Armilar
                              Armilar Most Active Forum Testing @DaPeace last edited by

                              @dapeace

                              Dann war die Vermutung korrekt.

                              minValue muss auf 50, wenn 5.0°C und
                              maxValue muss auf 300, wenn 30.0°C

                              1 Reply Last reply Reply Quote 0
                              • H
                                holgerwolf @DaPeace last edited by holgerwolf

                                @dapeace Zum Runden: Du kannst im Geräte Manager in der Zuordnung der Werte mit Funktionen arbeiten. Da auf das "fx" gehen und die Funktion hinterlegen. Runden müsste mit "math.round (val)" gehen. Aber nicht getestet.

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

                                  @holgerwolf

                                  Ich verstehe nicht, was da gerundet werden soll? Hier geht es um die minimal und maximal einstellbare Temperatur des Thermostaten.

                                  Wenn der Thermostat (technisch laut Handbuch) bei 5°C anfängt (also aus ist), dann wird im pageItem eine 50 vergeben für 5.0 oder 5.

                                  Das gleiche für die maximal möglich einstellbare Temperatur des Thermostaten (Aufdrehen und Temperatur ablesen...)
                                  Steht da eine 30, dann 300 in den pageItem (entspricht dann 30.0 oder 30)

                                  Steht da 30.5, dann 305 in den pageItem eingeben (entspricht 30.5)

                                  Es können auch weitere Werte (eigentlich alle) eingegeben werden. Es muss aber dann mit dem Faktor 10 passieren

                                  Beispiele:
                                  4,5°C = 45
                                  29°C = 290
                                  32,5°C = 325
                                  usw.

                                  "items": [<PageItem>{ id: "alias.0.NSPanelWozi-Settings.ThermostatWozi", minValue: 5, maxValue: 30 }]
                                  

                                  Jetzt zu dem Beispiel aus dem pageItem von @DaPeace
                                  Diese Werte bedeuten übersetzt für das NSPanel: 0,5°C und 3,0°C.

                                  H 1 Reply Last reply Reply Quote 0
                                  • H
                                    holgerwolf @Armilar last edited by

                                    @armilar Sorry, hatte nur die Frage gelesen: "Mein Alias verweist auf einen Set-Point mit Komma.
                                    Wie kriege ich denn das dann bitte gerundet?"

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

                                      @holgerwolf

                                      Eine Rundung ist nicht erforderlich, da das NSPanel beim Setpoint bereits in 0.5 Steps arbeitet. An dieser Stelle übernimmt das Panel auch die Umrechnung mit dem Faktor 10

                                      Wenn minValue oder/und maxValue nicht gesetzt ist, dann wird vom Panel 5°C und 30°C angenommen.

                                      if (existsState(id + '.ACTUAL')) {
                                          currentTemp = (Math.round(parseFloat(getState(id + '.ACTUAL').val) * 10) / 10);
                                      }
                                                  
                                      let minTemp = page.items[0].minValue !== undefined ? page.items[0].minValue : 50;   //Min Temp 5°C            
                                      let maxTemp = page.items[0].maxValue !== undefined ? page.items[0].maxValue : 300;  //Max Temp 30°C
                                                  
                                      let stepTemp = 5 // 0,5° Schritte
                                      

                                      Das macht das TS-Script bereits (siehe Auszug)

                                      Vor Übergabe an das Payload wird dann auchnoch der Setpoint mit 10 multipliziert...

                                      destTemp = setValue.toFixed(2) * 10;
                                      

                                      Das Nextion kann ansonsten keine Fließkommazahlen verarbeiten...

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        Kuckuckmann @TT-Tom last edited by

                                        @tt-tom

                                        Sah so aus - ist aber eine Entwurfsfassung:

                                        IMG-20220909-WA0010.jpg

                                        1 Reply Last reply Reply Quote 1
                                        • D
                                          DaPeace last edited by

                                          @holgerwolf Sorry dachte der Datenpunkt muß korrigiert werden aber so wie @Armilar das gesagt hat reichts aus und funzt auch. Danke für die prompte Hilfe!

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

                                            @armilar Hallo, ich bin es nochmals :-). Ich habe mir deine Anweisungen genau durchgelesen und ein wenig recherchiert, gebastelt und probiert :-).
                                            Jetzt habe ich bereits eines geschafft. Ich kann die Farben des Screensavers mit Werten befüllen, die ich per MQTT bekomme. Sprich ich lasse mir, je nach Situation, die nötigen Farbwerte für RGB senden.
                                            Wenn ich das Skript neu im IOBroker starte, wird auch die Hintergrundfarbe des Screensavers auf dem Display geändert.

                                            Du hast geschrieben, dass ich zur automatischen Übernahme der Werte den Screensaver neu rendern muss. Gibt es dazu eine Funktion. Ich habe unter //Testbereich ein wenig herumprobiert, aber die Farbe wird bei Änderung nicht geupdatet. Vielleicht bin ich aber auch komplett auf dem Holzweg 😌 und ob der Code schön ist 😄 - lerne da gerade per try and error

                                            Danke nochmals!

                                            var a ="mqtt.0.Test.FensterFarbe1";
                                            var a2= getState(a).val;
                                            var a3: number = +a2;
                                            var b ="mqtt.0.Test.FensterFarbe2";
                                            var b2= getState(b).val;
                                            var b3: number = +b2;
                                            var c ="mqtt.0.Test.FensterFarbe";
                                            var c2= getState(c).val;
                                            var c3: number = +c2;
                                            
                                            const scbackground:     RGB = { red: a3, green:  b3, blue: c3};
                                            
                                            //Testbereich
                                            on(a, function(a2) {
                                            HandleScreensaverColors();
                                            HandleScreensaverUpdate();
                                            });
                                            on(b, function(b2) {
                                            HandleScreensaverColors();
                                            HandleScreensaverUpdate();
                                            });
                                            on(c, function(c2) {
                                            HandleScreensaverColors();
                                            HandleScreensaverUpdate();
                                            });
                                            
                                            
                                            Armilar 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            655
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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