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

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

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

      @arteck

      Beim Adapter bringt es aktuell keinen Mehrwert, da die cardThermo2 im Gegensatz zum Skript noch nicht implementiert ist...

      Für Pirate-Weather (falls gewünscht) kannst du auch auf einer kleineren TFT-Version im Adapter arbeiten.

      1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer @arteck last edited by

        @arteck

        Ich hab aktuell nicht soviel freie Zeit um die cardThermo2 im Adapter einzubauen - Mal gucken.

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

          @armilar said in SONOFF NSPanel mit Lovelace UI:

          @bhenyamin

          Darf ich hier nochmal Pingen?

          natürlich und jederzeit... dafür ist der Thread ja da 😊

          Hast du noch einen Lösungsansatz für mich?

          Ich dachte nach der Konversation mit @TT-Tom (ACTUAL/SET) wäre das erledigt.

          Ich bekomme den Slider weiter nicht auf Spur. Er springt weiter...

          Und genau das kann ich nicht reproduzieren. Der Slider arbeitet auf den Punkt exakt und kommt auch wieder nach einem Seitenwechsel zum eingestellten Wert zurück...

          EDIT: siehe
          989f50b3-e9d6-444a-9db2-bab54524cf50-Nextion_Editor_gGYdzzzBvQ.gif

          EDIT2: was du nochmal machen könntest, wäre in der Tasmota Konsole "weblog 3" eingeben und den Part (Tasmota Log) mit dem Sliderspiel mal senden...

          Danke Dir. Ich habe gerade keine Zeit, da wirklich tief rein zu gehen, aber gestern während einer kleinen Feier hier löste sich das Problem quasi von selbst. Dan Panel hing plötzlich mit Blackscreen. Also mit Bier in der Hand vom Handy aus Neustart und zum bestimmt 7. Mal wieder die v. 4.9.4. TFT geflasht, was nach 2. Anläufen glückte.
          Irgendwie hing hier aber doch alles und die Log war voller Fehler (fehlende Kommunikation mit allen MQTT devices) Also mal alles hier gereebootet:
          Plötzlich läuft der Slider perfekt. 😲.
          Keine Ahnung, wo da der Zusammenhang war. Aber ich bin Happy!

          D 1 Reply Last reply Reply Quote 1
          • D
            drloksoft @Bhenyamin last edited by

            Hi,
            kann mir bitte kurz jemand helfen?

            Ich habe mein SONOFF Panel so konfiguriert, dass ich mit dem Hadware Buttons mein Licht ein und ausschalten kann. Allerdings finde ich nun nicht mehr, wie ich das konfiguriert habe 😧 Kann mir kurz jemand einen Hinweis geben? Es wird ein WLED Lichtstrip (Button 1) und eine Nanoleaf Leuchte (Button 2 gesteuert). War das irgendwo außerhalb des Scriptes? Sorry, aber ich finde es nicht mehr ... peinlich ...

            ilovegym arteck 2 Replies Last reply Reply Quote 0
            • ilovegym
              ilovegym @drloksoft last edited by

              @drloksoft

              nutz doch einfach die Suchfunktion im Script-Adapter nach Datenpunkten

              1 Reply Last reply Reply Quote 2
              • arteck
                arteck Developer Most Active @drloksoft last edited by

                @drloksoft https://github.com/joBr99/nspanel-lovelace-ui/blob/fb841abf45124ee88d1008b63ee458a70b58a4d4/ioBroker/NsPanelTs.ts#L938

                D 1 Reply Last reply Reply Quote 2
                • D
                  drloksoft @arteck last edited by

                  @arteck @ilovegym - danke für die schnelle Antwort!
                  Hier genau ist meinProblem 🙂

                  Dummerweise finde ich die Datenpunkte nicht im Script ...

                  //-------DE: Anfang Einstellungen für Hardware Button, wenn Sie softwareseitig genutzt werden (Rule2) -------------
                  //-------EN: Start Settings for Hardware Button, if used in software (Rule2) --------------------------------------
                  // DE: Konfiguration des linken Schalters des NSPanels
                  // EN: Configuration of the left switch of the NSPanel
                  button1: {
                      // DE: Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
                      // EN: Possible values if Rule2 defined: 'page', 'toggle', 'set' - If not defined --> mode: null
                      mode: null,
                      // DE: Zielpage - Verwendet wenn mode = page
                      // EN: Target page - Used if mode = page
                      page: null,
                      // DE: Zielentity - Verwendet wenn mode = set oder toggle
                      // EN: Target entity - Used if mode = set or toggle
                      entity: null,
                      // DE: Zielwert - Verwendet wenn mode = set
                      // EN: Target value - Used if mode = set
                      setValue: null
                  },
                  
                  // DE: Konfiguration des rechten Schalters des NSPanels
                  // EN: Configuration of the right switch of the NSPanel
                  button2: {
                      mode: null,
                      page: null,
                      entity: null,
                      setValue: null
                  },
                  D 1 Reply Last reply Reply Quote 0
                  • D
                    drloksoft @drloksoft last edited by

                    AH!
                    Ich glaube ich habs!
                    Ich lausche den MQTT Events in einem anderen Script:

                    on({ id: 'mqtt.0.NSPANEL_REY.tele.RESULT', change: 'any' }, (obj) => {
                    const val = obj?.state?.val;
                    if (typeof val !== 'string' || !val.includes('CustomRecv')) return;

                    try {
                        const payload = JSON.parse(val);
                        const event = payload?.CustomRecv;
                    
                        // === BUTTON 1 ===
                        if (event === 'event,button1') {
                            const dp = 'alias.0.NSPanel.wohnzimmer.WledRey.ON';
                            const current = getState(dp)?.val;
                            const newVal = !current;
                            setState(dp, newVal);
                    
                            if (newVal === true) {
                                setState('wled.0.781c3ca4b32c.seg.0.bri', 128);
                                setState('wled.0.781c3ca4b32c.seg.0.col.0', [255, 255, 255, 0]);
                                setState('wled.0.781c3ca4b32c.seg.0.cct', 50);
                            }
                        }
                    
                        // === BUTTON 2 ===
                        else if (event === 'event,button2') {
                            const dp = 'nanoleaf-lightpanels.1.LightPanels.state';
                            const current = getState(dp)?.val;
                            const newVal = !current;
                            setState(dp, newVal);
                    
                            if (newVal === true) {
                                setState('nanoleaf-lightpanels.1.LightPanels.brightness', 100);
                            }
                        }
                    
                    } catch (err) {
                        log('Fehler beim Parsen von CustomRecv: ' + err.message, 'warn');
                    }
                    

                    });

                    D 1 Reply Last reply Reply Quote 0
                    • D
                      drloksoft @drloksoft last edited by

                      Eine Frage habe ich noch ...
                      Gibt es ein "best practice", um das Script mit wenig Aufwand auf seine aktuelle Version zu bringen? Ich würde gerne die cartThermo2 nutzen. Einfach den Bereich " DE: Ab hier keine Konfiguration mehr" austauschen?

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        ticaki Developer @drloksoft last edited by

                        @drloksoft
                        Jo - ich hab das so oft gemach das ich nach no more suche und alles ab da tausche.

                        D 1 Reply Last reply Reply Quote 1
                        • D
                          drloksoft @ticaki last edited by

                          @ticaki top, danke!

                          1 Reply Last reply Reply Quote 1
                          • T
                            Toysman last edited by Toysman

                            Hallo zusammen,
                            hallo @Armilar

                            ich habe die Config mal auf "Pirate-Weather" umgestellt, bekomme aber z.T. keine sinnvollen bzw. keine Werte angezeigt.

                            Die Datenpunkte unter

                            const weatherEntityPath: string = 'alias.0.Pirate-Wetter';
                            

                            werden nicht geschrieben, obwohl unter

                            const autoCreateAlias = true;
                            

                            der richtige Wert gesetzt ist.

                            Würde mich freuen, wenn ich einen hilfreichen Tip erhalte...

                            Danke & Gruß

                            /***********************************************************************
                                 **                                                                   **
                                 **                    Screensaver Configuration                      **
                                 **                                                                   **
                                 ***********************************************************************/
                                leftScreensaverEntity: [
                                    // Examples for Advanced-Screensaver: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400 
                                ],    
                                bottomScreensaverEntity: [
                                    // bottomScreensaverEntity 1
                                    {
                                        ScreensaverEntity: 'pirate-weather.0.weather.daily.00.sunsetTime',
                                        ScreensaverEntityFactor: 1,
                                        ScreensaverEntityDecimalPlaces: 0,
                                        ScreensaverEntityDateFormat: {hour: '2-digit', minute: '2-digit'}, // Description at Wiki-Pages
                                        ScreensaverEntityIconOn: 'weather-sunset-down',
                                        ScreensaverEntityIconOff: null,
                                        ScreensaverEntityText: 'Sonne',
                                        ScreensaverEntityUnitText: '%',
                                        ScreensaverEntityIconColor: MSYellow //{'val_min': 0, 'val_max': 100}
                                    },
                                    // bottomScreensaverEntity 2
                                    {
                                        ScreensaverEntity: 'pirate-weather.0.weather.currently.windSpeed',
                                        ScreensaverEntityFactor: (1000 / 3600),
                                        ScreensaverEntityDecimalPlaces: 1,
                                        ScreensaverEntityIconOn: 'weather-windy',
                                        ScreensaverEntityIconOff: null,
                                        ScreensaverEntityText: "Wind",
                                        ScreensaverEntityUnitText: 'km/h',
                                        ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 120}
                                    },
                                    // bottomScreensaverEntity 3
                                    {
                                        ScreensaverEntity: 'pirate-weather.0.weather.currently.windGust',
                                        ScreensaverEntityFactor: (1000 / 3600),
                                        ScreensaverEntityDecimalPlaces: 1,
                                        ScreensaverEntityIconOn: 'weather-tornado',
                                        ScreensaverEntityIconOff: null,
                                        ScreensaverEntityText: 'Böen',
                                        ScreensaverEntityUnitText: 'km/h',
                                        ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 120}
                                    },
                                    // bottomScreensaverEntity 4
                                    {
                                        ScreensaverEntity: 'pirate-weather.0.weather.currently.windBearingText',
                                        ScreensaverEntityFactor: 1,
                                        ScreensaverEntityDecimalPlaces: 0,
                                        ScreensaverEntityIconOn: 'windsock',
                                        ScreensaverEntityIconOff: null,
                                        ScreensaverEntityText: 'Windr.',
                                        ScreensaverEntityUnitText: '°',
                                        ScreensaverEntityIconColor: White
                                    },
                                    // bottomScreensaverEntity 5 (for Alternative and Advanced Screensaver)
                                    {
                                        ScreensaverEntity: 'pirate-weather.0.weather.currently.humidity',
                                        ScreensaverEntityFactor: 1,
                                        ScreensaverEntityDecimalPlaces: 1,
                                        ScreensaverEntityIconOn: 'water-percent',
                                        ScreensaverEntityIconOff: null,
                                        ScreensaverEntityText: 'Feuchte',
                                        ScreensaverEntityUnitText: '%',
                                        ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65}
                                    },
                                    // bottomScreensaverEntity 6 (for Advanced Screensaver)
                                    {
                                        ScreensaverEntity: NSPanel_Path + 'Relay.1',
                                        ScreensaverEntityIconOn: 'coach-lamp-variant',
                                        ScreensaverEntityText: 'Street',
                                        ScreensaverEntityOnColor: Yellow,
                                        ScreensaverEntityOffColor: White,
                                        ScreensaverEntityOnText: 'Is ON',
                                        ScreensaverEntityOffText: 'Not ON'
                                    },        
                            	// Examples for Advanced-Screensaver: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400 
                                ],
                            
                                indicatorScreensaverEntity: [
                                    // Examples for Advanced-Screensaver: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400 
                                ],
                            
                                // Status Icon 
                                mrIcon1ScreensaverEntity: {
                                    ScreensaverEntity: NSPanel_Path + 'Relay.1',
                                    ScreensaverEntityIconOn: 'lightbulb',
                                    ScreensaverEntityIconOff: null,
                                    ScreensaverEntityValue: null,
                                    ScreensaverEntityValueDecimalPlace: 0,
                                    ScreensaverEntityValueUnit: null,
                                    ScreensaverEntityOnColor: On,
                                    ScreensaverEntityOffColor: HMIOff
                                },
                                mrIcon2ScreensaverEntity: {
                                    ScreensaverEntity: NSPanel_Path + 'Relay.2',
                                    ScreensaverEntityIconOn: 'lightbulb',
                                    ScreensaverEntityIconOff: null,
                                    ScreensaverEntityValue: null,
                                    ScreensaverEntityValueDecimalPlace: 0,
                                    ScreensaverEntityValueUnit: null,
                                    ScreensaverEntityOnColor: On,
                                    ScreensaverEntityOffColor: HMIOff
                                },
                                // ------ DE: Ende der Screensaver Einstellungen --------------------
                                // ------ EN: End of screensaver settings ---------------------------
                            
                            

                            359EC206-61EC-4E4A-9BCC-D4EE09B77F3C_1_201_a.jpeg

                            90F40E11-2337-48A7-A086-A65BA23648DA_1_201_a.jpeg

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

                              @toysman

                              der autoCreateAlias dürfte da keinen Einfluss haben... Der kommt nur bei speziellen Cards zum Einsatz...

                              Um den Forecast und das aktuelle Wetter zu nutzen, solltest du deine Config so wie hier anpassen:

                              /***** 3. Weather adapter Config *****/
                              
                                  // DE: Mögliche Wetteradapter 'accuweather.0.' oder 'daswetter.0.' oder 'openweathermap.0.' oder 'pirate-weather.0.'
                                  // EN: Possible weather adapters 'accuweather.0.' or 'daswetter.0.' or 'openweathermap.0. or 'pirate-weather.0.'
                                  const weatherAdapterInstance: string = 'pirate-weather.0.';
                                  
                                  // DE: Mögliche Werte: 'Min', 'Max' oder 'MinMax' im Screensaver
                                  // EN: Possible values: 'Min', 'Max' or 'MinMax' in the screensaver
                                  const weatherScreensaverTempMinMax: string = 'MinMax';
                              
                                  // DE: Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden
                                  // EN: This alias is automatically created for the selected weather and can be adjusted accordingly
                                  const weatherEntityPath: string = 'alias.0.PWWetter';
                              

                              Der Wetter-Alias wird automatisch angelegt, sofern er nicht vorhanden ist... Deshalb steht da auch PWWetter (kann man natürlich auch anders nennen)

                              Das Script verfolgt immer nur einen bevorzugten Wetteradapter und der muss in

                              const weatherAdapterInstance: string = 'pirate-weather.0.';

                              eingetragen sein...

                              Bei sunsetTime kann es durchaus sein, dass die Date-Formatierung nicht durchgeht... Ansonsten im Alias per Formatierung auf einen Uhrzeit-String zurückgreifen...

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                Toysman @Armilar last edited by

                                @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                                Das Script verfolgt immer nur einen bevorzugten Wetteradapter und der muss in

                                const weatherAdapterInstance: string = 'pirate-weather.0.';

                                da fehlte tatsächloch der letzte "Punkt"

                                eingetragen sein...

                                Bei sunsetTime kann es durchaus sein, dass die Date-Formatierung nicht durchgeht... Ansonsten im Alias per Formatierung auf einen Uhrzeit-String zurückgreifen...

                                In dem Alias wird kein DP für sunset angelegt und der Wert von Pirate-Weather wird in Millisekunden in die Objekte geschrieben.

                                Bildschirmfoto 2025-08-16 um 18.35.02.png

                                Wie wandel ich das denn um? Sorry, aber so tief stecke ich das nicht drin 😧

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

                                  @toysman

                                  32ad5ac9-2193-4934-8e70-270bc4ef009e-image.png

                                  ohne Sekunden:

                                  (new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' })
                                  

                                  mit Sekunden

                                  (new Date(val)).toLocaleTimeString('de')
                                  

                                  oder als String

                                  String((new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' }))
                                  
                                  T 1 Reply Last reply Reply Quote 1
                                  • T
                                    Toysman @Armilar last edited by

                                    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                                    (new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' })

                                    Danke für Deine Unterstützung - wo füge ich den den oben stehenden Wert ohne Sekunden ein?

                                    Wenn ich ihn in der Screensaver Configuration unter

                                    ScreensaverEntityDateFormat: (new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' }) 
                                    

                                    einfüge, erhalte ich Fehlermeldungen... bin etwas hilflos 🙄

                                    T Armilar 2 Replies Last reply Reply Quote 0
                                    • T
                                      ticaki Developer @Toysman last edited by ticaki

                                      @toysman
                                      Im Alias der die Daten bereitstellt auf den Stift klicken rechts
                                      Bildschirmfoto 2025-08-17 um 10.28.13.png
                                      und dort da:
                                      Bildschirmfoto 2025-08-17 um 10.27.24.png
                                      bei Konverter beim lesen

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

                                        @toysman

                                        Du erstellst dir einen Alias vom Typ info:

                                        bb364426-0bb7-405b-8e0b-f582206293e5-image.png

                                        Klickst hinten beim ACTUAL auf das fx

                                        und trägst dort

                                        String((new Date(val)).toLocaleTimeString('de', { hour: '2-digit', minute: '2-digit' }))
                                        

                                        54c3d8fc-70ac-4a3c-89a8-2dc0bf4aef8c-image.png

                                        ein

                                        okay und speichern...

                                        // bottomScreensaverEntity 1
                                                    {
                                                        ScreensaverEntity: 'alias.0.NSPanel.EMU.Sunset.ACTUAL',
                                                        ScreensaverEntityFactor: 1,
                                                        ScreensaverEntityDecimalPlaces: 0,
                                                        ScreensaverEntityDateFormat: { hour: '2-digit', minute: '2-digit' },
                                                        ScreensaverEntityIconOn: 'weather-sunset-down',
                                                        ScreensaverEntityIconOff: null,
                                                        ScreensaverEntityText: 'Sonne',
                                                        ScreensaverEntityIconColor: MSYellow
                                                    },
                                        

                                        Und jetzt der Sonnenuntergang vom Pirate-Weather Adapter korrekt im Screensaver:
                                        bb74aadf-3065-443a-a951-4f559b8e9ab9-image.png

                                        EDIT: Habe den bottomScreensaverEntity nochmal editiert...

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          Toysman @ticaki last edited by Toysman

                                          @ticaki
                                          @Armilar

                                          Dank eurer Hilfe funktioniert es jetzt 🙂

                                          ABER die Wettervorhersage ist noch komplett leer....

                                          2732f122-282a-43de-aff7-42488b1dd10e-grafik.png

                                          Da stand unter Sccuweather immer der Forecast für die nächsten Tage.

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

                                            @toysman

                                            f0ea91fa-8327-472f-85ce-de4ba3fd1b0f-image.png

                                            Kommt alles aus dem Skript-Part:

                                            /***** 3. Weather adapter Config *****/
                                            
                                                // DE: Mögliche Wetteradapter 'accuweather.0.' oder 'daswetter.0.' oder 'openweathermap.0.' oder 'pirate-weather.0.'
                                                // EN: Possible weather adapters 'accuweather.0.' or 'daswetter.0.' or 'openweathermap.0. or 'pirate-weather.0.'
                                                const weatherAdapterInstance: string = 'pirate-weather.0.';
                                                
                                                // DE: Mögliche Werte: 'Min', 'Max' oder 'MinMax' im Screensaver
                                                // EN: Possible values: 'Min', 'Max' or 'MinMax' in the screensaver
                                                const weatherScreensaverTempMinMax: string = 'MinMax';
                                            
                                                // DE: Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden
                                                // EN: This alias is automatically created for the selected weather and can be adjusted accordingly
                                                const weatherEntityPath: string = 'alias.0.PWWetter';
                                            

                                            Das Skript erzeugt dabei einen neuen Wetteralias...

                                            Einfach austauschen Skript starten und dann sollte der Forecast laufen

                                            EDIT:
                                            oder Alternate:
                                            da07842e-c460-4929-bd63-4e301a520c6f-image.png

                                            oder Advanced:
                                            b343e436-de16-40f4-ad9d-6671969a0fe9-image.png

                                            oder Easyview:
                                            05159fab-4fc3-4e2d-b934-ee2cebb83659-image.png

                                            EDIT2: aber das Skript in der Version v4.9.5.1 (unterer Teil) benutzt du, oder? Sonst wird es nicht funktionieren!!!
                                            23ad1c99-f184-49ca-aee3-fc860a5e2077-image.png

                                            T 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            718
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            267
                                            7490
                                            5328307
                                            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