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.
    • 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' }))
                        
                        1 Reply Last reply Reply Quote 1
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        522
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        lovelace ui nspanel sonoff
                        267
                        7480
                        5316963
                        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