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 @froitzheims last edited by

      @froitzheims

      Zuerst mal die locales checken:

      sudo raspi-config
      

      dann zu Set locale navigieren und de_DE.UTF-8 auswählen (falls noch nicht aktiv)

      mit

      sudo apt-get update
      sudo apt-get dist-upgrade
      

      auf den neuesten Stand bringen.

      Dann node.js updaten auf die empfohlene Version 16.18.1 (npm zieht sich automatisch auf die 8.19.2) Am Besten nach der Anleitung (und bitte keine 18.X.X):
      https://forum.iobroker.net/topic/35090/howto-nodejs-installation-und-upgrades-unter-debian
      Deine Laufzeitumgebung für JavaScript (und das ist node.js) und somit die Laufzeitumgebung für den kompletten ioBroker und auch das TS-Script ist völlig veraltet. Daher bitte updaten.

      Die us-p Version ist okay - muss nichts geändert werden!

      Die Aliase sind nicht korrekt. Versuche den Geräte-Manager nach dem node.js Update nochmal in Gang zu bringen. Der Alias-Manager kann das zwar auch, jedoch brauchst du hierfür Erfahrung.
      Deine Datenpunkte im Alias sind allesamt falsch benannt. Eine Lampe benötigt nicht diese Datenpunkte zum steuern, sondern mindestens etwas zum Schalten also on/switch oder bei einigen auch power. Diese gehen dann im ALIAS über einen ACTUAL oder/und SET.

      Siehe auch: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-ALIAS-Table

      Der Geräte-Manager macht das in der Regel richtig.

      Und ebenfalls sollten Leerzeichen (und Sonderzeichen, Umlaute) vermieden werden. Besser zusammenschreiben wie LampeHolz oder Lampe_Holz

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

        @bean

        Manchmal überholen sich die Ereignisse. Das Haus-Symbol ist zwar schon zu sehen, bekommt erst mit der nächsten Script-Version eine Funktion.

        Lies dir zu den Hardwaretasten kurz https://github.com/joBr99/nspanel-lovelace-ui/wiki/NSPanel-Tasmota-FAQ durch.

        Falls das nicht dabei ist, nochmal melden...

        B F 2 Replies Last reply Reply Quote 1
        • Armilar
          Armilar Most Active Forum Testing @bean last edited by Armilar

          @bean sagte in SONOFF NSPanel mit Lovelace UI:

          Noch einfacher gehts, wenn man die Schreibfunktionen des Datenpunkts im Devicemanager bearbeitet:

          Wobei, wenn ich den Ternary richtig interpretiere fragst du folgendes ab:

          Wenn der Wert auf ungleich 0 ist, dann setzte 100 (also hoch) sonst 0 (also runter)

          Warum setzt du nicht val = 100 und val = 0? 🙄

          Weil was ist, wenn der Wert z.B. auf 1, 2 oder 3 steht. Dann fährt das Rollo bei Up runter...

          Vumer B 2 Replies Last reply Reply Quote 0
          • Vumer
            Vumer last edited by Vumer

            @armilar sagte in SONOFF NSPanel mit Lovelace UI:

            Manchmal überholen sich die Ereignisse.

            Ich hoffe das ist schon älter 😉
            Abfallkalender


            const idAbfalliCal = 'ical.0'; // iCal Instanz zum Abfallkalender
            const idZeichenLoeschen = 0; // x Zeichen links vom String abziehen, wenn vor dem Eventname noch Text steht z.B. Strassenname; Standard = 0
            const idRestmuellName ='Restabfall'; // Schwarze Tonne
            const idWertstoffName = 'Gelbe Tonne'; // Gelbe Tonne / Sack
            const idPappePapierName = 'Papiertonne'; // Blaue Tonne
            const idBioabfaelleName = 'Komposttonne'; // Braune Tonne

            var i, Muell_JSON, Event2, Color = 0;

            for (i = 1; i <= 4; i++) {
            if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.date')) {
            log(i + '.date nicht vorhanden, wurde erstellt');
            createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.date', '',
            {
            name: parseFloat(i) + '.date',
            role: 'state',
            type: 'string',
            read: true,
            write: true,
            def: ''
            });
            };
            if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.event')) {
            log(i + '.event nicht vorhanden, wurde erstellt');
            createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.event', '',
            {
            name: parseFloat(i) + '.event',
            role: 'state',
            type: 'string',
            read: true,
            write: true,
            def: ''
            });
            };
            if (!existsState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.color')) {
            log(i + '.color nicht vorhanden, wurde erstellt');
            createState('0_userdata.0.Abfallkalender.' + parseFloat(i) + '.color', 0,
            {
            name: parseFloat(i) + '.color',
            role: 'state',
            type: 'number',
            read: true,
            write: true,
            def: 0
            });
            };
            }

            function subsequenceFromStartLast(sequence, at1) {
            var start = at1;
            var end = sequence.length;
            return sequence.slice(start, end);
            }

            on({ id: idAbfalliCal + '.data.table', change: "ne" }, async function () {

            for (i = 0; i <= 3; i++) {
            Muell_JSON = getState(idAbfalliCal + '.data.table').val;
            setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.date'].join('')), getAttr(Muell_JSON, (String(i) + '.date')), false, parseInt(((0) || "").toString(), 10), false);
            Event2 = subsequenceFromStartLast(getAttr(Muell_JSON, (String(i) + '.event')), idZeichenLoeschen);
            setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.event'].join('')), Event2, false, parseInt(((0) || "").toString(), 10), false);
            if (Event2 == idRestmuellName) {
            Color = 33840;
            } else if (Event2 == idBioabfaelleName) {
            Color = 48192;
            } else if (Event2 == idPappePapierName) {
            Color = 2016;
            } else if (Event2 == idWertstoffName) {
            Color = 65504;
            }
            setStateDelayed((['0_userdata.0.Abfallkalender.', parseFloat(i) + 1, '.color'].join('')), Color, false, parseInt(((0) || "").toString(), 10), false);
            }
            });

            javascript.0 2022-12-05 12:17:07.105	error	at processImmediate (node:internal/timers:466:21)
            javascript.0 2022-12-05 12:17:07.105	error	at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
            javascript.0 2022-12-05 12:17:07.105	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:593:29)
            javascript.0 2022-12-05 12:17:07.105	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1244:38)
            javascript.0 2022-12-05 12:17:07.105	error	at Object.<anonymous> (script.js.common.NSPanel.Abfallkalender:61:18)
            javascript.0 2022-12-05 12:17:07.105	error	at subsequenceFromStartLast (script.js.common.NSPanel.Abfallkalender:52:24)
            javascript.0 2022-12-05 12:17:07.104	error	script.js.common.NSPanel.Abfallkalender: TypeError: Cannot read properties of null (reading 'length')
            

            was habe ich wieder falsch gemacht?

            Armilar T 2 Replies Last reply Reply Quote 0
            • Vumer
              Vumer @Armilar last edited by

              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

              Warum setzt du nicht val = 100 und val = 0?

              Beim HM funktioniert das so mit 0 und 100

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

                @vumer

                Kann ich dir erst sagen, wenn du mir die zugehörige Seite für das NSPanel mitteilst die 4 Aliase vom Gerätetyp: Warnung aufruft...

                Im Spoiler finde ich nur ein Script, das Datenpunkte aus einem iCal in 0_userdata erstellt und befüllt. 😉

                Vumer 1 Reply Last reply Reply Quote 0
                • B
                  bean @Armilar last edited by

                  @armilar said in SONOFF NSPanel mit Lovelace UI:

                  Lies dir zu den Hardwaretasten kurz https://github.com/joBr99/nspanel-lovelace-ui/wiki/NSPanel-Tasmota-FAQ durch.
                  Falls das nicht dabei ist, nochmal melden...

                  Danke für den Linkt, kannte ich noch nicht. Hatte die Buttons in Tasmota aber einer anderen Infosammlung entsprechend entkoppelt, das funktioniert auch (Keine Relaisbenutzung).
                  Im script sind die Buttons auch konfiguriert (zB button2Page: Abfall,), aber trotzdem wechseln die Seiten bei Tastenbetätigung durch...

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

                    @bean sagte in SONOFF NSPanel mit Lovelace UI:

                    aber trotzdem wechseln die Seiten bei Tastenbetätigung durch...

                    Ich kann mit der Aussage nichts anfangen. Was wechselt wann, wie durch?

                    Welche Seiten sind wo konfiguriert und wie sehen die aus?

                    Was ist konfiguriert, was passiert wenn du was machst (präzise und detailliert) und was wird erwartet? Was hast du z.B. an Rules im Tasmota benutzt und wie sehen die aus? Welche Einstellungen hat Tasmota ggfs. noch bekommen?

                    Das ist mir zu wenig Content. Ich wüsste da nicht ansatzweise, wo ich unterstützen kann...

                    B 1 Reply Last reply Reply Quote 0
                    • Vumer
                      Vumer @Armilar last edited by

                      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                      Im Spoiler finde ich nur ein Script, das Datenpunkte aus einem iCal in 0_userdata erstellt und befüllt

                      das ist auch der script.js.common.NSPanel.Abfallkalender
                      Der NSPanelTs.ts lief gar nicht. Und der Fehler tritt auf wenn ich dem script.js.common.NSPanel.Abfallkalender starte

                      1 Reply Last reply Reply Quote 0
                      • B
                        bean @Armilar last edited by

                        @armilar said in SONOFF NSPanel mit Lovelace UI:

                        @bean sagte in SONOFF NSPanel mit Lovelace UI:

                        Noch einfacher gehts, wenn man die Schreibfunktionen des Datenpunkts im Devicemanager bearbeitet:

                        Wobei, wenn ich den Ternary richtig interpretiere fragst du folgendes ab:
                        Wenn der Wert auf ungleich 0 ist, dann setzte 100 (also hoch) sonst 0 (also runter)
                        Warum setzt du nicht val = 100 und val = 0?
                        Weil was ist, wenn der Wert z.B. auf 1, 2 oder 3 steht. Dann fährt das Rollo bei Up runter...

                        Bin da ja auch noch am experimentieren, aber meiner Erkenntnis nach:
                        Der Datenpunkt "Open" ist ja vom Typ Boolean und gleichzeitig ein Trigger/Taster, ist also immer auf "true" und wird nur aktualisiert.
                        Ich dachte ich muss bei der Funktion erst den Wert abfragen, dass es einfach so auch gehen könnte hab ich noch nicht bedacht, wird ausprobiert. Zumindest ist ein eigenes Skript nicht notwendig.

                        1 Reply Last reply Reply Quote 0
                        • B
                          bean @Armilar last edited by

                          @armilar said in SONOFF NSPanel mit Lovelace UI:

                          Ich kann mit der Aussage nichts anfangen. Was wechselt wann, wie durch?
                          Welche Seiten sind wo konfiguriert und wie sehen die aus?

                          Ich habe Pages konfiguriert

                             pages: [
                                     SzenenLicht,
                                     SzenenRollos,
                                     Mattelsberg,
                                     CardPowerExample,
                                     Radio,
                                     Alexa,
                                     Sonos,
                                     Abfall
                             ],
                          

                          und die Buttonpages

                              button1Page: button1cardPage, 
                              button2Page: Abfall 
                          
                          

                          Diese Seiten funktionieren genauso wie erwartet, alles super.

                          Was ist konfiguriert, was passiert wenn du was machst (präzise und detailliert) und was wird erwartet?

                          Wenn ich nun die physischen Tasten am Panel drücke, wechsle ich zwischen den Pages durch, mit der rechten Taste wechsle ich "Vorwärts" (nach unten in der Liste der Pages), mit der linken wechsle ich "rückwärts" (nach oben), so als würde ein Seitenzähler um eins erhöht oder verringert.
                          Erwartet hätte ich, dass mich der Druck auf die linke Taste auf die button1cardPage bringt und ein Druck auf die rechte Taste auf die Abfallseite.

                          Was hast du z.B. an Rules im Tasmota benutzt und wie sehen die aus? Welche Einstellungen hat Tasmota ggfs. noch bekommen?

                          Ich habe Rule2 mit beiden Buttons konfiguriert und an meine MQTT-Struktur angepasst.

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

                          Die Button-Events kommen auch im passenden Datenpunkt an. Sonst (glaub ich) habe ich nichts an Tasmota geändert.

                          Das ist mir zu wenig Content. Ich wüsste da nicht ansatzweise, wo ich unterstützen kann...

                          Kein Stress, er funktioniert ja grundsätzlich, nur nicht so wie erwartet. Ich habe nur etwas das Gefühl, hier einem Bug auf der Spur zu sein, aber dass dieses Verhalten nur hier auftritt, ist seltsam.

                          Und falls ich es noch nicht erwähnt habe: Danke für die super Arbeit!!

                          Armilar 1 Reply Last reply Reply Quote 0
                          • Vumer
                            Vumer last edited by

                            @bean sagte in SONOFF NSPanel mit Lovelace UI:

                            Ich dachte ich muss bei der Funktion erst den Wert abfragen

                            Du schreibst die Werte. Shuttercontrol z.B. macht auch nichts anderes
                            So sieht meine mired -> kelvin -> mired umrechnung aus

                            9574e4aa-40bd-48a7-a76f-07466f2ba7d1-grafik.png

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

                              @bean sagte in SONOFF NSPanel mit Lovelace UI:

                              Wenn ich nun die physischen Tasten am Panel drücke, wechsle ich zwischen den Pages durch, mit der rechten Taste wechsle ich "Vorwärts" (nach unten in der Liste der Pages), mit der linken wechsle ich "rückwärts" (nach oben), so als würde ein Seitenzähler um eins erhöht oder verringert.

                              Es gibt da eine Tasmota-Rule, die exakt dieses Verhalten widerspiegelt und die Tasten als Pagezähler nutzt , jedoch wird die separat definiert. Ist da eventuell noch eine andere hinterlegt?

                              Bei mir sind die immer nur als Rule2 eingestellt und die machen auch exakt nur die definierte Seite auf. Selbst wenn ich auf den Button erneut drücke, dann wird die Seite nur neu aúfgebaut, aber nur das - kein Seitenwechsel.

                              Sieh mal nach, ob da noch andere Rules (1, 3) aktiv sind oder gehe mal mit

                              Rule1 0
                              Rule3 0
                              

                              vor, falls wirklich noch andere da sind.

                              Ich vermute, dass der den Fulltopic bei dir nicht interpretieren kann.

                              %topic%/%prefix%/RESULT
                              

                              Sieht der wirklich genauso aus oder ist der wie bei den meisten Anwendern verändert?

                              Bei mir sieht das z.B. so aus:

                              SmartHome/%topic%/tele/RESULT
                              

                              Du kannst auch die erste Zeile, z.B.

                              mqtt.0.SmartHome.NSPanel_1.tele.RESULT
                              

                              in der Config dafür nutzen und das mqtt.0. weglassen. Müsste dann in etwa so aussehen:

                              SmartHome.NSPanel_1.tele.RESULT
                              

                              also analog Deiner MQTT-Einstellungen und kann dann das %topic%/%prefix%/RESULT ersetzten.

                              EDIT: Habe die Rule gerade gefunden, die genau dein Verhalten zeigt.. Sieht ähnlich aus, ist aber was völlig anderes. So in etwa sollte die "nicht" vorhanden sein, wenn du die Button-Pages nutzen möchtest:

                              Rule1 on Button1#state do Publish %topic%/tele/RESULT {"CustomRecv":"event,buttonPress2,hwbtn,bPrev"} endon on Button2#state do Publish %topic%/tele/RESULT {"CustomRecv":"event,buttonPress2,hwbtn,bNext"} endon
                              
                              B 1 Reply Last reply Reply Quote 1
                              • B
                                bean @Armilar last edited by

                                @armilar
                                Danke, damit kann ich was anfangen!
                                Tatsächlich ist bei mir bei der Rule2 ein bPrev und BNext hinterlegt 😵 - (Rule1 und Rule2 sind deaktiviert). Keine Ahnung wo ich das falsch C&P'ed habe... Danke, ohne den Hint hätte ich das nicht gefunden 👍

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

                                  @froitzheims

                                  Hi,

                                  in Bezug auf das was @Armilar schon geschrieben hat, bitte lege die Aliase immer mit dem Geräte Adapter an. Ein manuelles Anlegen hat bisher zu 100% nicht funktioniert.

                                  LG

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

                                    @vumer

                                    das Script ist vom mir. Poste bitte mal die Einstellungen von dem Script. Läuft der ical Adapter mit einem Abfallkalender? Hast du im Table-Ordner ein "JSON" mit den Daten?

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

                                      @tt-tom sagte in SONOFF NSPanel mit Lovelace UI:

                                      Poste bitte mal die Einstellungen von dem Script.

                                      Gerne, hilf mir bitte was genau.
                                      Das Script funktioniert

                                      49ae187c-4c78-4163-a58f-6111b54529cc-grafik.png

                                      Sobalt ein neuer Event auftaucht kommt diese FM

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

                                        @tt-tom

                                        host.iobroker
                                        	2022-12-05 22:08:00.330	info	instance system.adapter.ical.0 terminated with code 0 (NO_ERROR)
                                        javascript.0
                                        	2022-12-05 22:07:54.685	error	at processImmediate (node:internal/timers:466:21)
                                        javascript.0
                                        	2022-12-05 22:07:54.685	error	at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
                                        javascript.0
                                        	2022-12-05 22:07:54.685	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:593:29)
                                        javascript.0
                                        	2022-12-05 22:07:54.684	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1244:38)
                                        javascript.0
                                        	2022-12-05 22:07:54.684	error	at Object.<anonymous> (script.js.common.NSPanel.Abfallkalender:61:18)
                                        javascript.0
                                        	2022-12-05 22:07:54.684	error	at subsequenceFromStartLast (script.js.common.NSPanel.Abfallkalender:52:24)
                                        javascript.0
                                        	2022-12-05 22:07:54.684	error	script.js.common.NSPanel.Abfallkalender: TypeError: Cannot read properties of null (reading 'length')
                                        host.iobroker
                                        	2022-12-05 22:07:51.554	info	instance system.adapter.ical.0 started with pid 14903
                                        host.iobroker
                                        	2022-12-05 22:07:51.539	info	instance scheduled system.adapter.ical.0 17 */6 * * *
                                        host.iobroker
                                        	2022-12-05 22:07:48.359	info	stopInstance canceled schedule system.adapter.ical.0
                                        host.iobroker
                                        	2022-12-05 22:07:48.359	info	stopInstance system.adapter.ical.0 (force=false, process=false)
                                        host.iobroker
                                        	2022-12-05 22:07:33.750	info	instance system.adapter.ical.0 terminated with code 0 (NO_ERROR)
                                        

                                        es reich dem iCal Adapter neu zu starten
                                        aber nur wenn das Script leuft

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

                                          @vumer

                                          ist die Tagesvorschau groß genug?

                                          45771be3-79c9-4281-84b2-a185d0d57d5a-image.png

                                          Es sollten mindestens 4 Events erzeugt werden. Auch wenn die zum Teil über mehrere Wochen stattfinden.

                                          Cannot read properties of null (reading 'length')
                                          

                                          Da die einzige Längenermittlung im Skript ein Problem verursacht, könnte ich mir vorstellen, dass es bei der subsequenceFromStartLast stattfindet, jedoch kein 3. oder 4. Eintrag gefunden wird und dann der Fehler kommt. 🙄

                                          Vumer 1 Reply Last reply Reply Quote 1
                                          • Vumer
                                            Vumer @Armilar last edited by

                                            @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                                            Es sollten mindestens 4 Events erzeugt werden. Auch wenn die zum Teil über mehrere Wochen stattfinden.

                                            Das war es. Ich hatte 14 Tage

                                            Danke.

                                            Armilar T 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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