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.
    • Vumer
      Vumer last edited by Vumer

      ist es möglich bei cardMedia wenn spotify-premium.0.player.isPlaying true ist das Icon 'spotify' grün leuchtet? Es gibt ja sogar eine const colorSpotify
      Einen isPlaying Alias habe ich

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

        @vumer

        Ist es möglich bei cardMedia wenn spotify-premium.0.player.isPlaying true ist das Icon 'spotify' grün leuchtet?

        die colorSpotify habe ich vor Monaten mal angelegt. Damit starte ich Spotify-Playlists aus einer cardGrid 😉

        Es gab zu dem Zeitpunkt auch ein Alexa-Logo. Weiß der Geier warum das verschwunden ist. Dem trauere ich immer noch hinterher.

        Nun zur Frage. Nein, die Farbe für das Icon ist im Payload nicht enthalten.

        Lasse uns @joBr99 kurz fragen, ob man das in den nächsten Versionen noch einfärben könnte?

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

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

          der Umzug und das Alles hat doch länger gedauert als gedacht. Aber so langsam erwacht das Smarthome wieder

          Hauptsache ist, dass sich alle im neuen Zuhause wohlfühlen. Smart wird das - da bin ich mir sicher 😊

          Wer einmal Blut geleckt hat, der bleibt dabei. ioBroker macht süchtig...

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

            @armilar sagte in SONOFF NSPanel mit Lovelace UI:

            Wer einmal Blut geleckt hat, der bleibt dabei. ioBroker macht süchtig...

            Au ja, da sind noch viele Ideen. Muss es den Mädels nur schmackhaft machen 😊

            zum Panel habe ich ja mal das Script für den Abfallkalender angefangen und ins Wiki gestellt. Ich habe hier noch eine erweiterte Version, wo die Alias mit erstellt werden. Mit der JS-Adapter Version 6.1.3 hat sich die Prozedur ja verbessert.
            Könntest du mir helfen es anzupassen.

            Das ist der aktuelle Stand:

            /*
            Version 3.0 von TT-Tom
            das Script erstellt die Datenpunkte und Alias für den Abfallkalender im Sonoff NSPanel
            Es wird der iCal Adapter benötigt und eine URL mit Terminen vom Entsorger bzw. eine .ics-Datei mit den Terminen.
            gleichzeitig triggert das Script auf dem bereitgestellten JSON im iCal adapter und füllt die 0_userdata.0 Datenpunkte
            Weitere Informationen findest du in der FAQ auf Github https://github.com/joBr99/nspanel-lovelace-ui/wiki
            */
            
            
            const idAbfalliCal = 'ical.1'; // iCal Instanz zum Abfallkalender
            const idUserdataAbfallVerzeichnis = 'Abfallkalender'; // Name des Datenpunktverzeichnis unter 0_userdata.0 -> Strandard = Abfallkalender
            const idAliasPanelVerzeichnis = 'NSPanel.1'; //Name PanelVerzeichnis unter alias.0. Standard = NSPanel_1
            const idAliasAbfallVerzeichnis = 'Abfall'; //Name Verzeichnis unterhalb der idPanelverzeichnis  Standard = Abfall
            
            const idZeichenLoeschen = 14; // x Zeichen links vom String abziehen, wenn vor dem Eventname noch Text steht z.B. Strassenname; Standard = 0
            const idRestmuellName = 'Hausmüll'; // Schwarze Tonne
            const idWertstoffName = 'Gelber Sack'; // Gelbe Tonne / Sack
            const idPappePapierName = 'Papier';  // Blaue Tonne
            const idBioabfaelleName = 'Biomüll'; // Braune Tonne
            
            const idDPPruefung = false; // mit "false" wird die Prüfung der Datenpunkte in 0_userdata.0 und alias.0 ausgesetzt
            
            
            
            // ------------------------- Trigger zum füllen der 0_userdata Datenpunkte aus dem json vom ical Adapter -------------------------------
            var i, Muell_JSON, Event2, Color = 0;
            
            // Trigger auf iCal Instanz zur Json Tabelle
            on({ id: idAbfalliCal + '.data.table', change: 'ne' }, async function () {
            
                for (i = 1; i <= 4; i++) {
                    Muell_JSON = getState(idAbfalliCal + '.data.table').val;
                    setState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.date', getAttr(Muell_JSON, (String(i - 1) + '.date')));
                    Event2 = subsequenceFromStartLast(getAttr(Muell_JSON, (String(i - 1) + '.event')), idZeichenLoeschen);
                    setState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.event', Event2);
                    if (Event2 == idRestmuellName) {
                        Color = 33840;
                    } else if (Event2 == idBioabfaelleName) {
                        Color = 2016;
                    } else if (Event2 == idPappePapierName) {
                        Color = 31;
                    } else if (Event2 == idWertstoffName) {
                        Color = 65504;
                    }
                    setState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.color', Color);
                }
            });
            
            function subsequenceFromStartLast(sequence, at1) {
                var start = at1;
                var end = sequence.length;
                return sequence.slice(start, end);
            };
            // ------------------------------------- Ende Trigger ------------------------------------
            
            // ------------------------------------- Funktionen zur Prüfung und Erstellung der Datenpunkte in 0_userdata.0 und alias.0 -----------------------
            if (idDPPruefung) {
                checkUserdataState();
                await wait(2000);
                checkAliasFolder();
                checkAliasChannel();
                checkAliasState();
            };
            // Prüfung und ggf. Erstellung der Datenpunkte unter 0_userdata.0
            function checkUserdataState() {
                for (i = 1; i <= 4; i++) {
                    if (!existsState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.date')) {
                        log('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.date nicht vorhanden, wurde erstellt');
                        createState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.date', '',
                            {
                                name: i + '.date',
                                role: 'state',
                                type: 'string',
                                read: true,
                                write: true
                            });
                    };
                    if (!existsState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.event')) {
                        log('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.event nicht vorhanden, wurde erstellt');
                        createState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.event', '',
                            {
                                name: i + '.event',
                                role: 'state',
                                type: 'string',
                                read: true,
                                write: true
                            });
                    };
                    if (!existsState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.color')) {
                        log('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.color nicht vorhanden, wurde erstellt');
                        createState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.color', 0,
                            {
                                name: i + '.color',
                                role: 'state',
                                type: 'number',
                                read: true,
                                write: true
                            });
                    };
                };
            };
            // Prüfung das Alias states vorhanden sind ggf. anlegen
            function checkAliasState() {
                for (i = 1; i <= 4; i++) {
                    if (!existsState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.INFO')) {
                        log('Alias State event' + i + '.INFO nicht vorhanden, wird erstellt');
                        createAliasState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.INFO', '0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.date', 'string', 'INFO', 'weather.title');
                    } else { log('irgendwasgefunden .event' + i + '.INFO') };
                    if (!existsState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.LEVEL')) {
                        log('Alias State event' + i + '.LEVEL nicht vorhanden, wird erstellt')
                        createAliasState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.LEVEL', '0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.color', 'number', 'LEVEL', 'value.warning');
                    } else { log('irgendwasgefunden .event' + i + '.LEVEL') };
                    if (!existsState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.TITLE')) {
                        log('Alias State event' + i + '.TITLE nicht vorhanden, wird erstellt')
                        createAliasState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.TITLE', '0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + i + '.event', 'string', 'TITLE', 'weather.title.short');
                    } else { log('irgendwasgefunden .event' + i + '.TITLE') };
                };
            
            };
            // Erstellt ein State unter Alias.0
            function createAliasState(idDst, idSrc, typeAlias, nameAlias, role) {
                var obj = {};
                obj.type = 'state';
                obj.common = getObject(idSrc).common;
                obj.common.alias = {};
                obj.common.alias.id = idSrc;
                obj.common.type = typeAlias;
                obj.common.name = nameAlias;
                obj.common.role = role;
                obj.native = {};
                setObject(idDst, obj);
            };
            // Prüfung das Alias Channel vorhanden sind ggf. anlegen
            function checkAliasChannel() {
                for (i = 1; i <= 4; i++) {
                    if (!existsObject('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i)) {
                        log('Alias Channel ' + idAliasAbfallVerzeichnis + '.event' + i + ' nicht vorhanden');
                        createAliasChannel('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i, idAliasAbfallVerzeichnis + '.event' + i, 'warning');
                    }
                }
            };
            // Erstellt ein Channel unter Alias.0
            function createAliasChannel(idDst, nameAlias, role) {
                var obj = {};
                obj.type = 'channel';
                obj.common = {};
                obj.common.name = {};
                obj.common.name.de = nameAlias;
                obj.common.role = role;
                obj.native = {};
                setObject(idDst, obj);
            };
            // Prüfung das Alias Folder vorhanden sind ggf. anlegen
            function checkAliasFolder() {
                if (!existsObject('alias.0.' + idAliasPanelVerzeichnis)) {
                    log('Alias Folder ' + idAliasPanelVerzeichnis + ' nicht vorhanden');
                    createAliasFolder('alias.0.' + idAliasPanelVerzeichnis, idAliasPanelVerzeichnis);
                };
            }
            // erstellt ein Folder unter Alias.0
            function createAliasFolder(idDst, nameAlias) {
                var obj = {};
                obj.type = 'folder';
                obj.common = {};
                obj.common.name = nameAlias;
                obj.native = {};
                setObject(idDst, obj);
            };
            // --------------------------- Ende Funktionen Datenpunkte ------------------------------------------------
            
            
            Armilar 1 Reply Last reply Reply Quote 1
            • Armilar
              Armilar Most Active Forum Testing @TT-Tom last edited by

              @tt-tom

              mache ich gerne, aber mein ioBroker zieht grade auf ein neues NAS 😉 Kann auch morgen werden 😊

              1 Reply Last reply Reply Quote 0
              • J
                joBr99 @Armilar last edited by joBr99

                @armilar said in SONOFF NSPanel mit Lovelace UI:

                Es gab zu dem Zeitpunkt auch ein Alexa-Logo. Weiß der Geier warum das verschwunden ist. Dem trauere ich immer noch hinterher.

                https://dev.materialdesignicons.com/roadmap/brand-icons
                https://github.com/Templarian/MaterialDesign/issues/5409

                @armilar said in SONOFF NSPanel mit Lovelace UI:

                Nun zur Frage. Nein, die Farbe für das Icon ist im Payload nicht enthalten.
                Lasse uns @joBr99 kurz fragen, ob man das in den nächsten Versionen noch einfärben könnte?

                done, ist aber noch nicht getestet, könnte jetzt auch ganz kaputt sein 🙂

                https://github.com/joBr99/nspanel-lovelace-ui/commit/05e3cf9efa20e26c46faade899573189509003ca

                mririgoyen created this issue in Templarian/MaterialDesign

                closed RELEASED - Version 6.1.95 - Breaking Changes #5409

                0 joBr99 committed to joBr99/nspanel-lovelace-ui
                add color fields on cardMedia implements #584
                Armilar 1 Reply Last reply Reply Quote 0
                • W
                  Wuschl last edited by Wuschl

                  Ist es eigentlich auch möglich die Relais einzeln abzukoppeln? Der linke Taster funktioniert ganz normal mit Relais zum schalten für das Licht, der rechte Taster wird benutzt zum Rollos auf und zu fahren, das rechte Relais könnte ich dann frei schalten?

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

                    @armilar Ich habe jetzt bei allen Panels die TFT-Firmware von deinem Wiki-Link nochmal geflasht, seit dem funktioniert alles, und die Warnmeldungen sind alle weg.👍

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

                      @wuschl
                      Ja. schau dazu mal in die Wiki, ich habe es dort beschrieben.

                      W 1 Reply Last reply Reply Quote 0
                      • Meister-x
                        Meister-x @Armilar last edited by

                        @armilar
                        Hallo,
                        war leider paar Tage nicht hier- es sind soviele Einträge dazischen... teils mit meinem Thema "Dimmmode mit Bewegungsmelder hell".
                        Sorry , wenn ich so doof frage- kommt vielleicht eine Lösung mit der nächsten Version oder ist da unten schon was dabei ?
                        Hab schon vieles versucht -leider ohne Erfolg.

                        Vielen Dank und wirklich super was du so machst !

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

                          @kuckuckmann cool😎
                          war zwar jetzt eine lange Prozedur bis ich das gecheckt hab, aber es funktioniert. Ihr seid einfach klasse👋

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

                            @wuschl
                            Das freut mich 🙂

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

                              @meister-x sagte in SONOFF NSPanel mit Lovelace UI:

                              kommt vielleicht eine Lösung mit der nächsten Version

                              Ja, erst mit der nächsten Version

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

                                @jobr99 sagte in SONOFF NSPanel mit Lovelace UI:

                                ist aber noch nicht getestet, könnte jetzt auch ganz kaputt sein

                                Ich baue es mal ein und teste es durch...

                                D 1 Reply Last reply Reply Quote 0
                                • ravenst0ne
                                  ravenst0ne last edited by

                                  Würde mal gerne die Diskussion in den Raum stellen, die Konfiguration vom eigentlichen Skript zu trennen (eigene *.ts Dateien) 🙂 Bei Updates müsste man nur das komplette Skript austauschen, und nicht seine Konfig umständlich rumkopieren. Auch bei mehreren NSPanel im Einsatz würde man nur ein einzelnes Skript benötigen

                                  Homoran Armilar 2 Replies Last reply Reply Quote 1
                                  • Homoran
                                    Homoran Global Moderator Administrators @ravenst0ne last edited by

                                    @ravenst0ne Doppelpost?
                                    dafür hattest du doch gerade einen eigenen Thread aufgemacht.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            968
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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