Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. SONOFF NSPanel mit Lovelace UI

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

SONOFF NSPanel mit Lovelace UI

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
7.8k Beiträge 272 Kommentatoren 6.7m Aufrufe 254 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Tom_W

    @mercyful-0

    Hier mal mein Blockly, welches genau das macht was du erreichen willst. Ich mache es zwar nicht wie du mit dem tastet (da dort meine Kids des öfteren hindrücken würden und ich nicht merke dass die Heizung aus ist) sondern mit einem Button auf der Thermopage, aber vom Prinzip her müsste es verständlich werden. Du brauchst für das "Ein / Aus" der Heizung einen extra Datenpunkt den du schaltest. Der wird dann in deinem Skript mit eingebaut.

    <xml xmlns="https://developers.google.com/blockly/xml">
      <block type="on_ext" id="R3`G5gEHw1h%w=7y$o(n" x="237" y="-237">
        <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
        <field name="CONDITION">ne</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="~BZD7sur;u._a|Pe@ezj">
            <field name="oid">0_userdata.0.NSPanel.1.Sensor.ANALOG.Temperature</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="update" id="b9iO%[W$*cf5Y5!4#ifD">
            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
            <field name="OID">0_userdata.0.NSPanel.1.Sensor.ANALOG.Temperatur_korrigiert</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="math_arithmetic" id="a@5L2MON#y;j[=5SvJEW">
                <field name="OP">ADD</field>
                <value name="A">
                  <shadow type="math_number" id="sO3+V_/5pzJOZpxJ_mfB">
                    <field name="NUM">1</field>
                  </shadow>
                  <block type="on_source" id="HY+}gnUf`azx0y/^+3zQ">
                    <field name="ATTR">state.val</field>
                  </block>
                </value>
                <value name="B">
                  <shadow type="math_number" id="x.5z5MCi;-z@3OA[f8uy">
                    <field name="NUM">1</field>
                  </shadow>
                  <block type="get_value" id="i^C;5k|)0SJ^mM(9-2o(">
                    <field name="ATTR">val</field>
                    <field name="OID">0_userdata.0.NSPanel.1.Sensor.ANALOG.Offset</field>
                  </block>
                </value>
              </block>
            </value>
          </block>
        </statement>
        <next>
          <block type="on_ext" id="vov=F]}HrWCo~O`PU9zn">
            <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id="%3sI!*_$Lw6arDrZ/16Y">
                <field name="oid">0_userdata.0.NSPanel.1.Sensor.ANALOG.Temperatur_korrigiert</field>
              </shadow>
            </value>
            <value name="OID1">
              <shadow type="field_oid" id="90cj(gOyTRyd9AKfeN?,">
                <field name="oid">alias.0.Wohnzimmer.Temperatur Wohnzimmer</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="controls_if" id="ZO`zh=-~P8B`08DS-f)I">
                <mutation else="1"></mutation>
                <value name="IF0">
                  <block type="logic_compare" id="W3-N*Cy!ow*1G-_D.3lw">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="get_value" id="ATLuk36g7PJ`IHmeiHot">
                        <field name="ATTR">val</field>
                        <field name="OID">alias.0.Wohnzimmer.Erreichbar Multisensor Wohnzimmer</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="logic_boolean" id="~FtTgc]n=}~t0QCUctv:">
                        <field name="BOOL">TRUE</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="update" id="=B3iYMIn.r0Z~s3hhA!U">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">0_userdata.0.NSPanel.1.Sensor.ANALOG.Verwendete_Temperatur</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="get_value" id="^G#)Zwla;,;rK#=,Chy;">
                        <field name="ATTR">val</field>
                        <field name="OID">alias.0.Wohnzimmer.Temperatur Wohnzimmer</field>
                      </block>
                    </value>
                  </block>
                </statement>
                <statement name="ELSE">
                  <block type="update" id="di]o,@l]/B85:LCotX5n">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">0_userdata.0.NSPanel.1.Sensor.ANALOG.Verwendete_Temperatur</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="get_value" id="Bs#[5z|n_FZE:#}hZX?0">
                        <field name="ATTR">val</field>
                        <field name="OID">0_userdata.0.NSPanel.1.Sensor.ANALOG.Temperatur_korrigiert</field>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </statement>
            <next>
              <block type="on_ext" id="6Sno1Vs}R0[!`JG3}p[$">
                <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <value name="OID0">
                  <shadow type="field_oid" id="aV`/[rsPL5L`!9z4kPb:">
                    <field name="oid">0_userdata.0.NSPanel.1.Sensor.ANALOG.Verwendete_Temperatur</field>
                  </shadow>
                </value>
                <statement name="STATEMENT">
                  <block type="controls_if" id="1.j]e]wPFC=N)(y0-%Ys">
                    <value name="IF0">
                      <block type="logic_compare" id="%?w}jp:v/eRll^+t?J;=">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="get_value" id="c*mP?(~9tqo@O^`xiCOt">
                            <field name="ATTR">val</field>
                            <field name="OID">0_userdata.0.NSPanel.1.Eigene.Modi.AUTOMATIC</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_boolean" id="Q,)j`#qI`+6l=S~7Yzrq">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="controls_if" id="B.P-%R26%%^Pa~IIhB,B">
                        <mutation else="1"></mutation>
                        <value name="IF0">
                          <block type="logic_compare" id="tCUH]p|~R2Gij6{]GNKE">
                            <field name="OP">LTE</field>
                            <value name="A">
                              <block type="on_source" id="pv~v_CvM(.OUQmab#}:R">
                                <field name="ATTR">state.val</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="get_value" id="5^Z-ALUStC(BNBt3TDz^">
                                <field name="ATTR">val</field>
                                <field name="OID">0_userdata.0.NSPanel.1.Eigene.SolltemperaturWohnzimmer</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="control" id="xvzY43Ar+47WgqU-)hYc">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">mqtt.0.cmnd.NSPanel_Wohnzimmer.POWER</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id="w8cS!@es].v%.@9WXf/A">
                                <field name="NUM">1</field>
                              </block>
                            </value>
                          </block>
                        </statement>
                        <statement name="ELSE">
                          <block type="control" id="=Dms)Tmk%.,@9.`l}]Q/">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">mqtt.0.cmnd.NSPanel_Wohnzimmer.POWER</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id="C7W-(1hQ*HB@$pg8*j-6">
                                <field name="NUM">0</field>
                              </block>
                            </value>
                          </block>
                        </statement>
                      </block>
                    </statement>
                  </block>
                </statement>
                <next>
                  <block type="on_ext" id="t7m6:/x+}f$5Acz=%)7;">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                    <field name="CONDITION">ne</field>
                    <field name="ACK_CONDITION"></field>
                    <value name="OID0">
                      <shadow type="field_oid" id="%b@$1#|*~)IA_6uEwkbw">
                        <field name="oid">0_userdata.0.NSPanel.1.Eigene.Modi.AUTOMATIC</field>
                      </shadow>
                    </value>
                    <statement name="STATEMENT">
                      <block type="controls_if" id="HXNUdBtmw*yQMd%@[]90">
                        <value name="IF0">
                          <block type="logic_compare" id="1Lj4jX%eS;^`Egu`b7nw">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="on_source" id="p!k5,473^w!`(WGbgEV5">
                                <field name="ATTR">state.val</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="logic_boolean" id="CS~es[me[c1w[y.r=V.d">
                                <field name="BOOL">FALSE</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="control" id=")$ta3c^m=WOaRwdzISOi">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">mqtt.0.cmnd.NSPanel_Wohnzimmer.POWER</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id="Tb#-d/Xh{du~QP#1n,Ye">
                                <field name="NUM">0</field>
                              </block>
                            </value>
                          </block>
                        </statement>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </xml>
    
    M Offline
    M Offline
    Mercyful 0
    schrieb am zuletzt editiert von
    #2243

    @tom_w said in SONOFF NSPanel mit Lovelace UI:

    @mercyful-0

    Hier mal mein Blockly, welches genau das macht was du erreichen willst. Ich mache es zwar nicht wie du mit dem tastet (da dort meine Kids des öfteren hindrücken würden und ich nicht merke dass die Heizung aus ist) sondern mit einem Button auf der Thermopage, aber vom Prinzip her müsste es verständlich werden. Du brauchst für das "Ein / Aus" der Heizung einen extra Datenpunkt den du schaltest. Der wird dann in deinem Skript mit eingebaut.

    Vielen Dank!
    Leider kann ich das nicht importieren, muss ich das noch manuell anpassen?
    Danke und liebe Grüße
    Mercy

    T 1 Antwort Letzte Antwort
    0
    • M Mercyful 0

      @tom_w said in SONOFF NSPanel mit Lovelace UI:

      @mercyful-0

      Hier mal mein Blockly, welches genau das macht was du erreichen willst. Ich mache es zwar nicht wie du mit dem tastet (da dort meine Kids des öfteren hindrücken würden und ich nicht merke dass die Heizung aus ist) sondern mit einem Button auf der Thermopage, aber vom Prinzip her müsste es verständlich werden. Du brauchst für das "Ein / Aus" der Heizung einen extra Datenpunkt den du schaltest. Der wird dann in deinem Skript mit eingebaut.

      Vielen Dank!
      Leider kann ich das nicht importieren, muss ich das noch manuell anpassen?
      Danke und liebe Grüße
      Mercy

      T Offline
      T Offline
      Tom_W
      schrieb am zuletzt editiert von
      #2244

      @mercyful-0

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

      M 1 Antwort Letzte Antwort
      0
      • R Offline
        R Offline
        ronny130286
        schrieb am zuletzt editiert von ronny130286
        #2245

        @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 Antwort Letzte Antwort
        1
        • M Offline
          M Offline
          Mercyful 0
          schrieb am zuletzt editiert von
          #2246

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

          1 Antwort Letzte Antwort
          0
          • T Tom_W

            @mercyful-0

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

            M Offline
            M Offline
            Mercyful 0
            schrieb am zuletzt editiert von
            #2247

            @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 Antworten Letzte Antwort
            0
            • ArmilarA Offline
              ArmilarA Offline
              Armilar
              Most Active Forum Testing
              schrieb am zuletzt editiert von
              #2248

              @mercyful-0

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

              Ihr seid ja schon fertig. Tolle Skripte...

              Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
              https://github.com/joBr99/nspanel-lovelace-ui/wiki

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              1 Antwort Letzte Antwort
              0
              • M Mercyful 0

                @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 Offline
                T Offline
                Tom_W
                schrieb am zuletzt editiert von Tom_W
                #2249

                @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 Antwort Letzte Antwort
                0
                • M Mercyful 0

                  @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

                  D Offline
                  D Offline
                  DaPeace
                  schrieb am zuletzt editiert von
                  #2250

                  @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 Antwort Letzte Antwort
                  0
                  • D DaPeace

                    @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 Offline
                    R Offline
                    ronny130286
                    schrieb am zuletzt editiert von
                    #2251

                    @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 Antwort Letzte Antwort
                    0
                    • O Offline
                      O Offline
                      Oliver Feld
                      schrieb am zuletzt editiert von
                      #2252

                      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 Antwort Letzte Antwort
                      0
                      • O Oliver Feld

                        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 Offline
                        T Offline
                        TT-Tom
                        schrieb am zuletzt editiert von
                        #2253

                        @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
                                                      },
                        

                        Gruß Tom
                        https://github.com/tt-tom17
                        Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                        NSPanel Script Wiki
                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

                        NSPanel Adapter Wiki
                        https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                        R 1 Antwort Letzte Antwort
                        0
                        • T TT-Tom

                          @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 Offline
                          R Offline
                          ronny130286
                          schrieb am zuletzt editiert von ronny130286
                          #2254

                          @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 ArmilarA 2 Antworten Letzte Antwort
                          1
                          • R 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 Offline
                            O Offline
                            Oliver Feld
                            schrieb am zuletzt editiert von
                            #2255

                            @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 Antwort Letzte Antwort
                            0
                            • O Oliver Feld

                              @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 Offline
                              R Offline
                              ronny130286
                              schrieb am zuletzt editiert von ronny130286
                              #2256

                              @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 Antwort Letzte Antwort
                              0
                              • R 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 Offline
                                O Offline
                                Oliver Feld
                                schrieb am zuletzt editiert von
                                #2257

                                @ronny130286
                                Danke! Das wars :-)

                                1 Antwort Letzte Antwort
                                0
                                • R 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);
                                      }
                                  });
                                  
                                  ArmilarA Offline
                                  ArmilarA Offline
                                  Armilar
                                  Most Active Forum Testing
                                  schrieb am zuletzt editiert von
                                  #2258

                                  @ronny130286

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

                                  Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  R 1 Antwort Letzte Antwort
                                  0
                                  • ArmilarA Armilar

                                    @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 Offline
                                    R Offline
                                    ronny130286
                                    schrieb am zuletzt editiert von
                                    #2259

                                    @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.

                                    ArmilarA 1 Antwort Letzte Antwort
                                    1
                                    • R ronny130286

                                      @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.

                                      ArmilarA Offline
                                      ArmilarA Offline
                                      Armilar
                                      Most Active Forum Testing
                                      schrieb am zuletzt editiert von
                                      #2260

                                      @ronny130286

                                      werde es nachher mal kurz übernehmen

                                      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                      https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      1 Antwort Letzte Antwort
                                      0
                                      • ArmilarA Armilar

                                        @bembelstemmer sagte in SONOFF NSPanel mit Lovelace UI:

                                        Wegen der negativen Labels habe ich nochmal mit einem komplett neuen 3.9.0.4 Script gestartet um Fehler von mir auszuschließen und dein Beispiel verwendet.
                                        Der Graph zeigt die Kurve absolut korrekt. Auch die Minus Werte. Nur Labels an der Y-Achse mit 0 oder kleiner fehlen weiterhin.
                                        Über den Debug sehe ich, dass die Werte zumindest so geschickt werden wie eingetragen.

                                        Bitte kurz einen Issue an @fumanchi im Github dazu anlegen. Wenn es korrekt an die HMI übertragen wird, d.h. auch im PageItem korrekt definiert ist, dann ist es ein Verarbeitungsfehler in der Nextion HMI.

                                        Und ich habe noch etwas zur Card Power, da sie ja jetzt nicht mehr flackert. Im Github Wiki zeigt das beispiel noch, dass man "direction" mit "in" oder "out" setzen soll, was aber gar nicht mehr ausgewertet wird im Script.
                                        Dein Hinweis mit den Speeds war super. Habe es dann in der HMI Doku gefunden.
                                        Kann/soll/darf man zum Projekt contributen? Dann könnte ich die Beispiele ggf. aktualisieren und ich würde auch gerne helfen die Squeezeboxrpc Unterstützung zu verbessen falls das nicht bei jemandem schon lokal in der Mache ist.

                                        Liebend gerne :blush:
                                        Gerade die Squeezebocrpc schreibe ich immer ohne das ich sie testen kann (Habe keine Squeezebox). Wäre natürlich Klasse, wenn wir jetzt einen Squeezebox User hätten. Also tobe dich da ruhig aus. Bislang ist da keiner am rumfeilen...

                                        Letzte Frage 🙊
                                        Ich habe sowohl EU als auch US Panels im Einsatz. Wenn ich bei der CardPower den gleichen Datenpunkt verwende, ist die Animation der Punkte beim US Portrait exakt entgegengesetzt zum EU Panel (US Landscape habe ich noch nicht getestet). Beide habe ich nach deinen Hinweisen nochmal jeweils mit der expliziten 3.9.0 geflashed.
                                        Von meinem Verständnis wäre das eher was für's HMI, da der TS/JS Code identisch ist und somit ein Github Issue oder?

                                        Stimmt, den kannst du dann an @joBr99 adressieren.

                                        bembelstemmerB Offline
                                        bembelstemmerB Offline
                                        bembelstemmer
                                        schrieb am zuletzt editiert von
                                        #2261

                                        @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 :see_no_evil:

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

                                        VG

                                        ArmilarA 2 Antworten Letzte Antwort
                                        1
                                        • bembelstemmerB bembelstemmer

                                          @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 :see_no_evil:

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

                                          VG

                                          ArmilarA Offline
                                          ArmilarA Offline
                                          Armilar
                                          Most Active Forum Testing
                                          schrieb am zuletzt editiert von
                                          #2262

                                          @bembelstemmer

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

                                          Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          442

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe