Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  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.1k

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

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

SONOFF NSPanel mit Lovelace UI

Scheduled Pinned Locked Moved Hardware
lovelace uinspanelsonoff
7.7k Posts 271 Posters 6.7m Views 253 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ArmilarA Offline
    ArmilarA Offline
    Armilar
    Most Active Forum Testing
    wrote on last edited by
    #1584

    @watcherkb sagte in SONOFF NSPanel mit Lovelace UI:

    HF

    Ja, genau das habe ich mir gedacht. "Shit in --> shit out". Den Trashschedule kannst du vergessen...

    Ich vermute mal die Stadt, Landkreis, Gemeinde oder was auch immer für so einen iCal zu verklagen bringt nix, oder? 😲

    Es bringt auch nichts, wenn diese Logik durch Trennprozesse läuft, da es auch Ereignisse gibt, die nicht trennbar sind.

    Wenn du einigermaßen voran kommen möchtest, dann nimm dir die wiederkehrenden Events und interpretiere die in der Logik korrekt um:

    Wenn "event": "HF Gelbe Tonne, Blaue Tonne, Altkleider, 4 wöchentlich: Ort"

    • 3 Events mit gleichem "date"
      • Gelbe Tonne
      • Blaue Tonne
      • Altkleider Tonne

    Wenn "event": "HF Biotonne (Grüne Tonne) 2 wöchentlich: Ort"

    • 1 Event mit "date"
      • Grüne Tonne

    Wenn "event": "HF Restabfall (Graue Tonne roter Deckel) 4 wöchentlich: Ort"

    • 1 Event mit "date"
      • Graue Tonne

    Ggfs. gibt es noch weitere Events in der Zukunft. Stelle den Kalender mal auf 150 Tage. Dann kann man erkennen, was da noch unsinnige Strings erfunden wurden.

    Entsprechend sieht dann natürlich jegliche Blockly- oder JS-Script-Logik völlig anders aus, als bisher als Beispiel veröffentlicht.

    Es stehen zur Ansicht max. 4 Events zur Verfügung.

    Ich denke die Farbe rot (63488) ist im Moment dein kleinstes Problem. Aber ja, es gibt auch einen normalen Konverter:
    https://nodtem66.github.io/nextion-hmi-color-convert/index.html

    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 Reply Last reply
    0
    • ArmilarA Offline
      ArmilarA Offline
      Armilar
      Most Active Forum Testing
      wrote on last edited by Armilar
      #1585

      @weisnix27

      Frage: schon mal den Router durchgestartet? Evtl. kann der Router die (ich vermute mal DHCP) Verbindung danach wieder aufbauen.

      Das Panel lässt sich (habe es zumindest so in Erinnerung) in den AP-Mode bringen mit 6 kurzen Klicks auf den rechten Button (vorausgesetzt der wurde über "setOption1 1" nicht deaktiviert)

      Ansonsten Tasmota neu flashen, konfigurieren und Berry neu aufspielen.

      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.

      JLegJ W 2 Replies Last reply
      0
      • ArmilarA Armilar

        @weisnix27

        Frage: schon mal den Router durchgestartet? Evtl. kann der Router die (ich vermute mal DHCP) Verbindung danach wieder aufbauen.

        Das Panel lässt sich (habe es zumindest so in Erinnerung) in den AP-Mode bringen mit 6 kurzen Klicks auf den rechten Button (vorausgesetzt der wurde über "setOption1 1" nicht deaktiviert)

        Ansonsten Tasmota neu flashen, konfigurieren und Berry neu aufspielen.

        JLegJ Offline
        JLegJ Offline
        JLeg
        wrote on last edited by
        #1586

        @armilar
        lange lagen bei mir 2 NSPanel herum, aber bislang hatte mich der doch recht erhebliche Installationsaufwand abgeschreckt. Aber jetzt ist das Ding mit diesem coolen Script doch so universell geworden - da muss ich jetzt dann doch mal ran 😉
        Dabei ist mir allerdings eine Frage unklar geblieben - da "originale" NSPanel stellt ja i.W. einen Thermostaten (klick-klack) per Relais (und wohl dem internen Temp.fühler) bereit.
        Beim Lovelace-NSPanel nun habe ich verstanden, dass die "cardThermo" eine "GUI" für einen existierenden Thermostaten bereitstellt - aber selbst "Themostat spielen" geht nicht - oder habe ich das bloss übersehen?
        Denn bei mir sollen die NSPanels die vorhandenen (klick-klack-)Thermostate ersetzen - müssten also per Relais lokal schalten können...

        ArmilarA 1 Reply Last reply
        0
        • ArmilarA Armilar

          @weisnix27

          Frage: schon mal den Router durchgestartet? Evtl. kann der Router die (ich vermute mal DHCP) Verbindung danach wieder aufbauen.

          Das Panel lässt sich (habe es zumindest so in Erinnerung) in den AP-Mode bringen mit 6 kurzen Klicks auf den rechten Button (vorausgesetzt der wurde über "setOption1 1" nicht deaktiviert)

          Ansonsten Tasmota neu flashen, konfigurieren und Berry neu aufspielen.

          W Offline
          W Offline
          weisnix27
          wrote on last edited by
          #1587

          @armilar Danke Dir, ja Router und WLAN habe ich zurück gesetzt, das Panel war noch via DHCP angebunden.
          AP Mode bekomme ich aber nicht hin, ich mache mich die Tage mal ans neu flashen.

          Vielen Dank.

          1 Reply Last reply
          0
          • ArmilarA Armilar

            @andré-koschnik

            Ist noch nicht beschrieben, aber du benötigst ebenfalls eine "id": 0,

            Beispiel:

            [
              {
                "id": 0,
                "value": 13,
                "unit": "kW",
                "icon": "emoticon-happy-outline",
                "iconColor": 0
              },
              {
                "id": 1,
                "value": 3,
                "unit": "kW",
                "direction": "in",
                "icon": "battery-charging-60",
                "iconColor": 10,
                "speed": -3
              },
              {
                "id": 2,
                "value": 4.7,
                "unit": "kW",
                "direction": "in",
                "icon": "solar-power-variant",
                "iconColor": 3,
                "speed": 2
              },
              {
                "id": 3,
                "value": 4.3,
                "unit": "kW",
                "direction": "in",
                "icon": "wind-turbine",
                "iconColor": 1,
                "speed": 3
              },
              {
                "id": 4,
                "value": 3.4,
                "unit": "kW",
                "direction": "in",
                "icon": "shape",
                "iconColor": 10,
                "speed": 3
              },
              {
                "id": 5,
                "value": 0.1,
                "unit": "kW",
                "direction": "in",
                "icon": "transmission-tower",
                "iconColor": 0,
                "speed": 2
              },
              {
                "id": 6,
                "value": 2.5,
                "unit": "kW",
                "direction": "in",
                "icon": "car",
                "iconColor": 5,
                "speed": 2
              }
            ]
            

            Wenn du das Beispiel in den Datenpunkt kopierst, dann sollte die aber etwas anzeigen...

            C Offline
            C Offline
            carlos
            wrote on last edited by carlos
            #1588

            @armilar
            Das blockly für die CardPower muss ja dann auch angepasst werden, oder ?
            Wie sieht das dann aus?
            Ich kriege das nicht hin, sehe immer nur die konstanten Werte.

            ArmilarA 1 Reply Last reply
            0
            • JLegJ JLeg

              @armilar
              lange lagen bei mir 2 NSPanel herum, aber bislang hatte mich der doch recht erhebliche Installationsaufwand abgeschreckt. Aber jetzt ist das Ding mit diesem coolen Script doch so universell geworden - da muss ich jetzt dann doch mal ran 😉
              Dabei ist mir allerdings eine Frage unklar geblieben - da "originale" NSPanel stellt ja i.W. einen Thermostaten (klick-klack) per Relais (und wohl dem internen Temp.fühler) bereit.
              Beim Lovelace-NSPanel nun habe ich verstanden, dass die "cardThermo" eine "GUI" für einen existierenden Thermostaten bereitstellt - aber selbst "Themostat spielen" geht nicht - oder habe ich das bloss übersehen?
              Denn bei mir sollen die NSPanels die vorhandenen (klick-klack-)Thermostate ersetzen - müssten also per Relais lokal schalten können...

              ArmilarA Offline
              ArmilarA Offline
              Armilar
              Most Active Forum Testing
              wrote on last edited by Armilar
              #1589

              @jleg

              da "originale" NSPanel stellt ja i.W. einen Thermostaten (klick-klack) per Relais (und wohl dem internen Temp.fühler) bereit.

              Eigentlich nicht wirklich, da am hinteren Ausgang nur 2 Ausgänge für die Button-Relays zur Verfügung stehen. Die kann man natürlich auch für Thermostate verwenden, allerdings muss das dann mit externer Logik (z.B. Blockly) verarbeitet werden.

              dass die "cardThermo" eine "GUI" für einen existierenden Thermostaten bereitstellt - aber selbst "Themostat spielen" geht nicht.

              Kann das Original NSPanel aber auch nicht... Ist auch nur eine GUI und die hat in der Temperaturlogik sogar noch Fehler...

              Kommt jetzt darauf an, was wie gesteuert werden soll. Ich sag es mal so - wenn es einen Heizungs-Aktor gibt der gesteuert werden kann, dann hat der minimalistisch einen On/Off mit true/false. Dann kann es natürlich mit dem NSPanel gesteuert werden.

              Am Panel stellst du eine Zieltemperatur (mit eigenem Datenunkt in 0_userdata) ein und kannst auch die interne Temperatur (Die Temperatur wird vom TS-Script in 0_userdata bei Veränderung in einen DP geschrieben) abgreifen:

              5a8d949d-20a2-4ffe-b626-ef0cb343cd7b-image.png

              Mittels eines Blocklys realisiert du nun die Steuerung:

              Wenn Sensor-Temperatur (Raumtemperatur) kleiner der Solltemperatur (Setpoint), dann Heizaktor an.
              Wenn Sensor-Temperatur (Raumtemperatur) größer der Solltemperatur (Setpoint), dann Heizaktor aus.

              Wenn eine Heizung an den Relais (hintere 1-2 Ausgänge) hängt, kannst du das Relais ebenfalls mittels Datenpunkt ansteuern und das Panel als Aktor nutzen.

              42ccc260-87f9-477e-bb70-83d297084e0f-image.png

              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.

              JLegJ 1 Reply Last reply
              0
              • C carlos

                @armilar
                Das blockly für die CardPower muss ja dann auch angepasst werden, oder ?
                Wie sieht das dann aus?
                Ich kriege das nicht hin, sehe immer nur die konstanten Werte.

                ArmilarA Offline
                ArmilarA Offline
                Armilar
                Most Active Forum Testing
                wrote on last edited by Armilar
                #1590

                @carlos

                Ich kriege das nicht hin, sehe immer nur die konstanten Werte.

                Klar, das soll ja deine eigene "Energiebilanz" visualisieren. Es gibt in der Wiki "nur ein Beispiel", wie die Logik aufgebaut sein "kann" um zu zeigen, wie JSON-Objekt zusammengebaut werden muss.

                Um da näher einsteigen zu können müsste hier deine Planung stehen, was denn überhaupt visualisiert werden soll und wie es im Zusammenhang steht...

                Also das NSPanel benötigt ein JSON, dass es sich über einen Alias aus einem Datenpunkt holt. Das JSON muss diese Struktur haben und durch irgendein Blockly (Textbausteine und Werte aus deinen Datenpunkten) zusammengebaut werden:

                [
                  {
                    "id": 0,
                    "value": 13,
                    "unit": "kW",
                    "icon": "emoticon-happy-outline",
                    "iconColor": 0
                  },
                  {
                    "id": 1,
                    "value": 3,
                    "unit": "kW",
                    "direction": "in",
                    "icon": "battery-charging-60",
                    "iconColor": 10,
                    "speed": -3
                  },
                  {
                    "id": 2,
                    "value": 4.7,
                    "unit": "kW",
                    "direction": "in",
                    "icon": "solar-power-variant",
                    "iconColor": 3,
                    "speed": 2
                  },
                  {
                    "id": 3,
                    "value": 4.3,
                    "unit": "kW",
                    "direction": "in",
                    "icon": "wind-turbine",
                    "iconColor": 1,
                    "speed": 3
                  },
                  {
                    "id": 4,
                    "value": 3.4,
                    "unit": "kW",
                    "direction": "in",
                    "icon": "shape",
                    "iconColor": 10,
                    "speed": 3
                  },
                  {
                    "id": 5,
                    "value": 0.1,
                    "unit": "kW",
                    "direction": "in",
                    "icon": "transmission-tower",
                    "iconColor": 0,
                    "speed": 2
                  },
                  {
                    "id": 6,
                    "value": 2.5,
                    "unit": "kW",
                    "direction": "in",
                    "icon": "car",
                    "iconColor": 5,
                    "speed": 2
                  }
                ]
                

                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.

                C 1 Reply Last reply
                0
                • ArmilarA Armilar

                  @carlos

                  Ich kriege das nicht hin, sehe immer nur die konstanten Werte.

                  Klar, das soll ja deine eigene "Energiebilanz" visualisieren. Es gibt in der Wiki "nur ein Beispiel", wie die Logik aufgebaut sein "kann" um zu zeigen, wie JSON-Objekt zusammengebaut werden muss.

                  Um da näher einsteigen zu können müsste hier deine Planung stehen, was denn überhaupt visualisiert werden soll und wie es im Zusammenhang steht...

                  Also das NSPanel benötigt ein JSON, dass es sich über einen Alias aus einem Datenpunkt holt. Das JSON muss diese Struktur haben und durch irgendein Blockly (Textbausteine und Werte aus deinen Datenpunkten) zusammengebaut werden:

                  [
                    {
                      "id": 0,
                      "value": 13,
                      "unit": "kW",
                      "icon": "emoticon-happy-outline",
                      "iconColor": 0
                    },
                    {
                      "id": 1,
                      "value": 3,
                      "unit": "kW",
                      "direction": "in",
                      "icon": "battery-charging-60",
                      "iconColor": 10,
                      "speed": -3
                    },
                    {
                      "id": 2,
                      "value": 4.7,
                      "unit": "kW",
                      "direction": "in",
                      "icon": "solar-power-variant",
                      "iconColor": 3,
                      "speed": 2
                    },
                    {
                      "id": 3,
                      "value": 4.3,
                      "unit": "kW",
                      "direction": "in",
                      "icon": "wind-turbine",
                      "iconColor": 1,
                      "speed": 3
                    },
                    {
                      "id": 4,
                      "value": 3.4,
                      "unit": "kW",
                      "direction": "in",
                      "icon": "shape",
                      "iconColor": 10,
                      "speed": 3
                    },
                    {
                      "id": 5,
                      "value": 0.1,
                      "unit": "kW",
                      "direction": "in",
                      "icon": "transmission-tower",
                      "iconColor": 0,
                      "speed": 2
                    },
                    {
                      "id": 6,
                      "value": 2.5,
                      "unit": "kW",
                      "direction": "in",
                      "icon": "car",
                      "iconColor": 5,
                      "speed": 2
                    }
                  ]
                  
                  C Offline
                  C Offline
                  carlos
                  wrote on last edited by
                  #1591

                  @armilar
                  Also 0_userdata.0.NSPanel.1.Power.PowerCard ist angelegt und der json string ist drin.
                  Beim blockly habe ich den Teil mit den Konstanten rausgenommen und im oberen Teil die Werte von meinem Senec adapter reingenommen.
                  Ganz unten wird dann 0_userdata.0.NSPanel.1.Power.PowerCard mit dem json gesetzt, aber ohne ID 0, da die Schleife ja nur von 1 bis 6 geht.
                  Gruß

                  Hubert

                  ArmilarA 1 Reply Last reply
                  0
                  • C carlos

                    @armilar
                    Also 0_userdata.0.NSPanel.1.Power.PowerCard ist angelegt und der json string ist drin.
                    Beim blockly habe ich den Teil mit den Konstanten rausgenommen und im oberen Teil die Werte von meinem Senec adapter reingenommen.
                    Ganz unten wird dann 0_userdata.0.NSPanel.1.Power.PowerCard mit dem json gesetzt, aber ohne ID 0, da die Schleife ja nur von 1 bis 6 geht.
                    Gruß

                    Hubert

                    ArmilarA Offline
                    ArmilarA Offline
                    Armilar
                    Most Active Forum Testing
                    wrote on last edited by
                    #1592

                    @carlos

                    Die id: 0 muss dem Blockly noch hinzugefügt werden. Die visualisiert den mittleren Balken in der cardPower. Bei den meisten wahrscheinlich immer das gleiche.

                    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.

                    C 1 Reply Last reply
                    0
                    • W Offline
                      W Offline
                      watcherkb
                      wrote on last edited by watcherkb
                      #1593

                      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                      Den Trashschedule kannst du vergessen...

                      nein das würde ich nicht unbedingt sagen. Ich habe das so hinbekommen. Siehe Blockly

                      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                      Ich vermute mal die Stadt, Landkreis, Gemeinde oder was auch immer für so einen iCal zu verklagen bringt nix, oder?

                      ärgert mich auch jedes Jahr aufs Neue. Aber verklagen...hmmm nee lass mal.

                      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                      Ich denke die Farbe rot (63488) ist im Moment dein kleinstes Problem. Aber ja, es gibt auch einen normalen Konverter:
                      https://nodtem66.github.io/nextion-hmi-color-convert/index.html

                      Danke. Damit bin ich mehr als zufrieden. Jetzt ist alles so wie ich das haben wollte.

                      f616c2f8-8936-493c-8e31-2844736b685f-image.png

                      <xml xmlns="https://developers.google.com/blockly/xml">
                        <variables>
                          <variable id="h}CE-n1lS|gRf(0K%./">i</variable>
                          <variable id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</variable>
                          <variable id="bz)nOPh@V8j9EuyGo#tR">Event</variable>
                          <variable id="9^)S?J=tLkC7cUWc-u9w">Color</variable>
                        </variables>
                        <block type="on_ext" id="aFeZac36,?)=rfMg%3T|" x="102" y="-571">
                          <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="GSzQ}epUa))me3m8yyuD">
                              <field name="oid">trashschedule.0.type.json</field>
                            </shadow>
                          </value>
                          <statement name="STATEMENT">
                            <block type="controls_for" id="wduAM(OBPzLJ@bfYAK5%">
                              <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                              <value name="FROM">
                                <shadow type="math_number" id="HK~R2U|xb$U5W+tsHpN">
                                  <field name="NUM">0</field>
                                </shadow>
                              </value>
                              <value name="TO">
                                <shadow type="math_number" id="Ed[L/:1e9-cwxrRaZiIv">
                                  <field name="NUM">3</field>
                                </shadow>
                              </value>
                              <value name="BY">
                                <shadow type="math_number" id="o@5kngFiPpvl5dGo@Q$9">
                                  <field name="NUM">1</field>
                                </shadow>
                              </value>
                              <statement name="DO">
                                <block type="variables_set" id="0T)vK0k8aikvg7mF6XHo">
                                  <field name="VAR" id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</field>
                                  <value name="VALUE">
                                    <block type="get_value" id="1~kG;UHn$nw2zzbfOIT]">
                                      <field name="ATTR">val</field>
                                      <field name="OID">trashschedule.0.type.json</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="control_ex" id="UAu,2OBRJp9~Nzyxouyu">
                                      <field name="TYPE">false</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="OID">
                                        <shadow type="field_oid" id="J_|uu;{e44n5Z-;qE+hP">
                                          <field name="oid">Object ID</field>
                                        </shadow>
                                        <block type="text_join" id="8/|eHqk))j9Po-O*mKe">
                                          <mutation items="3"></mutation>
                                          <value name="ADD0">
                                            <block type="text" id="Zp8GRfdfXujkeM41=PeZ">
                                              <field name="TEXT">0_userdata.0.Abfallkalender.</field>
                                            </block>
                                          </value>
                                          <value name="ADD1">
                                            <block type="math_arithmetic" id="$!!l@[eJ~4Kdb5/Imo.X">
                                              <field name="OP">ADD</field>
                                              <value name="A">
                                                <shadow type="math_number" id="zaU15{yD43xkuY@?)RY(">
                                                  <field name="NUM">1</field>
                                                </shadow>
                                                <block type="variables_get" id="o3pJ(+3KE~Co%u-dy.:W">
                                                  <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <shadow type="math_number" id="_LBb[#z%M$n0~1Y}~8w+">
                                                  <field name="NUM">1</field>
                                                </shadow>
                                              </value>
                                            </block>
                                          </value>
                                          <value name="ADD2">
                                            <block type="text" id="Vt#-b{iDzusQQx]#0%0,">
                                              <field name="TEXT">.date</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <value name="VALUE">
                                        <shadow type="logic_boolean" id="/y1w}eely@o.gl$]#)o=">
                                          <field name="BOOL">TRUE</field>
                                        </shadow>
                                        <block type="text_join" id="Ot@ht^^dx]t.dUS{D-q/">
                                          <mutation items="3"></mutation>
                                          <value name="ADD0">
                                            <block type="text" id="SL}rWlk~qt@@3pdLc214">
                                              <field name="TEXT">in</field>
                                            </block>
                                          </value>
                                          <value name="ADD1">
                                            <block type="get_attr" id="p~0A1{eb$lD~.99R4K)">
                                              <value name="PATH">
                                                <shadow type="text">
                                                  <field name="TEXT">0.date</field>
                                                </shadow>
                                                <block type="text_join" id="DDs!.^n(V7=A_TK}DFQt">
                                                  <mutation items="2"></mutation>
                                                  <value name="ADD0">
                                                    <block type="variables_get" id="k1+Dybgb:u2y9v57OrCg">
                                                      <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                    </block>
                                                  </value>
                                                  <value name="ADD1">
                                                    <block type="text" id="EXgB=?B}IKiUdQ.2tKoa">
                                                      <field name="TEXT">.daysLeft</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                              <value name="OBJECT">
                                                <block type="variables_get" id="dzLb1f^T!(MM,d=cYU9y">
                                                  <field name="VAR" id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <value name="ADD2">
                                            <block type="text" id=")w#|wt0P9}b[r$B3-geY">
                                              <field name="TEXT"> Tage(n)</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <value name="DELAY_MS">
                                        <shadow type="math_number" id="f8q~r@+q|8Kov#3EufsI">
                                          <field name="NUM">0</field>
                                        </shadow>
                                      </value>
                                      <next>
                                        <block type="control_ex" id="]_w?GOU-5.~E-i6S#/y]">
                                          <field name="TYPE">false</field>
                                          <field name="CLEAR_RUNNING">FALSE</field>
                                          <value name="OID">
                                            <shadow type="field_oid">
                                              <field name="oid">Object ID</field>
                                            </shadow>
                                            <block type="text_join" id="1IWx]e}A.$qn9~[}SmRH">
                                              <mutation items="3"></mutation>
                                              <value name="ADD0">
                                                <block type="text" id="}}vqlPTz3IN2YehTE##l">
                                                  <field name="TEXT">0_userdata.0.Abfallkalender.</field>
                                                </block>
                                              </value>
                                              <value name="ADD1">
                                                <block type="math_arithmetic" id="(A;_Uo2By37YrwU]9mFu">
                                                  <field name="OP">ADD</field>
                                                  <value name="A">
                                                    <shadow type="math_number">
                                                      <field name="NUM">1</field>
                                                    </shadow>
                                                    <block type="variables_get" id=",2)MJ?8)IgaPI`_H|7{+">
                                                      <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                    </block>
                                                  </value>
                                                  <value name="B">
                                                    <shadow type="math_number" id="Lqx[mK!|G-P}_}Re`aty">
                                                      <field name="NUM">1</field>
                                                    </shadow>
                                                  </value>
                                                </block>
                                              </value>
                                              <value name="ADD2">
                                                <block type="text" id="zoz4l3;4A!og)lcQa{$e">
                                                  <field name="TEXT">.event</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <value name="VALUE">
                                            <shadow type="logic_boolean" id="s)#y}=/vy2(5j|pWMtdo">
                                              <field name="BOOL">TRUE</field>
                                            </shadow>
                                            <block type="text_join" id="vIN]{HQG+8bum%7aAuX|">
                                              <mutation items="2"></mutation>
                                              <value name="ADD0">
                                                <block type="get_attr" id="H~hW%jrPx3;)!8k_MzJC">
                                                  <value name="PATH">
                                                    <shadow type="text">
                                                      <field name="TEXT">0.date</field>
                                                    </shadow>
                                                    <block type="text_join" id="ufEdj1$Wn(#o_]FG`X$q">
                                                      <mutation items="2"></mutation>
                                                      <value name="ADD0">
                                                        <block type="variables_get" id="dHFn%XN=cKk@n=}+4a[u">
                                                          <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                        </block>
                                                      </value>
                                                      <value name="ADD1">
                                                        <block type="text" id="J[}G3f:sbyCeFGWiN@h7">
                                                          <field name="TEXT">.name</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <value name="OBJECT">
                                                    <block type="variables_get" id="$)|%;_-Q9.ullt4-k?Y*">
                                                      <field name="VAR" id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                              <value name="ADD1">
                                                <block type="text" id="95lxj}AqSKWZvz!%/s(6">
                                                  <field name="TEXT">e Tonne</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <value name="DELAY_MS">
                                            <shadow type="math_number" id="8jmxPB/ICrJtPos/}/79">
                                              <field name="NUM">0</field>
                                            </shadow>
                                          </value>
                                          <next>
                                            <block type="variables_set" id="%EBcjrb4WrQuDQW#Z(FO">
                                              <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                              <value name="VALUE">
                                                <block type="get_attr" id=";__m$h8Yy1=2Y~r~QE_[">
                                                  <value name="PATH">
                                                    <shadow type="text">
                                                      <field name="TEXT">0.date</field>
                                                    </shadow>
                                                    <block type="text_join" id="M@!Nitlt:hsg0rwnvzI5">
                                                      <mutation items="2"></mutation>
                                                      <value name="ADD0">
                                                        <block type="variables_get" id="n0?tH}eUFPZ)bIDfeN+?">
                                                          <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                        </block>
                                                      </value>
                                                      <value name="ADD1">
                                                        <block type="text" id=")a0G8E@fOVM$`)t*RpD*">
                                                          <field name="TEXT">.name</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <value name="OBJECT">
                                                    <block type="variables_get" id="bAfJR^zv_5f.5u#!5g(m">
                                                      <field name="VAR" id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="controls_if" id="tXaayC+p1w53M0p2$Qz{">
                                                  <mutation elseif="3"></mutation>
                                                  <value name="IF0">
                                                    <block type="logic_compare" id="Gf?a-8/nEptmd/W(1?AZ">
                                                      <field name="OP">EQ</field>
                                                      <value name="A">
                                                        <block type="variables_get" id="mnE+_j#S55)5tkMyBszO">
                                                          <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                        </block>
                                                      </value>
                                                      <value name="B">
                                                        <block type="text" id="l@ux*P`cj+uhYDUGk_zC">
                                                          <field name="TEXT">Rot</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <statement name="DO0">
                                                    <block type="variables_set" id="`k#VGEVT;q9bd;8%=m44">
                                                      <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                      <value name="VALUE">
                                                        <block type="text" id="eMh`#rerG7QHO$9^C,HJ">
                                                          <field name="TEXT">63488</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </statement>
                                                  <value name="IF1">
                                                    <block type="logic_compare" id="N+,K`:%@6Xx4vfdpkAE$">
                                                      <field name="OP">EQ</field>
                                                      <value name="A">
                                                        <block type="variables_get" id="|vZqHsotUp9ckk[y|hX@">
                                                          <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                        </block>
                                                      </value>
                                                      <value name="B">
                                                        <block type="text" id="^T04d,^Fc%-L-YjzT,uL">
                                                          <field name="TEXT">Grün</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <statement name="DO1">
                                                    <block type="variables_set" id="7+%yuK|ZU51VG.~UAPX|">
                                                      <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                      <value name="VALUE">
                                                        <block type="text" id="rF#S_)zhcIR,({D:,6Gg">
                                                          <field name="TEXT">2016</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </statement>
                                                  <value name="IF2">
                                                    <block type="logic_compare" id="~rONaO{}7ailk.P#ulR^">
                                                      <field name="OP">EQ</field>
                                                      <value name="A">
                                                        <block type="variables_get" id="-B;/3`+B8|a:k2dt51|,">
                                                          <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                        </block>
                                                      </value>
                                                      <value name="B">
                                                        <block type="text" id="}qRYFseQ;p`M[$.%NXmm">
                                                          <field name="TEXT">Blau</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <statement name="DO2">
                                                    <block type="variables_set" id="_UGXuK6.EG~z[b473Li3">
                                                      <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                      <value name="VALUE">
                                                        <block type="text" id="T**J}r52Y?EOO,*TI8/V">
                                                          <field name="TEXT">31</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </statement>
                                                  <value name="IF3">
                                                    <block type="logic_compare" id="acD,Sm68eG7q|b~HE(;%">
                                                      <field name="OP">EQ</field>
                                                      <value name="A">
                                                        <block type="variables_get" id="S@qV6E6CP;#L-p15YxC5">
                                                          <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                        </block>
                                                      </value>
                                                      <value name="B">
                                                        <block type="text" id="SZZwEr}.Gx*`Cfs4eD5i">
                                                          <field name="TEXT">Gelb</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <statement name="DO3">
                                                    <block type="variables_set" id="Fg:grnG/RPtFEm+):MXY">
                                                      <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                      <value name="VALUE">
                                                        <block type="text" id="?!wdhxoplCDsUalc7tHn">
                                                          <field name="TEXT">65504</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </statement>
                                                  <next>
                                                    <block type="control_ex" id="86u,p}Dxgze{r!N_tOrS">
                                                      <field name="TYPE">false</field>
                                                      <field name="CLEAR_RUNNING">FALSE</field>
                                                      <value name="OID">
                                                        <shadow type="field_oid">
                                                          <field name="oid">Object ID</field>
                                                        </shadow>
                                                        <block type="text_join" id="k/AbJMF4QuH#-t6yNWQq">
                                                          <mutation items="3"></mutation>
                                                          <value name="ADD0">
                                                            <block type="text" id="UX(FqRfcaRtglU)#0Ec,">
                                                              <field name="TEXT">0_userdata.0.Abfallkalender.</field>
                                                            </block>
                                                          </value>
                                                          <value name="ADD1">
                                                            <block type="math_arithmetic" id="[VKD(T)Iu`[%0,`LaO;9">
                                                              <field name="OP">ADD</field>
                                                              <value name="A">
                                                                <shadow type="math_number">
                                                                  <field name="NUM">1</field>
                                                                </shadow>
                                                                <block type="variables_get" id="/fJro16A:Q}{xj-y=5Op">
                                                                  <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                                </block>
                                                              </value>
                                                              <value name="B">
                                                                <shadow type="math_number" id=".5Y^SD+M#T@GvtGLkw8x">
                                                                  <field name="NUM">1</field>
                                                                </shadow>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <value name="ADD2">
                                                            <block type="text" id="`BX]qTGgRz$%?lj:xf~Z">
                                                              <field name="TEXT">.color</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <value name="VALUE">
                                                        <shadow type="logic_boolean">
                                                          <field name="BOOL">TRUE</field>
                                                        </shadow>
                                                        <block type="variables_get" id="V635SZTnwPASkZb%7EG1">
                                                          <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                        </block>
                                                      </value>
                                                      <value name="DELAY_MS">
                                                        <shadow type="math_number" id="bF4s2sRvXL?HTka(MqfW">
                                                          <field name="NUM">0</field>
                                                        </shadow>
                                                      </value>
                                                    </block>
                                                  </next>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </statement>
                        </block>
                      </xml>
                      

                      CC2538+CC2592 PA-Zigbee-Funkmodul

                      ArmilarA 1 Reply Last reply
                      0
                      • W watcherkb

                        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                        Den Trashschedule kannst du vergessen...

                        nein das würde ich nicht unbedingt sagen. Ich habe das so hinbekommen. Siehe Blockly

                        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                        Ich vermute mal die Stadt, Landkreis, Gemeinde oder was auch immer für so einen iCal zu verklagen bringt nix, oder?

                        ärgert mich auch jedes Jahr aufs Neue. Aber verklagen...hmmm nee lass mal.

                        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                        Ich denke die Farbe rot (63488) ist im Moment dein kleinstes Problem. Aber ja, es gibt auch einen normalen Konverter:
                        https://nodtem66.github.io/nextion-hmi-color-convert/index.html

                        Danke. Damit bin ich mehr als zufrieden. Jetzt ist alles so wie ich das haben wollte.

                        f616c2f8-8936-493c-8e31-2844736b685f-image.png

                        <xml xmlns="https://developers.google.com/blockly/xml">
                          <variables>
                            <variable id="h}CE-n1lS|gRf(0K%./">i</variable>
                            <variable id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</variable>
                            <variable id="bz)nOPh@V8j9EuyGo#tR">Event</variable>
                            <variable id="9^)S?J=tLkC7cUWc-u9w">Color</variable>
                          </variables>
                          <block type="on_ext" id="aFeZac36,?)=rfMg%3T|" x="102" y="-571">
                            <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="GSzQ}epUa))me3m8yyuD">
                                <field name="oid">trashschedule.0.type.json</field>
                              </shadow>
                            </value>
                            <statement name="STATEMENT">
                              <block type="controls_for" id="wduAM(OBPzLJ@bfYAK5%">
                                <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                <value name="FROM">
                                  <shadow type="math_number" id="HK~R2U|xb$U5W+tsHpN">
                                    <field name="NUM">0</field>
                                  </shadow>
                                </value>
                                <value name="TO">
                                  <shadow type="math_number" id="Ed[L/:1e9-cwxrRaZiIv">
                                    <field name="NUM">3</field>
                                  </shadow>
                                </value>
                                <value name="BY">
                                  <shadow type="math_number" id="o@5kngFiPpvl5dGo@Q$9">
                                    <field name="NUM">1</field>
                                  </shadow>
                                </value>
                                <statement name="DO">
                                  <block type="variables_set" id="0T)vK0k8aikvg7mF6XHo">
                                    <field name="VAR" id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</field>
                                    <value name="VALUE">
                                      <block type="get_value" id="1~kG;UHn$nw2zzbfOIT]">
                                        <field name="ATTR">val</field>
                                        <field name="OID">trashschedule.0.type.json</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="control_ex" id="UAu,2OBRJp9~Nzyxouyu">
                                        <field name="TYPE">false</field>
                                        <field name="CLEAR_RUNNING">FALSE</field>
                                        <value name="OID">
                                          <shadow type="field_oid" id="J_|uu;{e44n5Z-;qE+hP">
                                            <field name="oid">Object ID</field>
                                          </shadow>
                                          <block type="text_join" id="8/|eHqk))j9Po-O*mKe">
                                            <mutation items="3"></mutation>
                                            <value name="ADD0">
                                              <block type="text" id="Zp8GRfdfXujkeM41=PeZ">
                                                <field name="TEXT">0_userdata.0.Abfallkalender.</field>
                                              </block>
                                            </value>
                                            <value name="ADD1">
                                              <block type="math_arithmetic" id="$!!l@[eJ~4Kdb5/Imo.X">
                                                <field name="OP">ADD</field>
                                                <value name="A">
                                                  <shadow type="math_number" id="zaU15{yD43xkuY@?)RY(">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="variables_get" id="o3pJ(+3KE~Co%u-dy.:W">
                                                    <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <shadow type="math_number" id="_LBb[#z%M$n0~1Y}~8w+">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                </value>
                                              </block>
                                            </value>
                                            <value name="ADD2">
                                              <block type="text" id="Vt#-b{iDzusQQx]#0%0,">
                                                <field name="TEXT">.date</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <value name="VALUE">
                                          <shadow type="logic_boolean" id="/y1w}eely@o.gl$]#)o=">
                                            <field name="BOOL">TRUE</field>
                                          </shadow>
                                          <block type="text_join" id="Ot@ht^^dx]t.dUS{D-q/">
                                            <mutation items="3"></mutation>
                                            <value name="ADD0">
                                              <block type="text" id="SL}rWlk~qt@@3pdLc214">
                                                <field name="TEXT">in</field>
                                              </block>
                                            </value>
                                            <value name="ADD1">
                                              <block type="get_attr" id="p~0A1{eb$lD~.99R4K)">
                                                <value name="PATH">
                                                  <shadow type="text">
                                                    <field name="TEXT">0.date</field>
                                                  </shadow>
                                                  <block type="text_join" id="DDs!.^n(V7=A_TK}DFQt">
                                                    <mutation items="2"></mutation>
                                                    <value name="ADD0">
                                                      <block type="variables_get" id="k1+Dybgb:u2y9v57OrCg">
                                                        <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                      </block>
                                                    </value>
                                                    <value name="ADD1">
                                                      <block type="text" id="EXgB=?B}IKiUdQ.2tKoa">
                                                        <field name="TEXT">.daysLeft</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                                <value name="OBJECT">
                                                  <block type="variables_get" id="dzLb1f^T!(MM,d=cYU9y">
                                                    <field name="VAR" id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <value name="ADD2">
                                              <block type="text" id=")w#|wt0P9}b[r$B3-geY">
                                                <field name="TEXT"> Tage(n)</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <value name="DELAY_MS">
                                          <shadow type="math_number" id="f8q~r@+q|8Kov#3EufsI">
                                            <field name="NUM">0</field>
                                          </shadow>
                                        </value>
                                        <next>
                                          <block type="control_ex" id="]_w?GOU-5.~E-i6S#/y]">
                                            <field name="TYPE">false</field>
                                            <field name="CLEAR_RUNNING">FALSE</field>
                                            <value name="OID">
                                              <shadow type="field_oid">
                                                <field name="oid">Object ID</field>
                                              </shadow>
                                              <block type="text_join" id="1IWx]e}A.$qn9~[}SmRH">
                                                <mutation items="3"></mutation>
                                                <value name="ADD0">
                                                  <block type="text" id="}}vqlPTz3IN2YehTE##l">
                                                    <field name="TEXT">0_userdata.0.Abfallkalender.</field>
                                                  </block>
                                                </value>
                                                <value name="ADD1">
                                                  <block type="math_arithmetic" id="(A;_Uo2By37YrwU]9mFu">
                                                    <field name="OP">ADD</field>
                                                    <value name="A">
                                                      <shadow type="math_number">
                                                        <field name="NUM">1</field>
                                                      </shadow>
                                                      <block type="variables_get" id=",2)MJ?8)IgaPI`_H|7{+">
                                                        <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                      </block>
                                                    </value>
                                                    <value name="B">
                                                      <shadow type="math_number" id="Lqx[mK!|G-P}_}Re`aty">
                                                        <field name="NUM">1</field>
                                                      </shadow>
                                                    </value>
                                                  </block>
                                                </value>
                                                <value name="ADD2">
                                                  <block type="text" id="zoz4l3;4A!og)lcQa{$e">
                                                    <field name="TEXT">.event</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <value name="VALUE">
                                              <shadow type="logic_boolean" id="s)#y}=/vy2(5j|pWMtdo">
                                                <field name="BOOL">TRUE</field>
                                              </shadow>
                                              <block type="text_join" id="vIN]{HQG+8bum%7aAuX|">
                                                <mutation items="2"></mutation>
                                                <value name="ADD0">
                                                  <block type="get_attr" id="H~hW%jrPx3;)!8k_MzJC">
                                                    <value name="PATH">
                                                      <shadow type="text">
                                                        <field name="TEXT">0.date</field>
                                                      </shadow>
                                                      <block type="text_join" id="ufEdj1$Wn(#o_]FG`X$q">
                                                        <mutation items="2"></mutation>
                                                        <value name="ADD0">
                                                          <block type="variables_get" id="dHFn%XN=cKk@n=}+4a[u">
                                                            <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                          </block>
                                                        </value>
                                                        <value name="ADD1">
                                                          <block type="text" id="J[}G3f:sbyCeFGWiN@h7">
                                                            <field name="TEXT">.name</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <value name="OBJECT">
                                                      <block type="variables_get" id="$)|%;_-Q9.ullt4-k?Y*">
                                                        <field name="VAR" id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                                <value name="ADD1">
                                                  <block type="text" id="95lxj}AqSKWZvz!%/s(6">
                                                    <field name="TEXT">e Tonne</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <value name="DELAY_MS">
                                              <shadow type="math_number" id="8jmxPB/ICrJtPos/}/79">
                                                <field name="NUM">0</field>
                                              </shadow>
                                            </value>
                                            <next>
                                              <block type="variables_set" id="%EBcjrb4WrQuDQW#Z(FO">
                                                <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                <value name="VALUE">
                                                  <block type="get_attr" id=";__m$h8Yy1=2Y~r~QE_[">
                                                    <value name="PATH">
                                                      <shadow type="text">
                                                        <field name="TEXT">0.date</field>
                                                      </shadow>
                                                      <block type="text_join" id="M@!Nitlt:hsg0rwnvzI5">
                                                        <mutation items="2"></mutation>
                                                        <value name="ADD0">
                                                          <block type="variables_get" id="n0?tH}eUFPZ)bIDfeN+?">
                                                            <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                          </block>
                                                        </value>
                                                        <value name="ADD1">
                                                          <block type="text" id=")a0G8E@fOVM$`)t*RpD*">
                                                            <field name="TEXT">.name</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <value name="OBJECT">
                                                      <block type="variables_get" id="bAfJR^zv_5f.5u#!5g(m">
                                                        <field name="VAR" id="j5C=K+Z.E:im1#q:;A=6">Muell_JSON</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="controls_if" id="tXaayC+p1w53M0p2$Qz{">
                                                    <mutation elseif="3"></mutation>
                                                    <value name="IF0">
                                                      <block type="logic_compare" id="Gf?a-8/nEptmd/W(1?AZ">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="variables_get" id="mnE+_j#S55)5tkMyBszO">
                                                            <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="text" id="l@ux*P`cj+uhYDUGk_zC">
                                                            <field name="TEXT">Rot</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO0">
                                                      <block type="variables_set" id="`k#VGEVT;q9bd;8%=m44">
                                                        <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                        <value name="VALUE">
                                                          <block type="text" id="eMh`#rerG7QHO$9^C,HJ">
                                                            <field name="TEXT">63488</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                    <value name="IF1">
                                                      <block type="logic_compare" id="N+,K`:%@6Xx4vfdpkAE$">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="variables_get" id="|vZqHsotUp9ckk[y|hX@">
                                                            <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="text" id="^T04d,^Fc%-L-YjzT,uL">
                                                            <field name="TEXT">Grün</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO1">
                                                      <block type="variables_set" id="7+%yuK|ZU51VG.~UAPX|">
                                                        <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                        <value name="VALUE">
                                                          <block type="text" id="rF#S_)zhcIR,({D:,6Gg">
                                                            <field name="TEXT">2016</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                    <value name="IF2">
                                                      <block type="logic_compare" id="~rONaO{}7ailk.P#ulR^">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="variables_get" id="-B;/3`+B8|a:k2dt51|,">
                                                            <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="text" id="}qRYFseQ;p`M[$.%NXmm">
                                                            <field name="TEXT">Blau</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO2">
                                                      <block type="variables_set" id="_UGXuK6.EG~z[b473Li3">
                                                        <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                        <value name="VALUE">
                                                          <block type="text" id="T**J}r52Y?EOO,*TI8/V">
                                                            <field name="TEXT">31</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                    <value name="IF3">
                                                      <block type="logic_compare" id="acD,Sm68eG7q|b~HE(;%">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="variables_get" id="S@qV6E6CP;#L-p15YxC5">
                                                            <field name="VAR" id="bz)nOPh@V8j9EuyGo#tR">Event</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="text" id="SZZwEr}.Gx*`Cfs4eD5i">
                                                            <field name="TEXT">Gelb</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO3">
                                                      <block type="variables_set" id="Fg:grnG/RPtFEm+):MXY">
                                                        <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                        <value name="VALUE">
                                                          <block type="text" id="?!wdhxoplCDsUalc7tHn">
                                                            <field name="TEXT">65504</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                    <next>
                                                      <block type="control_ex" id="86u,p}Dxgze{r!N_tOrS">
                                                        <field name="TYPE">false</field>
                                                        <field name="CLEAR_RUNNING">FALSE</field>
                                                        <value name="OID">
                                                          <shadow type="field_oid">
                                                            <field name="oid">Object ID</field>
                                                          </shadow>
                                                          <block type="text_join" id="k/AbJMF4QuH#-t6yNWQq">
                                                            <mutation items="3"></mutation>
                                                            <value name="ADD0">
                                                              <block type="text" id="UX(FqRfcaRtglU)#0Ec,">
                                                                <field name="TEXT">0_userdata.0.Abfallkalender.</field>
                                                              </block>
                                                            </value>
                                                            <value name="ADD1">
                                                              <block type="math_arithmetic" id="[VKD(T)Iu`[%0,`LaO;9">
                                                                <field name="OP">ADD</field>
                                                                <value name="A">
                                                                  <shadow type="math_number">
                                                                    <field name="NUM">1</field>
                                                                  </shadow>
                                                                  <block type="variables_get" id="/fJro16A:Q}{xj-y=5Op">
                                                                    <field name="VAR" id="h}CE-n1lS|gRf(0K%./">i</field>
                                                                  </block>
                                                                </value>
                                                                <value name="B">
                                                                  <shadow type="math_number" id=".5Y^SD+M#T@GvtGLkw8x">
                                                                    <field name="NUM">1</field>
                                                                  </shadow>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <value name="ADD2">
                                                              <block type="text" id="`BX]qTGgRz$%?lj:xf~Z">
                                                                <field name="TEXT">.color</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                        <value name="VALUE">
                                                          <shadow type="logic_boolean">
                                                            <field name="BOOL">TRUE</field>
                                                          </shadow>
                                                          <block type="variables_get" id="V635SZTnwPASkZb%7EG1">
                                                            <field name="VAR" id="9^)S?J=tLkC7cUWc-u9w">Color</field>
                                                          </block>
                                                        </value>
                                                        <value name="DELAY_MS">
                                                          <shadow type="math_number" id="bF4s2sRvXL?HTka(MqfW">
                                                            <field name="NUM">0</field>
                                                          </shadow>
                                                        </value>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                              </block>
                            </statement>
                          </block>
                        </xml>
                        
                        ArmilarA Offline
                        ArmilarA Offline
                        Armilar
                        Most Active Forum Testing
                        wrote on last edited by
                        #1594

                        @watcherkb 👍

                        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 Reply Last reply
                        0
                        • ArmilarA Armilar

                          @carlos

                          Die id: 0 muss dem Blockly noch hinzugefügt werden. Die visualisiert den mittleren Balken in der cardPower. Bei den meisten wahrscheinlich immer das gleiche.

                          C Offline
                          C Offline
                          carlos
                          wrote on last edited by
                          #1595

                          @armilar
                          Das dachte ich mir schon, aber wie mache ich das.
                          Bin leider nicht so fit im blockly programmieren.

                          ArmilarA 1 Reply Last reply
                          0
                          • ArmilarA Armilar

                            @jleg

                            da "originale" NSPanel stellt ja i.W. einen Thermostaten (klick-klack) per Relais (und wohl dem internen Temp.fühler) bereit.

                            Eigentlich nicht wirklich, da am hinteren Ausgang nur 2 Ausgänge für die Button-Relays zur Verfügung stehen. Die kann man natürlich auch für Thermostate verwenden, allerdings muss das dann mit externer Logik (z.B. Blockly) verarbeitet werden.

                            dass die "cardThermo" eine "GUI" für einen existierenden Thermostaten bereitstellt - aber selbst "Themostat spielen" geht nicht.

                            Kann das Original NSPanel aber auch nicht... Ist auch nur eine GUI und die hat in der Temperaturlogik sogar noch Fehler...

                            Kommt jetzt darauf an, was wie gesteuert werden soll. Ich sag es mal so - wenn es einen Heizungs-Aktor gibt der gesteuert werden kann, dann hat der minimalistisch einen On/Off mit true/false. Dann kann es natürlich mit dem NSPanel gesteuert werden.

                            Am Panel stellst du eine Zieltemperatur (mit eigenem Datenunkt in 0_userdata) ein und kannst auch die interne Temperatur (Die Temperatur wird vom TS-Script in 0_userdata bei Veränderung in einen DP geschrieben) abgreifen:

                            5a8d949d-20a2-4ffe-b626-ef0cb343cd7b-image.png

                            Mittels eines Blocklys realisiert du nun die Steuerung:

                            Wenn Sensor-Temperatur (Raumtemperatur) kleiner der Solltemperatur (Setpoint), dann Heizaktor an.
                            Wenn Sensor-Temperatur (Raumtemperatur) größer der Solltemperatur (Setpoint), dann Heizaktor aus.

                            Wenn eine Heizung an den Relais (hintere 1-2 Ausgänge) hängt, kannst du das Relais ebenfalls mittels Datenpunkt ansteuern und das Panel als Aktor nutzen.

                            42ccc260-87f9-477e-bb70-83d297084e0f-image.png

                            JLegJ Offline
                            JLegJ Offline
                            JLeg
                            wrote on last edited by
                            #1596

                            @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                            Kommt jetzt darauf an, was wie gesteuert werden soll. Ich sag es mal so - wenn es einen Heizungs-Aktor gibt der gesteuert werden kann, dann hat der minimalistisch einen On/Off mit true/false. Dann kann es natürlich mit dem NSPanel gesteuert werden.
                            Am Panel stellst du eine Zieltemperatur (mit eigenem Datenunkt in 0_userdata) ein und kannst auch die interne Temperatur (Die Temperatur wird vom TS-Script in 0_userdata bei Veränderung in einen DP geschrieben) abgreifen:

                            Danke, ich glaube, das war dann der springende Punkt - ich kann also eine cardThermo auch benutzen, ohne wirklich einen "richtigen" Thermostaten im Alias zu haben, sondern DPs für Ziel-Temp. und Relais plus Script genügen. Dann probier' ich das doch mal... 🙂

                            Btw, der Sonoff-Sprech für NSPanel lässt mich schon erwarten, dass das Ding "selfcontained" Thermostat spielen kann:

                            Equipped with a built-in powerful thermostat, and environmental sensors, the NSPanel picks up the surrounding temperature and lets you trigger your heating or cooling appliances so that they always automatically keep the room temperature stable and adjust to the preferred temperature.

                            ArmilarA 1 Reply Last reply
                            0
                            • JLegJ JLeg

                              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                              Kommt jetzt darauf an, was wie gesteuert werden soll. Ich sag es mal so - wenn es einen Heizungs-Aktor gibt der gesteuert werden kann, dann hat der minimalistisch einen On/Off mit true/false. Dann kann es natürlich mit dem NSPanel gesteuert werden.
                              Am Panel stellst du eine Zieltemperatur (mit eigenem Datenunkt in 0_userdata) ein und kannst auch die interne Temperatur (Die Temperatur wird vom TS-Script in 0_userdata bei Veränderung in einen DP geschrieben) abgreifen:

                              Danke, ich glaube, das war dann der springende Punkt - ich kann also eine cardThermo auch benutzen, ohne wirklich einen "richtigen" Thermostaten im Alias zu haben, sondern DPs für Ziel-Temp. und Relais plus Script genügen. Dann probier' ich das doch mal... 🙂

                              Btw, der Sonoff-Sprech für NSPanel lässt mich schon erwarten, dass das Ding "selfcontained" Thermostat spielen kann:

                              Equipped with a built-in powerful thermostat, and environmental sensors, the NSPanel picks up the surrounding temperature and lets you trigger your heating or cooling appliances so that they always automatically keep the room temperature stable and adjust to the preferred temperature.

                              ArmilarA Offline
                              ArmilarA Offline
                              Armilar
                              Most Active Forum Testing
                              wrote on last edited by
                              #1597

                              @jleg

                              Ja das ist der Vorteil der Alias-Struktur... Dem TS-Script und dem NSPanel ist es völlig egal was für eine Gerät am anderen Ende hängt. Und auch völlig egal, ob es eine "echtes" oder ein "virtuelles" Gerät ist.

                              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 Reply Last reply
                              0
                              • C carlos

                                @armilar
                                Das dachte ich mir schon, aber wie mache ich das.
                                Bin leider nicht so fit im blockly programmieren.

                                ArmilarA Offline
                                ArmilarA Offline
                                Armilar
                                Most Active Forum Testing
                                wrote on last edited by
                                #1598

                                @carlos

                                ich erweitere das Blockly-Beispiel (evtl. heute Abend kurz) um die id: 0

                                Dann melde ich mich nochmal dazu ...

                                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.

                                ArmilarA 1 Reply Last reply
                                1
                                • ArmilarA Armilar

                                  @carlos

                                  ich erweitere das Blockly-Beispiel (evtl. heute Abend kurz) um die id: 0

                                  Dann melde ich mich nochmal dazu ...

                                  ArmilarA Offline
                                  ArmilarA Offline
                                  Armilar
                                  Most Active Forum Testing
                                  wrote on last edited by Armilar
                                  #1599

                                  @carlos

                                  Ist zwar noch nicht ganz Abend 😉 , aber ich habe mal einen statischen Block für id: 0 eingefügt:

                                  Blockly:
                                  https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/ioBroker/Blockly/CardPower_Emulator_Skript.xml

                                  Einfach den "gelben" Block einsetzen:

                                  70ed740c-1dde-467e-8fe7-a14e0abab94a-image.png

                                  Sieht dann so aus:
                                  78234f26-953a-4ce8-ba7a-157525a5696b-image.png

                                  Einfach mal aus dem DP herauskopiert (exemplarisch)

                                  [
                                    {
                                      "id": 0,
                                      "value": "",
                                      "unit": "",
                                      "icon": "home",
                                      "iconColor": 0
                                    },
                                    {
                                      "id": 1,
                                      "value": 3,
                                      "unit": "kW",
                                      "direction": "in",
                                      "icon": "battery-charging-60",
                                      "iconColor": 10,
                                      "speed": -3
                                    },
                                    {
                                      "id": 2,
                                      "value": 4.7,
                                      "unit": "kW",
                                      "direction": "in",
                                      "icon": "solar-power-variant",
                                      "iconColor": 3,
                                      "speed": 2
                                    },
                                    {
                                      "id": 3,
                                      "value": 4.5,
                                      "unit": "kW",
                                      "direction": "in",
                                      "icon": "wind-turbine",
                                      "iconColor": 1,
                                      "speed": 3
                                    },
                                    {
                                      "id": 4,
                                      "value": 1.9,
                                      "unit": "kW",
                                      "direction": "in",
                                      "icon": "shape",
                                      "iconColor": 10,
                                      "speed": 3
                                    },
                                    {
                                      "id": 5,
                                      "value": 2.9,
                                      "unit": "kW",
                                      "direction": "in",
                                      "icon": "transmission-tower",
                                      "iconColor": 0,
                                      "speed": 2
                                    },
                                    {
                                      "id": 6,
                                      "value": 1.4,
                                      "unit": "kW",
                                      "direction": "in",
                                      "icon": "car",
                                      "iconColor": 3,
                                      "speed": 3
                                    }
                                  ]
                                  

                                  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.

                                  C 1 Reply Last reply
                                  0
                                  • ArmilarA Armilar

                                    @ronny130286

                                    Die Funktion für den Monobutton war damals so

                                    Ich fasse mal kurz wieder zusammen:
                                    Stimmt es ging eigentlich darum, dass "true" und "false" im Abstand von 250ms gesendet wird. Kein Problem, dass haben wir schnell mittels eines neuen zusätzlichen PageItem-Parameters ( ggfs. monoButton: 'true' ) drin... Aber dann fällt die Farbe beim Rendern auf "false" zurück und es gibt niemals einen "On"-Zustand beim Visualisieren des Icons. Wenn aber ein Zusätzlicher Datenpunkt genutzt wird, der auf bei Veränderung des Schaltdatenpunktes "false" reagiert und invertiert wird, dann sollte es klappen.

                                    Wenn man also dem Taster jetzt noch einen separaten State im Alias verpasst, könnte der auch im Zuge des Rendern angezeigt werden, vorausgesetzt dieser neue zusätzliche Parameter im PageItem ist vorhanden.

                                    Der erste Datenpunkt ist im Adapter deiner Steuerung und benötigt true --> Verzögerung 250ms -->false. Darauf wird ein Alias: ACTUAL gesetzt.

                                    Der zweite Datenpunkt ist im Prinzip der Aktor der geschaltet wird (z.B. Zustand einer Lampe oder Steckdose, etc.). Darauf wird dann im gleichen Alias STATE gesetzt, der auf den Zustand des Aktors zeigt.

                                    Damit wäre die Lösung losgelöst von separaten Schalter oder z.B. iot-Adapter, welche ja auch nur den Zustand der S7 veändern. Der Zustand der Aktors wäre eigentlich immer korrekt, oder?

                                    Wenn das so für dich okay ist, würde ich da mal etwas implementieren und du würdest dann mal testen, ob sich Zustände und Icons entsprechend verhalten...

                                    R Offline
                                    R Offline
                                    ronny130286
                                    wrote on last edited by ronny130286
                                    #1600

                                    @armilar

                                    Ja so ist es wäre es richtig 😉

                                    So sieht meine Änderung aus => Änderungen sind dort wo Monobutton seht
                                    Mein Alias hat dann den zusätzlichen .STATE bekommen, wo von der SPS der eigentliche Ausgange abgefragt wird (der macht dann den Status)

                                    panel.ts

                                    ggf. kannst du es gleich so übernehmen, ich würde aber auch deine Lösung testen, am besten schreibst mich per PN an 😉
                                    Vielleicht kannst du auch gleich das Display Update für die verschieden Panels US-L, US-P, EU mit übernehmen 🙂

                                    @ronny130286 said in SONOFF NSPanel mit Lovelace UI:

                                    Gibt es eigentlich eine Möglichkeit einen Monobutton (true/false) einzubinden?
                                    Weil es steht immer noch oben in der Beschreibung:

                                    Taste               - Für Szenen oder Radiosender, etc. --> Nur Funktionsaufruf - Kein Taster wie MonoButton - True/False
                                    

                                    Dann ist mir noch ein kleiner Bug im Script aufgefallen, die Funktion vom Display Update ignoriert die eigentlich Version des Displays.
                                    Ich habe mehrere Panels im Einsatz unter anderem auch die US-L Version, leider zerknallt er dann immer die Software auf dem Display 😞
                                    Kann man die Abfrage nicht noch zusätzlich einpflegen, dass auch wirklich nur die Software genommen wird welche das Panel auch benötigt?

                                    Edit:
                                    habe die Funktion mal angepasst:

                                    function update_tft_firmware() {
                                        const tft_version: string = 'v3.8.1';
                                        let desired_display_firmware_url =""
                                    
                                        if(getState(NSPanel_Path + '.NSPanel_Version').val =="us-l"){
                                            desired_display_firmware_url = `http://nspanel.pky.eu/lovelace-ui/github/nspanel-us-l-${tft_version}.tft`;
                                        }else if (getState(NSPanel_Path + '.NSPanel_Version').val =="us-p"){
                                            desired_display_firmware_url = `http://nspanel.pky.eu/lovelace-ui/github/nspanel-us-p-${tft_version}.tft`;
                                        }else{
                                            desired_display_firmware_url = `http://nspanel.pky.eu/lovelace-ui/github/nspanel-${tft_version}.tft`;
                                        }
                                        
                                        try {
                                    
                                            let urlString = `http://${get_current_tasmota_ip_address()}/cm?cmnd=FlashNextion ${desired_display_firmware_url}`;
                                            if (tasmota_web_admin_password != '') {
                                                urlString = `http://${get_current_tasmota_ip_address()}/cm?user=${tasmota_web_admin_user}&password=${tasmota_web_admin_password}&cmnd=FlashNextion ${desired_display_firmware_url}`;
                                            }
                                    
                                            request({
                                                url: `${urlString}`,
                                                headers: {
                                                    'User-Agent': 'ioBroker'
                                                }
                                            }, async function () {
                                                await createStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.StateCommon>{ type: 'string' });
                                                await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: tft_version, ack: true });
                                            });
                                        } catch (err) {
                                            console.warn('error at function update_tft_firmware: ' + err.message);
                                        }
                                    }
                                    

                                    Ich habe noch eine Kleinigkeit festgestellt (bin mir auch nicht sicher ob das schon immer war) aber scheinbar werden die States doppelt gesetzt und es kommt zum hin und her hüpfen (siehe Video) 20230109-190214_gzDhsaJe.mp4

                                    Wenn ich richtig liegt entsteht das verhalten durch die

                                    function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = false): string {
                                    

                                    an der Stelle:

                                    // Fallback if no name is given
                                                name = pageItem.name !== undefined ? pageItem.name : o.common.name.de;
                                                        
                                                if (existsState(pageItem.id + '.GET')) {
                                                    val = getState(pageItem.id + '.GET').val;
                                                    RegisterEntityWatcher(pageItem.id + '.GET');
                                                }
                                                // Änderung für Monobutton
                                    			if (existsState(pageItem.id + ".STATE")) {
                                    				val = getState(pageItem.id + ".STATE").val;
                                    				RegisterEntityWatcher(pageItem.id + ".STATE");
                                                }
                                                if (existsState(pageItem.id + '.SET') && !existsState(pageItem.id + ".STATE")) {
                                                    val = getState(pageItem.id + '.SET').val;
                                                    RegisterEntityWatcher(pageItem.id + '.SET');
                                                } 
                                    			// Änderung für Monobutton
                                                if (existsState(pageItem.id + '.ACTUAL')) {
                                                    val = getState(pageItem.id + '.ACTUAL').val;
                                                    RegisterEntityWatcher(pageItem.id + '.ACTUAL');
                                                }
                                                if (existsState(pageItem.id + '.ON_ACTUAL')) {
                                                    val = getState(pageItem.id + '.ON_ACTUAL').val;
                                                    RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
                                                } 
                                                if (existsState(pageItem.id + '.ON_SET')) {
                                                    val = getState(pageItem.id + '.ON_SET').val;
                                                    RegisterEntityWatcher(pageItem.id + '.ON_SET');
                                                }
                                                if (existsState(pageItem.id + '.ON')) {
                                                    val = getState(pageItem.id + '.ON').val;
                                                    RegisterEntityWatcher(pageItem.id + '.ON');
                                                }
                                    

                                    sobald bsp. .Set und .ACTUAL im Alias hat dann scheint das aufzutreten
                                    Quick und dirt würde mir einfallen

                                                let onlyOneState = 0;
                                    
                                                if (existsState(pageItem.id + '.GET')) {
                                                    onlyOneState = 1;
                                                    val = getState(pageItem.id + '.GET').val;
                                                    RegisterEntityWatcher(pageItem.id + '.GET');
                                                }
                                                // Änderung für Monobutton
                                    			if (existsState(pageItem.id + ".STATE") && onlyOneState==0) {
                                                    onlyOneState = 1;
                                    				val = getState(pageItem.id + ".STATE").val;
                                    				RegisterEntityWatcher(pageItem.id + ".STATE");
                                                }
                                                if (existsState(pageItem.id + '.SET') && !existsState(pageItem.id + ".STATE") && onlyOneState==0) {
                                                    onlyOneState = 1;
                                                    val = getState(pageItem.id + '.SET').val;
                                                    RegisterEntityWatcher(pageItem.id + '.SET');
                                                }
                                                // Änderung für Monobutton 
                                                if (existsState(pageItem.id + '.ACTUAL') && onlyOneState==0) {
                                                    onlyOneState = 1;
                                                    val = getState(pageItem.id + '.ACTUAL').val;
                                                    RegisterEntityWatcher(pageItem.id + '.ACTUAL');
                                                }
                                                if (existsState(pageItem.id + '.ON_ACTUAL') && onlyOneState==0) {
                                                    onlyOneState = 1;
                                                    val = getState(pageItem.id + '.ON_ACTUAL').val;
                                                    RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
                                                } 
                                                if (existsState(pageItem.id + '.ON_SET') && onlyOneState==0) {
                                                    onlyOneState = 1;
                                                    val = getState(pageItem.id + '.ON_SET').val;
                                                    RegisterEntityWatcher(pageItem.id + '.ON_SET');
                                                }
                                                if (existsState(pageItem.id + '.ON') && onlyOneState==0) {
                                                    onlyOneState = 1;
                                                    val = getState(pageItem.id + '.ON').val;
                                                    RegisterEntityWatcher(pageItem.id + '.ON');
                                                }
                                    
                                    ArmilarA 1 Reply Last reply
                                    0
                                    • R ronny130286

                                      @armilar

                                      Ja so ist es wäre es richtig 😉

                                      So sieht meine Änderung aus => Änderungen sind dort wo Monobutton seht
                                      Mein Alias hat dann den zusätzlichen .STATE bekommen, wo von der SPS der eigentliche Ausgange abgefragt wird (der macht dann den Status)

                                      panel.ts

                                      ggf. kannst du es gleich so übernehmen, ich würde aber auch deine Lösung testen, am besten schreibst mich per PN an 😉
                                      Vielleicht kannst du auch gleich das Display Update für die verschieden Panels US-L, US-P, EU mit übernehmen 🙂

                                      @ronny130286 said in SONOFF NSPanel mit Lovelace UI:

                                      Gibt es eigentlich eine Möglichkeit einen Monobutton (true/false) einzubinden?
                                      Weil es steht immer noch oben in der Beschreibung:

                                      Taste               - Für Szenen oder Radiosender, etc. --> Nur Funktionsaufruf - Kein Taster wie MonoButton - True/False
                                      

                                      Dann ist mir noch ein kleiner Bug im Script aufgefallen, die Funktion vom Display Update ignoriert die eigentlich Version des Displays.
                                      Ich habe mehrere Panels im Einsatz unter anderem auch die US-L Version, leider zerknallt er dann immer die Software auf dem Display 😞
                                      Kann man die Abfrage nicht noch zusätzlich einpflegen, dass auch wirklich nur die Software genommen wird welche das Panel auch benötigt?

                                      Edit:
                                      habe die Funktion mal angepasst:

                                      function update_tft_firmware() {
                                          const tft_version: string = 'v3.8.1';
                                          let desired_display_firmware_url =""
                                      
                                          if(getState(NSPanel_Path + '.NSPanel_Version').val =="us-l"){
                                              desired_display_firmware_url = `http://nspanel.pky.eu/lovelace-ui/github/nspanel-us-l-${tft_version}.tft`;
                                          }else if (getState(NSPanel_Path + '.NSPanel_Version').val =="us-p"){
                                              desired_display_firmware_url = `http://nspanel.pky.eu/lovelace-ui/github/nspanel-us-p-${tft_version}.tft`;
                                          }else{
                                              desired_display_firmware_url = `http://nspanel.pky.eu/lovelace-ui/github/nspanel-${tft_version}.tft`;
                                          }
                                          
                                          try {
                                      
                                              let urlString = `http://${get_current_tasmota_ip_address()}/cm?cmnd=FlashNextion ${desired_display_firmware_url}`;
                                              if (tasmota_web_admin_password != '') {
                                                  urlString = `http://${get_current_tasmota_ip_address()}/cm?user=${tasmota_web_admin_user}&password=${tasmota_web_admin_password}&cmnd=FlashNextion ${desired_display_firmware_url}`;
                                              }
                                      
                                              request({
                                                  url: `${urlString}`,
                                                  headers: {
                                                      'User-Agent': 'ioBroker'
                                                  }
                                              }, async function () {
                                                  await createStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.StateCommon>{ type: 'string' });
                                                  await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: tft_version, ack: true });
                                              });
                                          } catch (err) {
                                              console.warn('error at function update_tft_firmware: ' + err.message);
                                          }
                                      }
                                      

                                      Ich habe noch eine Kleinigkeit festgestellt (bin mir auch nicht sicher ob das schon immer war) aber scheinbar werden die States doppelt gesetzt und es kommt zum hin und her hüpfen (siehe Video) 20230109-190214_gzDhsaJe.mp4

                                      Wenn ich richtig liegt entsteht das verhalten durch die

                                      function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = false): string {
                                      

                                      an der Stelle:

                                      // Fallback if no name is given
                                                  name = pageItem.name !== undefined ? pageItem.name : o.common.name.de;
                                                          
                                                  if (existsState(pageItem.id + '.GET')) {
                                                      val = getState(pageItem.id + '.GET').val;
                                                      RegisterEntityWatcher(pageItem.id + '.GET');
                                                  }
                                                  // Änderung für Monobutton
                                      			if (existsState(pageItem.id + ".STATE")) {
                                      				val = getState(pageItem.id + ".STATE").val;
                                      				RegisterEntityWatcher(pageItem.id + ".STATE");
                                                  }
                                                  if (existsState(pageItem.id + '.SET') && !existsState(pageItem.id + ".STATE")) {
                                                      val = getState(pageItem.id + '.SET').val;
                                                      RegisterEntityWatcher(pageItem.id + '.SET');
                                                  } 
                                      			// Änderung für Monobutton
                                                  if (existsState(pageItem.id + '.ACTUAL')) {
                                                      val = getState(pageItem.id + '.ACTUAL').val;
                                                      RegisterEntityWatcher(pageItem.id + '.ACTUAL');
                                                  }
                                                  if (existsState(pageItem.id + '.ON_ACTUAL')) {
                                                      val = getState(pageItem.id + '.ON_ACTUAL').val;
                                                      RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
                                                  } 
                                                  if (existsState(pageItem.id + '.ON_SET')) {
                                                      val = getState(pageItem.id + '.ON_SET').val;
                                                      RegisterEntityWatcher(pageItem.id + '.ON_SET');
                                                  }
                                                  if (existsState(pageItem.id + '.ON')) {
                                                      val = getState(pageItem.id + '.ON').val;
                                                      RegisterEntityWatcher(pageItem.id + '.ON');
                                                  }
                                      

                                      sobald bsp. .Set und .ACTUAL im Alias hat dann scheint das aufzutreten
                                      Quick und dirt würde mir einfallen

                                                  let onlyOneState = 0;
                                      
                                                  if (existsState(pageItem.id + '.GET')) {
                                                      onlyOneState = 1;
                                                      val = getState(pageItem.id + '.GET').val;
                                                      RegisterEntityWatcher(pageItem.id + '.GET');
                                                  }
                                                  // Änderung für Monobutton
                                      			if (existsState(pageItem.id + ".STATE") && onlyOneState==0) {
                                                      onlyOneState = 1;
                                      				val = getState(pageItem.id + ".STATE").val;
                                      				RegisterEntityWatcher(pageItem.id + ".STATE");
                                                  }
                                                  if (existsState(pageItem.id + '.SET') && !existsState(pageItem.id + ".STATE") && onlyOneState==0) {
                                                      onlyOneState = 1;
                                                      val = getState(pageItem.id + '.SET').val;
                                                      RegisterEntityWatcher(pageItem.id + '.SET');
                                                  }
                                                  // Änderung für Monobutton 
                                                  if (existsState(pageItem.id + '.ACTUAL') && onlyOneState==0) {
                                                      onlyOneState = 1;
                                                      val = getState(pageItem.id + '.ACTUAL').val;
                                                      RegisterEntityWatcher(pageItem.id + '.ACTUAL');
                                                  }
                                                  if (existsState(pageItem.id + '.ON_ACTUAL') && onlyOneState==0) {
                                                      onlyOneState = 1;
                                                      val = getState(pageItem.id + '.ON_ACTUAL').val;
                                                      RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
                                                  } 
                                                  if (existsState(pageItem.id + '.ON_SET') && onlyOneState==0) {
                                                      onlyOneState = 1;
                                                      val = getState(pageItem.id + '.ON_SET').val;
                                                      RegisterEntityWatcher(pageItem.id + '.ON_SET');
                                                  }
                                                  if (existsState(pageItem.id + '.ON') && onlyOneState==0) {
                                                      onlyOneState = 1;
                                                      val = getState(pageItem.id + '.ON').val;
                                                      RegisterEntityWatcher(pageItem.id + '.ON');
                                                  }
                                      
                                      ArmilarA Offline
                                      ArmilarA Offline
                                      Armilar
                                      Most Active Forum Testing
                                      wrote on last edited by Armilar
                                      #1601

                                      @ronny130286 sagte in SONOFF NSPanel mit Lovelace UI:

                                      Vielleicht kannst du auch gleich das Display Update für die verschieden Panels US-L, US-P, EU mit übernehmen

                                      Habe ich bereits gestern eingefügt 😉

                                      ggf. kannst du es gleich so übernehmen, ich würde aber auch deine Lösung testen.

                                      Brauchst meine Lösung nicht testen. Ich hätte da keine Zeile anders gemacht 😉 . Ist Top so und wandert 1:1 in den Code.

                                      Ich habe noch eine Kleinigkeit festgestellt (bin mir auch nicht sicher ob das schon immer war) aber scheinbar werden die States doppelt gesetzt und es kommt zum hin und her hüpfen (siehe Video) 20230109-190214_gzDhsaJe.mp4
                                      Wenn ich richtig liegt entsteht das verhalten durch die

                                      Wie ist denn das Verhalten des Aktors? Wenn du den Switch bedienst, schaltet die Lampe dann auch? Oder ist das nur das Steuerelement?

                                      Für das Verhalten gibt es zwei Ansätze:

                                      • Es läuft noch ein anderes Script im Hintergrund
                                      • Es liegt irgendwo ein anderer Trigger, der den gleichen State Datenpunkt verändert.

                                      Der RegisterEntityWatcher ist ja nur ein Trigger, der erkennt, ob sich der Zustand .State verändert hat. Wenn der also hüpft, dann wird der Zustand des Aktors an anderer Stelle nochmals verändert und der Trigger greift mehrfach.

                                      EDIT:
                                      Der Fehler wird vermutlich im .ON_SET ausgelöst, da der true und false mitbekommt (Abstand 250ms). Der wird 2x Triggern. Bekommen wir aber mit einem 300ms Timeout wieder raus.

                                      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 Reply Last reply
                                      0
                                      • ArmilarA Armilar

                                        @ronny130286 sagte in SONOFF NSPanel mit Lovelace UI:

                                        Vielleicht kannst du auch gleich das Display Update für die verschieden Panels US-L, US-P, EU mit übernehmen

                                        Habe ich bereits gestern eingefügt 😉

                                        ggf. kannst du es gleich so übernehmen, ich würde aber auch deine Lösung testen.

                                        Brauchst meine Lösung nicht testen. Ich hätte da keine Zeile anders gemacht 😉 . Ist Top so und wandert 1:1 in den Code.

                                        Ich habe noch eine Kleinigkeit festgestellt (bin mir auch nicht sicher ob das schon immer war) aber scheinbar werden die States doppelt gesetzt und es kommt zum hin und her hüpfen (siehe Video) 20230109-190214_gzDhsaJe.mp4
                                        Wenn ich richtig liegt entsteht das verhalten durch die

                                        Wie ist denn das Verhalten des Aktors? Wenn du den Switch bedienst, schaltet die Lampe dann auch? Oder ist das nur das Steuerelement?

                                        Für das Verhalten gibt es zwei Ansätze:

                                        • Es läuft noch ein anderes Script im Hintergrund
                                        • Es liegt irgendwo ein anderer Trigger, der den gleichen State Datenpunkt verändert.

                                        Der RegisterEntityWatcher ist ja nur ein Trigger, der erkennt, ob sich der Zustand .State verändert hat. Wenn der also hüpft, dann wird der Zustand des Aktors an anderer Stelle nochmals verändert und der Trigger greift mehrfach.

                                        EDIT:
                                        Der Fehler wird vermutlich im .ON_SET ausgelöst, da der true und false mitbekommt (Abstand 250ms). Der wird 2x Triggern. Bekommen wir aber mit einem 300ms Timeout wieder raus.

                                        R Offline
                                        R Offline
                                        ronny130286
                                        wrote on last edited by ronny130286
                                        #1602

                                        @armilar
                                        Also er schaltet sauber die Lampe ein nur der Status flackert. Mir ist nur aufgefallen bei meiner Änderung zum Monobutton ist es nicht da ich ja hier die den .Set und .State verriegelt habe

                                                  // Änderung für Monobutton
                                        	   if (existsState(pageItem.id + ".STATE") ) {
                                        		val = getState(pageItem.id + ".STATE").val;
                                        		RegisterEntityWatcher(pageItem.id + ".STATE");
                                                    }
                                                    if (existsState(pageItem.id + '.SET') && !existsState(pageItem.id + ".STATE") ) {
                                                        val = getState(pageItem.id + '.SET').val;
                                                        RegisterEntityWatcher(pageItem.id + '.SET');
                                                    }
                                                    // Änderung für Monobutton 
                                        

                                        Ich hatte mal im RegisterEntityWatcher einen Log eingebaut

                                        console.log("RegEntityWatcher wurde aufgerufen: " + id)
                                        

                                        , da sieht man das ein Alias 2x den RegisterEntityWatcher triggert

                                        Ist denke ich nur Kosmetik 😉

                                        EDIT:
                                        @armilar said in SONOFF NSPanel mit Lovelace UI:

                                        EDIT:
                                        Der Fehler wird vermutlich im .ON_SET ausgelöst, da der true und false mitbekommt (Abstand 250ms). Der wird 2x Triggern. Bekommen wir aber mit einem 300ms Timeout wieder raus.

                                        ich glaube das kommt von den If Bedingungen im function CreateEntity, da ich in einem Alias mehrere States habe die es nach der If-Bedingung gibt.
                                        Also hat ein Alias bei mir ein .Set 1. RegisterEntityWatcher hat er dann noch ein .ACTUAL 2. RegisterEntityWatcher für ein und das selbe Item auf der Page.

                                        Ich habe gerade mal in mein Backup von älteren Scripten geschaut, dort waren das noch If Else IF Else If Bedingungen, da könnte ich mir vorstellen das er den RegisterEntityWatcher nur einmal gestartet hat

                                        ArmilarA 1 Reply Last reply
                                        0
                                        • R ronny130286

                                          @armilar
                                          Also er schaltet sauber die Lampe ein nur der Status flackert. Mir ist nur aufgefallen bei meiner Änderung zum Monobutton ist es nicht da ich ja hier die den .Set und .State verriegelt habe

                                                    // Änderung für Monobutton
                                          	   if (existsState(pageItem.id + ".STATE") ) {
                                          		val = getState(pageItem.id + ".STATE").val;
                                          		RegisterEntityWatcher(pageItem.id + ".STATE");
                                                      }
                                                      if (existsState(pageItem.id + '.SET') && !existsState(pageItem.id + ".STATE") ) {
                                                          val = getState(pageItem.id + '.SET').val;
                                                          RegisterEntityWatcher(pageItem.id + '.SET');
                                                      }
                                                      // Änderung für Monobutton 
                                          

                                          Ich hatte mal im RegisterEntityWatcher einen Log eingebaut

                                          console.log("RegEntityWatcher wurde aufgerufen: " + id)
                                          

                                          , da sieht man das ein Alias 2x den RegisterEntityWatcher triggert

                                          Ist denke ich nur Kosmetik 😉

                                          EDIT:
                                          @armilar said in SONOFF NSPanel mit Lovelace UI:

                                          EDIT:
                                          Der Fehler wird vermutlich im .ON_SET ausgelöst, da der true und false mitbekommt (Abstand 250ms). Der wird 2x Triggern. Bekommen wir aber mit einem 300ms Timeout wieder raus.

                                          ich glaube das kommt von den If Bedingungen im function CreateEntity, da ich in einem Alias mehrere States habe die es nach der If-Bedingung gibt.
                                          Also hat ein Alias bei mir ein .Set 1. RegisterEntityWatcher hat er dann noch ein .ACTUAL 2. RegisterEntityWatcher für ein und das selbe Item auf der Page.

                                          Ich habe gerade mal in mein Backup von älteren Scripten geschaut, dort waren das noch If Else IF Else If Bedingungen, da könnte ich mir vorstellen das er den RegisterEntityWatcher nur einmal gestartet hat

                                          ArmilarA Offline
                                          ArmilarA Offline
                                          Armilar
                                          Most Active Forum Testing
                                          wrote on last edited by
                                          #1603

                                          @ronny130286

                                          Da hat er leider auch nicht alle Trigger-Events verarbeitet. Ich teste das mal mit einem virtuellen Taster.

                                          Wenn du etwas findest, dann poste es.

                                          Habe in Zeile 4046 noch ein "S" bei ON_SET hinzugefügt. Ist irgendwie verloren gegangen aber für die meisten doch nicht so ganz unwichtig ;--)

                                          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 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          757

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe