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

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      ronny130286 last edited by ronny130286

      @tom_w @Mercyful-0

      ich habe hier mal noch ein TS für die Reglung:

      const Thermo_Path = '0_userdata.0.Thermostat.Raum1.';           //Thermo Pfad der je nach raum neu angelegt wird
      const NSPanel_Path = '0_userdata.0.NSPanel.2.'                  //NSPanel Pfad
      const TargetTemp = Thermo_Path + 'TargetTemp';                  //Datenpunkt für Zieltemperatur
      const OffsetTemp = Thermo_Path + 'OffsetTemp';                  //Offset Temperatur, beim erstellen wir 1°C eingestellt
      const Relay = NSPanel_Path + 'Relay.1' ;                        //Relay was geschalten werden soll, NSPanel_Path + 'Relay.1' oder NSPanel_Path + 'Relay.2' sein oder extra Datenpunkt Thermo_Path + 'Relay'
      const RoomTemp = NSPanel_Path + 'Sensor.ANALOG.Temperature';    //Raumtemperaturwert, kann NSPanel_Path + 'Sensor.ANALOG.Temperature' oder ein ander Datenpunkt sein
      const DEBUG = false;
      
      
      async function create_Stats(){
          if(existsObject(TargetTemp) == false){
               await createStateAsync(TargetTemp, 0, <iobJS.StateCommon>{ type: 'number', 'unit': '°C' });
          }
          if(existsObject(OffsetTemp) == false){
               await createStateAsync(OffsetTemp, 1, <iobJS.StateCommon>{ type: 'number', 'unit': '°C' });
          }
          if(existsObject(Relay) == false){
               await createStateAsync(Relay, false, { type: 'boolean'});
          }
      }
      create_Stats();
      
      on({id: RoomTemp, change: "ne"}, async function (obj) {
          try {
      
              if((getState(TargetTemp).val - getState(OffsetTemp).val) >= getState(RoomTemp).val){
                  setStateAsync(Relay,true);
                  if(DEBUG){
                      console.log("Relay on")
                  }
              }else if((getState(TargetTemp).val + getState(OffsetTemp).val) <= getState(RoomTemp).val){
                  setStateAsync(Relay,false);
                  if(DEBUG){
                      console.log("Relay off")
                  }
              }else{
                  if(DEBUG){
                      console.log("Relay do nothing")
                  }
              }
          } catch (err) { 
              console.warn('Error to set Relay ' + err.message); 
          }
      });
      

      Hinweis: wenn du die Tasmota Sensor Daten nehmen willst musst du wissen das Standard nur alle 5min die Sensordaten übermittelt werden, man kann das mit TelePeriod über die Tasmota-Konsole einstellen (minimal 10Sek)

      1 Reply Last reply Reply Quote 1
      • M
        Mercyful 0 last edited by

        @ronny130286
        Vielen Dank! Das Script läuft und macht was es soll.
        Liebe Grüße
        Mercy

        1 Reply Last reply Reply Quote 0
        • M
          Mercyful 0 @Tom_W last edited by

          @tom_w said in SONOFF NSPanel mit Lovelace UI:

          @mercyful-0

          Ich habs nochmal neu rein kopiert, da lief bei copy & paste was schief.

          Ich konnte es importieren.
          Ich habe Fragen zu den Datenpunkten:
          Welchen Typ hat 'alias.0.Wohnzimmer.Temperatur Wohnzimmer' und womit wird dieser verbunden?
          Woher bekommst Du die Informationen von 'Wert' (beim ersten aktualisiere 0_userdata...)?
          Der Datenpunkt 'alias.0.Wohnzimmer.Erreichbar Multisensor Wohnzimmer' ist sicherlich ein Boolscher der prüft ob ein anderer Sensor erreichbar ist?
          Was ist das für ein Datenpunkt '0_userdata.0.NSPanel.1.Eigene.Modi.AUTOMATIC' und welche Werte kann dieser annehmen?
          Danke für die Info!
          Liebe Grüße
          Mercy

          T D 2 Replies Last reply Reply Quote 0
          • Armilar
            Armilar Most Active Forum Testing last edited by

            @mercyful-0

            https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-ALIAS-Definitionen#thermostat---cardthermo---channel-thermostat

            Ihr seid ja schon fertig. Tolle Skripte...

            1 Reply Last reply Reply Quote 0
            • T
              Tom_W @Mercyful 0 last edited by Tom_W

              @mercyful-0 sagte in SONOFF NSPanel mit Lovelace UI:

              Welchen Typ hat 'alias.0.Wohnzimmer.Temperatur Wohnzimmer' und womit wird dieser verbunden?

              Temperatur Wohnzimmer ist die Temperatur eines Batteriebetriebenen Temperatursensors

              Woher bekommst Du die Informationen von 'Wert' (beim ersten aktualisiere 0_userdata...)?

              In 'Wert' steht ja der Wert des Triggerereignisses. Der erste Trigger macht nichts anderes, als wenn sich der interne Temperaturwert des NS Panel ändert uu diesem 'Wert' ein Offset zu addieren und in einen neuen Wert zu schreiben.
              Das mache ich, da der interne Temperaturfühler bei mir einfach zu weit vom tatsächlichen entfernt ist.

              Der Datenpunkt 'alias.0.Wohnzimmer.Erreichbar Multisensor Wohnzimmer' ist sicherlich ein Boolscher der prüft ob ein anderer Sensor erreichbar ist?

              Richtig, das ist ein boolscher Wert der genau das von dir angegebene macht. Ist der Sensor (wieder mein Batteriebetriebener Temperatursensor) erreichbar, schreibe ich diesen Wert in einen Datenpunkt, ist er nicht erreichbar, dann den errechneten des NSPanel Sensors.
              Das alles macht der zweite Triggerblock

              Was ist das für ein Datenpunkt '0_userdata.0.NSPanel.1.Eigene.Modi.AUTOMATIC' und welche Werte kann dieser annehmen?

              Das ist ein boolscher Wert, ist der false ist die Heizung aus (4. Triggerblock) oder true, dann ist die Heizungsregelung aktiv.
              Also genau der Wert den du mit deiner Hardwaretaste umschalten musst.

              Gruß

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

                @mercyful-0 es gibt aber auch einen heat-manager-adapter der genau diese Regelung macht und dabei sogar alle anderen Annehmlichkeiten einer modernen Heizungssteuerung hat (Heizperioden/Partymodus/Urlaubsmodus). Dann braucht es nicht zwingend ein Blocky.

                R 1 Reply Last reply Reply Quote 0
                • R
                  ronny130286 @DaPeace last edited by

                  @dapeace

                  Den Adapter hatte ich mir damals auch angesehen, ich fand ihn aber für ne FBH mit Erdwärmepumpe, einfach zu umfangreich.
                  Da hilft auch das einfache Skript, weil viele Sachen die der Adapter mitbringt nicht benötigt werden.
                  Bspw. die FBH ist viel zu träge um auf ein offenes Fenster zu reagieren, Party/Urlaubsmodus wir in der Heizung eingestellt => Heizungsadapter (Nibe, Wolf etc.)

                  1 Reply Last reply Reply Quote 0
                  • O
                    Oliver Feld last edited by

                    Hallo,

                    brauche mal eure Hilfe:
                    Ich bin Anfänger und habe es endlich geschafft das NS Panel einzurichten.

                    Bei dem Screensaver habe ich ein kleine Problem:
                    Bei der Windgeschwindigkeit wird mir der Wert in m/s umgerechnet angezeigt. Auch wenn im Skript km/h ausgewählt ist. Vom accuwether Adapter wird in den Objekten der Wert in km/h angezeigt.
                    Hat Jemand ein Tip für mich wie der Wert in Km/h angezeigt wird?

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

                      @oliver-feld

                      secondScreensaverEntity:  { ScreensaverEntity: 'accuweather.0.Current.WindSpeed', 
                                                      ScreensaverEntityFactor: 1,                       //New
                                                      ScreensaverEntityDecimalPlaces: 1,                          //New Anzahl Kommastellen
                                                      ScreensaverEntityIcon: 'weather-windy', 
                                                      ScreensaverEntityText: "Wind", 
                                                      ScreensaverEntityUnitText: 'km/h', 
                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35} // val_max anpassen, ab wann Icon Rot sein soll
                                                    },
                      
                      R 1 Reply Last reply Reply Quote 0
                      • R
                        ronny130286 @TT-Tom last edited by ronny130286

                        @TT-Tom @oliver-feld

                        du musst dann aber auch die min max anpassen, weil mit max 35km/h kann man wenig anfangen 😉

                        ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35}
                        

                        @Armilar
                        Heute wurde Tasmota 1.2.4.0 released => das Panel zeigt die Popupmessage auch an aber drückt man auf ja wird wird das update nicht getriggert auch im Debugmodus sieht man das die Funktion für das Update nicht gestartet wird . Ist das gewollt? Ich war der Meinung das ging schon mal.

                        EDIT: habs gefunden => manually_Update muss true sein, aber ist das so richtig? Weil es ist ein manuelles Update, wenn ich noch die Wahl zwischen ja und nein habe und es mit Ja betätige, müsste er doch trotzdem ein Update machen oder nicht?

                        on({ id: NSPanel_Path + 'popupNotify.popupNotifyAction', change: 'any' }, async function (obj) {
                            try {
                                const val = obj.state ? obj.state.val : false;
                                if (!val) {
                                    manually_Update = false;
                                    if (Debug) {
                                        console.log('Es wurde Button1 gedrückt');
                                    }
                                } else if (val) {
                                    
                                    if (manually_Update) { => Entfernen?
                                        const internalName = getState(NSPanel_Path + 'popupNotify.popupNotifyInternalName').val;
                        
                                        if (internalName == 'TasmotaFirmwareUpdate') {
                                            update_tasmota_firmware();
                                        } else if (internalName == 'BerryDriverUpdate') {
                                            update_berry_driver_version();
                                        } else if (internalName == 'TFTFirmwareUpdate') {
                                            update_tft_firmware();
                                        }
                                    }
                                    if (Debug) {
                                        console.log('Es wurde Button2 gedrückt');
                                    }
                                }
                            } catch (err) {
                                console.warn('Trigger popupNotifyAction: ' + err.message);
                            }
                        });
                        

                        @Armilar
                        EDIT2:
                        Ich hab jetzt das manuelly_Update mal komplett aus dem Skript entfernt und prüfen einfach nur im im internalName das Word Update steht.

                        on({ id: NSPanel_Path + 'popupNotify.popupNotifyAction', change: 'any' }, async function (obj) {
                            try {
                                const val = obj.state ? obj.state.val : false;
                                if (!val) {
                                    if (Debug) {
                                        console.log('Es wurde Button1 gedrückt');
                                    }
                                } else if (val) {
                                    
                                    const internalName: string = getState(NSPanel_Path + 'popupNotify.popupNotifyInternalName').val;
                                    if (internalName.includes('Update')) {
                                        if (internalName == 'TasmotaFirmwareUpdate') {
                                            update_tasmota_firmware();
                                        } else if (internalName == 'BerryDriverUpdate') {
                                            update_berry_driver_version();
                                        } else if (internalName == 'TFTFirmwareUpdate') {
                                            update_tft_firmware();
                                        }
                                    }
                                    if (Debug) {
                                        console.log('Es wurde Button2 gedrückt');
                                    }
                                }
                            } catch (err) {
                                console.warn('Trigger popupNotifyAction: ' + err.message);
                            }
                        });
                        
                        O Armilar 2 Replies Last reply Reply Quote 1
                        • O
                          Oliver Feld @ronny130286 last edited by

                          @ronny130286
                          So sieht es bei mir aus, müsste doch passen oder?

                          secondScreensaverEntity:  { ScreensaverEntity: 'accuweather.0.Current.WindSpeed', 
                                                          ScreensaverEntityFactor: (1000/3600),                       //New
                                                          ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                          ScreensaverEntityIcon: 'weather-windy', 
                                                          ScreensaverEntityText: "Wind", 
                                                          ScreensaverEntityUnitText: 'Km/h', 
                                                          ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 90}
                          

                          IMG_4144.jpeg

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            ronny130286 @Oliver Feld last edited by ronny130286

                            @oliver-feld

                             ScreensaverEntityFactor: (1000/3600),                       //New
                            

                            Das muss auf 1 stehen nicht auf 1000/3600 => das wäre die Umrechnung in m/s

                             ScreensaverEntityFactor: 1,                       //New
                            
                            O 1 Reply Last reply Reply Quote 0
                            • O
                              Oliver Feld @ronny130286 last edited by

                              @ronny130286
                              Danke! Das wars 🙂

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

                                @ronny130286

                                Hab es schon bemerkt. Das muss eigentlich auch gar nicht mehr eingeblendet werden, da die Funktionen auch über das Servicemenü ermöglicht werden.

                                R 1 Reply Last reply Reply Quote 0
                                • R
                                  ronny130286 @Armilar last edited by

                                  @armilar
                                  Also das es angezeigt wird finde ich gut, da man ansonsten keinerlei Hinweis hat das es ein Update gibt, aber er sollte dann auch updaten wenn man ja drückt 😉
                                  Ich hab die Funktion wie oben ersetzt, somit kann man ja nein nutzen und zusätzlich kann man es auch im Servicemenu updaten, sofern man Autoupdate aus lässt.

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

                                    @ronny130286

                                    werde es nachher mal kurz übernehmen

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

                                      @armilar
                                      Hi,
                                      hat einen Moment gedauert mich in die Struktur des TypeScripts einzuarbeiten aber langsam komme ich voran.
                                      Ich habe eine erste Variante mit Squeezeboxrpc Unterstützung die bei mir soweit ganz gut funktioniert. Man kann die Speaker wechseln, die Favoriten Playlists auswählen, autoCreateAlias funktioniert, etc.
                                      Das war bisher nicht möglich.
                                      Allerdings musste ich für die Auswahl der Speaker leider recht große Anpassungen machen, da die Struktur einfach so verschieden ist zu den anderen Adaptern.

                                      Hier der letzte große Commit in meinem Branch im Fork Repo:
                                      https://github.com/bembelstemmer/nspanel-lovelace-ui/commit/5a2a95a7f7d0d6aa70589550484b6e423bba6c71
                                      Wenn du willst, kannst du gerne mal drüber schauen. Wollte nicht einfach nen Pull-Request aufmachen, da das schon ne größere Anpassung ist und ich nicht sicher bin ob das so alles ins Konzept passt.
                                      Zudem kann ich nicht testen ob ich die anderen Media Adapter vielleicht kaputt gemacht habe 🙈

                                      Also gerne Kommentare oder so wie ich am besten vorgehen soll.

                                      VG

                                      0 bembelstemmer committed to bembelstemmer/nspanel-lovelace-ui
                                      Basic Implementation of Squeezeboxrpc Speaker switching and also using Favorite Playlists
                                      Armilar 2 Replies Last reply Reply Quote 1
                                      • Armilar
                                        Armilar Most Active Forum Testing @bembelstemmer last edited by

                                        @bembelstemmer

                                        Top, bekommen wir schon alle unter einen Hut. Ich teste übers Wochenende mal die anderen Adapter.

                                        1 Reply Last reply Reply Quote 0
                                        • O
                                          Oliver Feld last edited by

                                          Ich hänge beim Wlan QR-Code fest...

                                          Ich habe folgendes im Skript:

                                          let Test_WLAN = <PageQR> 
                                          {
                                              "type": "cardQR",
                                              "heading": "Deine Überschrift",
                                              "useColor": true,
                                              "subPage": false,
                                              "parent": undefined,
                                              "items": [<PageItem>{ id: "alias.0.NSPanel_1.Guest_Wifi" }] // Beispiel
                                          };
                                          

                                          Wenn ich diese Seite jetzt als erste Position bei den Seiten eintrage startet das Panel nicht (warten auf content).

                                          Wenn ich diese Seite auf Position 2 setzte ruft er die Seite nicht auf.

                                          Folgende Fehlermeldung kommen:

                                          09:56:38.070	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: Object "alias.0.NSPanel_1.Guest_Wifi" does not exist
                                          09:56:38.073	warn	javascript.0 (970) at GenerateQRPage (script.js.NSPanels.NSPanel_Wohnzimmer:5302:67)
                                          09:56:38.073	warn	javascript.0 (970) at GeneratePage (script.js.NSPanels.NSPanel_Wohnzimmer:3495:29)
                                          09:56:38.073	warn	javascript.0 (970) at HandleMessage (script.js.NSPanels.NSPanel_Wohnzimmer:3416:21)
                                          09:56:38.074	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3357:25)
                                          09:56:38.074	warn	javascript.0 (970) at step (script.js.NSPanels.NSPanel_Wohnzimmer:33:23)
                                          09:56:38.074	warn	javascript.0 (970) at Object.next (script.js.NSPanels.NSPanel_Wohnzimmer:14:53)
                                          09:56:38.074	warn	javascript.0 (970) at script.js.NSPanels.NSPanel_Wohnzimmer:8:71
                                          09:56:38.075	warn	javascript.0 (970) at __awaiter (script.js.NSPanels.NSPanel_Wohnzimmer:4:12)
                                          09:56:38.075	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3349:12)
                                          09:56:38.076	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function GenerateQRPage: Cannot read properties of null (reading 'split')
                                          09:56:38.077	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function SendToPanel: Cannot read properties of undefined (reading 'payload')
                                          

                                          Gruß Olli

                                          Armilar T 2 Replies Last reply Reply Quote 0
                                          • Armilar
                                            Armilar Most Active Forum Testing @Oliver Feld last edited by

                                            @oliver-feld

                                            In der ersten Zeile der Warnungen steht bereits die Lösung 😉

                                            Der Alias aus dem PageItem existiert nicht...

                                            https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker---FAQ-&-Anleitungen#5-qr-code-page

                                            O 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            693
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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