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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Wert und vorheriger wert??

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    486

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    616

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Wert und vorheriger wert??

Geplant Angeheftet Gesperrt Verschoben Node-Red
9 Beiträge 3 Kommentatoren 2.8k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • H Offline
    H Offline
    hotte123
    schrieb am zuletzt editiert von
    #1

    Hallo,
    Ich suche schon länger nach einer Lösung, ich will zwei werte vergleichen.
    zb. wenn erster wert >12 soll was geschaltet werden, aber nur wenn vorheriger wert ==0 wie kann ich das realisieren??
    Vielleicht habt ihr ein Paar beispiele??
    In Blockly habe ich es hin bekommen,
    Ich finde die Lösung nicht!!
    Ich habe noch eine frage, wie ist der Eintrag in der Switch-Node vorheriger Wert zu verstehen und wie wird er angewendet???

    Ich hoffe ihr könnt mir weiter helfen!!!
    Schon mal vielen Dank!!!

    mickymM 1 Antwort Letzte Antwort
    0
    • H hotte123

      Hallo,
      Ich suche schon länger nach einer Lösung, ich will zwei werte vergleichen.
      zb. wenn erster wert >12 soll was geschaltet werden, aber nur wenn vorheriger wert ==0 wie kann ich das realisieren??
      Vielleicht habt ihr ein Paar beispiele??
      In Blockly habe ich es hin bekommen,
      Ich finde die Lösung nicht!!
      Ich habe noch eine frage, wie ist der Eintrag in der Switch-Node vorheriger Wert zu verstehen und wie wird er angewendet???

      Ich hoffe ihr könnt mir weiter helfen!!!
      Schon mal vielen Dank!!!

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      @hotte123 der vorige Wert in der Switch Node hilft Dir nur in einem Vergleich, also msg.payload < oder == oder > oder ungleich != dem vorigen Wert.

      In diesem Beispiel wird nur dann 0 durchgelassen, wenn vorher 24 gedrückt wurde, da dann der neue Wert < dem vorigen Wert ist:

      245c295a-7b1b-46bc-b8b6-46ec3aa99ed5-image.png

      [
         {
             "id": "4e74f0c7.34ca6",
             "type": "switch",
             "z": "16458707.0a3859",
             "name": "",
             "property": "payload",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "lt",
                     "v": "",
                     "vt": "prev"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 1,
             "x": 520,
             "y": 2000,
             "wires": [
                 [
                     "dcc1de0d.95ac8"
                 ]
             ]
         },
         {
             "id": "5d22b906.f15ad8",
             "type": "inject",
             "z": "16458707.0a3859",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "24",
             "payloadType": "num",
             "x": 370,
             "y": 1980,
             "wires": [
                 [
                     "4e74f0c7.34ca6"
                 ]
             ]
         },
         {
             "id": "98102916.f4c2a8",
             "type": "inject",
             "z": "16458707.0a3859",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "0",
             "payloadType": "num",
             "x": 370,
             "y": 2040,
             "wires": [
                 [
                     "4e74f0c7.34ca6"
                 ]
             ]
         },
         {
             "id": "dcc1de0d.95ac8",
             "type": "debug",
             "z": "16458707.0a3859",
             "name": "",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "false",
             "statusVal": "",
             "statusType": "auto",
             "x": 690,
             "y": 2000,
             "wires": []
         }
      ]
      

      Für Deinen Fall brauchst Du wirklich eine function Node, die Dir das im Context speichert, da Du ja nicht nur einen Vergleich sondern mit einem absoluten Wert vergleichen willst. Da kannst dann eine Switch Node dran hängen.

      [
         {
             "id": "c90e12de.26582",
             "type": "inject",
             "z": "16458707.0a3859",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "24",
             "payloadType": "num",
             "x": 370,
             "y": 1820,
             "wires": [
                 [
                     "423b1a46.538c34"
                 ]
             ]
         },
         {
             "id": "a802622a.ec1c7",
             "type": "inject",
             "z": "16458707.0a3859",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "0",
             "payloadType": "num",
             "x": 370,
             "y": 1880,
             "wires": [
                 [
                     "423b1a46.538c34"
                 ]
             ]
         },
         {
             "id": "66a3d01c.c6398",
             "type": "switch",
             "z": "16458707.0a3859",
             "name": "",
             "property": "payload",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "gt",
                     "v": "12",
                     "vt": "num"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 1,
             "x": 750,
             "y": 1840,
             "wires": [
                 [
                     "48eab4cf.a6c21c"
                 ]
             ]
         },
         {
             "id": "423b1a46.538c34",
             "type": "function",
             "z": "16458707.0a3859",
             "name": "Check voriger Wert",
             "func": "vorherigerWert = context.get ('previous') || 0;\ncontext.set('previous',msg.payload);\nif (vorherigerWert == 0) return msg; else return null;",
             "outputs": 1,
             "noerr": 0,
             "initialize": "",
             "finalize": "",
             "libs": [],
             "x": 570,
             "y": 1840,
             "wires": [
                 [
                     "66a3d01c.c6398"
                 ]
             ]
         },
         {
             "id": "48eab4cf.a6c21c",
             "type": "debug",
             "z": "16458707.0a3859",
             "name": "",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "false",
             "statusVal": "",
             "statusType": "auto",
             "x": 930,
             "y": 1840,
             "wires": []
         }
      ]
      

      Den Wert der Variablen previous - kannst Du wenn Du die function Node anklickst unter den Kontext daten sehen:

      4d364208-9d18-4594-ac44-33335818ced4-image.png

      Man kann aber auch den vorigen Wert der function Node - in eine andere Eigenschaft mitgeben und dann über die switch Node ausfiltern:

      In diesem Fall wird der vorige Wert in einer Eigenschaft msg.previous gespeichert und kann dann in einer späteren switch Node abgefragt werden - um es damit übersichtlicher für den Flow zu gestalten.

      a19f65d7-14cc-4c0e-a437-c74baee607c4-image.png

      [
         {
             "id": "c90e12de.26582",
             "type": "inject",
             "z": "16458707.0a3859",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "24",
             "payloadType": "num",
             "x": 370,
             "y": 1820,
             "wires": [
                 [
                     "423b1a46.538c34"
                 ]
             ]
         },
         {
             "id": "a802622a.ec1c7",
             "type": "inject",
             "z": "16458707.0a3859",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "0",
             "payloadType": "num",
             "x": 370,
             "y": 1880,
             "wires": [
                 [
                     "423b1a46.538c34"
                 ]
             ]
         },
         {
             "id": "423b1a46.538c34",
             "type": "function",
             "z": "16458707.0a3859",
             "name": "Speicher msg.previous",
             "func": "vorherigerWert = context.get ('previous') || 0;\ncontext.set('previous',msg.payload);\nmsg.previous= vorherigerWert;\nreturn msg;",
             "outputs": 1,
             "noerr": 0,
             "initialize": "",
             "finalize": "",
             "libs": [],
             "x": 580,
             "y": 1840,
             "wires": [
                 [
                     "74c109c5.466ec8"
                 ]
             ]
         },
         {
             "id": "48eab4cf.a6c21c",
             "type": "debug",
             "z": "16458707.0a3859",
             "name": "",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "true",
             "targetType": "full",
             "statusVal": "",
             "statusType": "auto",
             "x": 1150,
             "y": 1840,
             "wires": []
         },
         {
             "id": "74c109c5.466ec8",
             "type": "switch",
             "z": "16458707.0a3859",
             "name": "vorheriger Wert = 0",
             "property": "previous",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "eq",
                     "v": "0",
                     "vt": "num"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 1,
             "x": 810,
             "y": 1840,
             "wires": [
                 [
                     "63e887db.489b48"
                 ]
             ]
         },
         {
             "id": "63e887db.489b48",
             "type": "switch",
             "z": "16458707.0a3859",
             "name": "Nur > 12",
             "property": "payload",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "gt",
                     "v": "12",
                     "vt": "num"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 1,
             "x": 1000,
             "y": 1840,
             "wires": [
                 [
                     "48eab4cf.a6c21c"
                 ]
             ]
         }
      ]
      

      Wenn Du nicht willst, dass der vorangegangene Wert mit 0 initialisiert wird, musst halt was anderes nehmen - sollte aber eine Zahl sein.

      Hier mal die funtion-Node als Code:

      vorherigerWert = context.get ('previous') || 0;
      context.set('previous',msg.payload);
      msg.previous= vorherigerWert;
      return msg;
      

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      H 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @hotte123 der vorige Wert in der Switch Node hilft Dir nur in einem Vergleich, also msg.payload < oder == oder > oder ungleich != dem vorigen Wert.

        In diesem Beispiel wird nur dann 0 durchgelassen, wenn vorher 24 gedrückt wurde, da dann der neue Wert < dem vorigen Wert ist:

        245c295a-7b1b-46bc-b8b6-46ec3aa99ed5-image.png

        [
           {
               "id": "4e74f0c7.34ca6",
               "type": "switch",
               "z": "16458707.0a3859",
               "name": "",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "lt",
                       "v": "",
                       "vt": "prev"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 1,
               "x": 520,
               "y": 2000,
               "wires": [
                   [
                       "dcc1de0d.95ac8"
                   ]
               ]
           },
           {
               "id": "5d22b906.f15ad8",
               "type": "inject",
               "z": "16458707.0a3859",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "24",
               "payloadType": "num",
               "x": 370,
               "y": 1980,
               "wires": [
                   [
                       "4e74f0c7.34ca6"
                   ]
               ]
           },
           {
               "id": "98102916.f4c2a8",
               "type": "inject",
               "z": "16458707.0a3859",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "0",
               "payloadType": "num",
               "x": 370,
               "y": 2040,
               "wires": [
                   [
                       "4e74f0c7.34ca6"
                   ]
               ]
           },
           {
               "id": "dcc1de0d.95ac8",
               "type": "debug",
               "z": "16458707.0a3859",
               "name": "",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "false",
               "statusVal": "",
               "statusType": "auto",
               "x": 690,
               "y": 2000,
               "wires": []
           }
        ]
        

        Für Deinen Fall brauchst Du wirklich eine function Node, die Dir das im Context speichert, da Du ja nicht nur einen Vergleich sondern mit einem absoluten Wert vergleichen willst. Da kannst dann eine Switch Node dran hängen.

        [
           {
               "id": "c90e12de.26582",
               "type": "inject",
               "z": "16458707.0a3859",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "24",
               "payloadType": "num",
               "x": 370,
               "y": 1820,
               "wires": [
                   [
                       "423b1a46.538c34"
                   ]
               ]
           },
           {
               "id": "a802622a.ec1c7",
               "type": "inject",
               "z": "16458707.0a3859",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "0",
               "payloadType": "num",
               "x": 370,
               "y": 1880,
               "wires": [
                   [
                       "423b1a46.538c34"
                   ]
               ]
           },
           {
               "id": "66a3d01c.c6398",
               "type": "switch",
               "z": "16458707.0a3859",
               "name": "",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "gt",
                       "v": "12",
                       "vt": "num"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 1,
               "x": 750,
               "y": 1840,
               "wires": [
                   [
                       "48eab4cf.a6c21c"
                   ]
               ]
           },
           {
               "id": "423b1a46.538c34",
               "type": "function",
               "z": "16458707.0a3859",
               "name": "Check voriger Wert",
               "func": "vorherigerWert = context.get ('previous') || 0;\ncontext.set('previous',msg.payload);\nif (vorherigerWert == 0) return msg; else return null;",
               "outputs": 1,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 570,
               "y": 1840,
               "wires": [
                   [
                       "66a3d01c.c6398"
                   ]
               ]
           },
           {
               "id": "48eab4cf.a6c21c",
               "type": "debug",
               "z": "16458707.0a3859",
               "name": "",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "false",
               "statusVal": "",
               "statusType": "auto",
               "x": 930,
               "y": 1840,
               "wires": []
           }
        ]
        

        Den Wert der Variablen previous - kannst Du wenn Du die function Node anklickst unter den Kontext daten sehen:

        4d364208-9d18-4594-ac44-33335818ced4-image.png

        Man kann aber auch den vorigen Wert der function Node - in eine andere Eigenschaft mitgeben und dann über die switch Node ausfiltern:

        In diesem Fall wird der vorige Wert in einer Eigenschaft msg.previous gespeichert und kann dann in einer späteren switch Node abgefragt werden - um es damit übersichtlicher für den Flow zu gestalten.

        a19f65d7-14cc-4c0e-a437-c74baee607c4-image.png

        [
           {
               "id": "c90e12de.26582",
               "type": "inject",
               "z": "16458707.0a3859",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "24",
               "payloadType": "num",
               "x": 370,
               "y": 1820,
               "wires": [
                   [
                       "423b1a46.538c34"
                   ]
               ]
           },
           {
               "id": "a802622a.ec1c7",
               "type": "inject",
               "z": "16458707.0a3859",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "0",
               "payloadType": "num",
               "x": 370,
               "y": 1880,
               "wires": [
                   [
                       "423b1a46.538c34"
                   ]
               ]
           },
           {
               "id": "423b1a46.538c34",
               "type": "function",
               "z": "16458707.0a3859",
               "name": "Speicher msg.previous",
               "func": "vorherigerWert = context.get ('previous') || 0;\ncontext.set('previous',msg.payload);\nmsg.previous= vorherigerWert;\nreturn msg;",
               "outputs": 1,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 580,
               "y": 1840,
               "wires": [
                   [
                       "74c109c5.466ec8"
                   ]
               ]
           },
           {
               "id": "48eab4cf.a6c21c",
               "type": "debug",
               "z": "16458707.0a3859",
               "name": "",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "true",
               "targetType": "full",
               "statusVal": "",
               "statusType": "auto",
               "x": 1150,
               "y": 1840,
               "wires": []
           },
           {
               "id": "74c109c5.466ec8",
               "type": "switch",
               "z": "16458707.0a3859",
               "name": "vorheriger Wert = 0",
               "property": "previous",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "eq",
                       "v": "0",
                       "vt": "num"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 1,
               "x": 810,
               "y": 1840,
               "wires": [
                   [
                       "63e887db.489b48"
                   ]
               ]
           },
           {
               "id": "63e887db.489b48",
               "type": "switch",
               "z": "16458707.0a3859",
               "name": "Nur > 12",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "gt",
                       "v": "12",
                       "vt": "num"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 1,
               "x": 1000,
               "y": 1840,
               "wires": [
                   [
                       "48eab4cf.a6c21c"
                   ]
               ]
           }
        ]
        

        Wenn Du nicht willst, dass der vorangegangene Wert mit 0 initialisiert wird, musst halt was anderes nehmen - sollte aber eine Zahl sein.

        Hier mal die funtion-Node als Code:

        vorherigerWert = context.get ('previous') || 0;
        context.set('previous',msg.payload);
        msg.previous= vorherigerWert;
        return msg;
        
        H Offline
        H Offline
        hotte123
        schrieb am zuletzt editiert von
        #3

        @mickym

        Hallo mickym, vielen dank für die schnelle Antwort, ich bin echt beeindruckt von deiner Lösung!!!
        Ich werde das jetzt in mein Flow einbauen und schauen wie es Funktioniert!!
        Ich hätte noch eine Frage, ich habe einen wert zb. 1.70 wie kann ich den Punkt durch ein anderes Zeichen zb. euro ersetzen, ich möchte mir gerne den Sprit preis mit Alexa ansagen lasse, aber 1punkt siebennull ist nicht gerade schön, ein euro siebzig wäre schöner??

        mickymM 1 Antwort Letzte Antwort
        0
        • H hotte123

          @mickym

          Hallo mickym, vielen dank für die schnelle Antwort, ich bin echt beeindruckt von deiner Lösung!!!
          Ich werde das jetzt in mein Flow einbauen und schauen wie es Funktioniert!!
          Ich hätte noch eine Frage, ich habe einen wert zb. 1.70 wie kann ich den Punkt durch ein anderes Zeichen zb. euro ersetzen, ich möchte mir gerne den Sprit preis mit Alexa ansagen lasse, aber 1punkt siebennull ist nicht gerade schön, ein euro siebzig wäre schöner??

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #4

          @hotte123

          c4f356aa-04d2-4236-ab53-3535fd60679b-image.png

          [
             {
                 "id": "eced96f2.ea9648",
                 "type": "change",
                 "z": "16458707.0a3859",
                 "name": "",
                 "rules": [
                     {
                         "t": "set",
                         "p": "payload",
                         "pt": "msg",
                         "to": "$replace($formatNumber(payload, \"#.00\"), '.', ' Euro ')\t",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 780,
                 "y": 1740,
                 "wires": [
                     [
                         "4acd9124.8ceae"
                     ]
                 ]
             },
             {
                 "id": "38f4bef3.2fbdc2",
                 "type": "inject",
                 "z": "16458707.0a3859",
                 "name": "",
                 "props": [
                     {
                         "p": "payload"
                     }
                 ],
                 "repeat": "",
                 "crontab": "",
                 "once": false,
                 "onceDelay": 0.1,
                 "topic": "",
                 "payload": "1.70",
                 "payloadType": "num",
                 "x": 560,
                 "y": 1740,
                 "wires": [
                     [
                         "eced96f2.ea9648"
                     ]
                 ]
             },
             {
                 "id": "4acd9124.8ceae",
                 "type": "debug",
                 "z": "16458707.0a3859",
                 "name": "",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "false",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 1010,
                 "y": 1740,
                 "wires": []
             }
          ]
          

          Wenn Du aber das ganze in einen größeren Textzusammenhang bringen möchtest empfehle ich die Template Node.

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          H 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @hotte123

            c4f356aa-04d2-4236-ab53-3535fd60679b-image.png

            [
               {
                   "id": "eced96f2.ea9648",
                   "type": "change",
                   "z": "16458707.0a3859",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "$replace($formatNumber(payload, \"#.00\"), '.', ' Euro ')\t",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 780,
                   "y": 1740,
                   "wires": [
                       [
                           "4acd9124.8ceae"
                       ]
                   ]
               },
               {
                   "id": "38f4bef3.2fbdc2",
                   "type": "inject",
                   "z": "16458707.0a3859",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "1.70",
                   "payloadType": "num",
                   "x": 560,
                   "y": 1740,
                   "wires": [
                       [
                           "eced96f2.ea9648"
                       ]
                   ]
               },
               {
                   "id": "4acd9124.8ceae",
                   "type": "debug",
                   "z": "16458707.0a3859",
                   "name": "",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "false",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 1010,
                   "y": 1740,
                   "wires": []
               }
            ]
            

            Wenn Du aber das ganze in einen größeren Textzusammenhang bringen möchtest empfehle ich die Template Node.

            H Offline
            H Offline
            hotte123
            schrieb am zuletzt editiert von
            #5

            @mickym
            Hallo mickym, nochmals vielen Dank für deine Hilfe, dir scheint das alles leicht von der Hand zu gehen!!!
            Ich habe mich mit JSONata beschäftigt, aber den Durchblick habe ich nicht bekommen, alles auf English, deutsche Anleitung Fehlanzeige!!
            Ich werde mich versuchen weiter durch zu kämpfen, aber ab einem gewissen alter ist das nicht mehr so einfach :)
            Danke nochmals!!!!

            mickymM 2 Antworten Letzte Antwort
            0
            • H hotte123

              @mickym
              Hallo mickym, nochmals vielen Dank für deine Hilfe, dir scheint das alles leicht von der Hand zu gehen!!!
              Ich habe mich mit JSONata beschäftigt, aber den Durchblick habe ich nicht bekommen, alles auf English, deutsche Anleitung Fehlanzeige!!
              Ich werde mich versuchen weiter durch zu kämpfen, aber ab einem gewissen alter ist das nicht mehr so einfach :)
              Danke nochmals!!!!

              mickymM Online
              mickymM Online
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @hotte123 Hier nochmal ein Beispiel mit einer Template Node - wenn Du das ganze in einen größeren Textzusammenhang stellen möchtest:

              e55d1e46-b415-45ad-922e-50e9439504d8-image.png

              [
                 {
                     "id": "38f4bef3.2fbdc2",
                     "type": "inject",
                     "z": "16458707.0a3859",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "1.70",
                     "payloadType": "num",
                     "x": 570,
                     "y": 1860,
                     "wires": [
                         [
                             "67cc48a3.132838"
                         ]
                     ]
                 },
                 {
                     "id": "792f52c1.cf0c3c",
                     "type": "template",
                     "z": "16458707.0a3859",
                     "name": "",
                     "field": "payload",
                     "fieldType": "msg",
                     "format": "json",
                     "syntax": "mustache",
                     "template": "Der aktuelle Dieselpreis beträgt {{euro}} Euro und {{cent}} Cent!",
                     "output": "str",
                     "x": 1000,
                     "y": 1860,
                     "wires": [
                         [
                             "828c85ad.c0dd58"
                         ]
                     ]
                 },
                 {
                     "id": "828c85ad.c0dd58",
                     "type": "debug",
                     "z": "16458707.0a3859",
                     "name": "",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1230,
                     "y": 1860,
                     "wires": []
                 },
                 {
                     "id": "67cc48a3.132838",
                     "type": "change",
                     "z": "16458707.0a3859",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload*100",
                             "tot": "jsonata"
                         },
                         {
                             "t": "set",
                             "p": "euro",
                             "pt": "msg",
                             "to": "$floor(payload/100)",
                             "tot": "jsonata"
                         },
                         {
                             "t": "set",
                             "p": "cent",
                             "pt": "msg",
                             "to": "payload%100",
                             "tot": "jsonata"
                         },
                         {
                             "t": "delete",
                             "p": "payload",
                             "pt": "msg"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 750,
                     "y": 1860,
                     "wires": [
                         [
                             "792f52c1.cf0c3c"
                         ]
                     ]
                 }
              ]
              

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              1 Antwort Letzte Antwort
              0
              • H hotte123

                @mickym
                Hallo mickym, nochmals vielen Dank für deine Hilfe, dir scheint das alles leicht von der Hand zu gehen!!!
                Ich habe mich mit JSONata beschäftigt, aber den Durchblick habe ich nicht bekommen, alles auf English, deutsche Anleitung Fehlanzeige!!
                Ich werde mich versuchen weiter durch zu kämpfen, aber ab einem gewissen alter ist das nicht mehr so einfach :)
                Danke nochmals!!!!

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #7

                @hotte123 sagte in Wert und vorheriger wert??:

                @mickym
                Hallo mickym, nochmals vielen Dank für deine Hilfe, dir scheint das alles leicht von der Hand zu gehen!!!
                Ich habe mich mit JSONata beschäftigt, aber den Durchblick habe ich nicht bekommen, alles auf English, deutsche Anleitung Fehlanzeige!!
                Ich werde mich versuchen weiter durch zu kämpfen, aber ab einem gewissen alter ist das nicht mehr so einfach :)
                Danke nochmals!!!!

                Wenn Du auf die 3 Punkte klickst - die Anleitung ist zwar nicht besonders gut und ausführlich, aber hilft in den meisten Fällen.
                Über das DropDown kannst verfügbare Funktionen auswählen und diese sind dann auch auf Deutsch beschreiben:

                8097dce9-7b5f-4bc1-aacb-3986c5f7ef7f-image.png

                Über das Testfenster kannst Du dann prüfen, wenn Du die payload zu dem von Dir erwarteten Werten abänderst, ob das Ergebnis rauskommt:

                96b65a3f-e5f5-44aa-b675-4c99d666d1d3-image.png

                Ich hab auch mal mit den Format-Optionen bei den Zahlen etwas rumgespielt und die Syntax soweit rausbekommen, wie man Kommas als Dezimalzeichen bekommt - allerdings kann man damit nicht rechnen, aber für die Darstellung ggf. auch interessant:

                628e1f91-f4a6-485c-81f5-730fc8bf339c-image.png

                Man muss dann aber schon in den Formatstring das Komma verwenden auch wenn die payload noch mit Punkt als Zahl rein kommt.

                [
                    {
                        "id": "eced96f2.ea9648",
                        "type": "change",
                        "z": "6e170384.60c96c",
                        "name": "Zahlen mit 2 Dezimalzahlen und Komma",
                        "rules": [
                            {
                                "t": "set",
                                "p": "payload",
                                "pt": "msg",
                                "to": "$formatNumber(payload, \"#.##0,00\", {'decimal-separator':',', 'grouping-separator':'.'} )\t",
                                "tot": "jsonata"
                            }
                        ],
                        "action": "",
                        "property": "",
                        "from": "",
                        "to": "",
                        "reg": false,
                        "x": 3680,
                        "y": 4280,
                        "wires": [
                            [
                                "bf7a7a83.a06298"
                            ]
                        ]
                    }
                ]
                

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                mickymM 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @hotte123 sagte in Wert und vorheriger wert??:

                  @mickym
                  Hallo mickym, nochmals vielen Dank für deine Hilfe, dir scheint das alles leicht von der Hand zu gehen!!!
                  Ich habe mich mit JSONata beschäftigt, aber den Durchblick habe ich nicht bekommen, alles auf English, deutsche Anleitung Fehlanzeige!!
                  Ich werde mich versuchen weiter durch zu kämpfen, aber ab einem gewissen alter ist das nicht mehr so einfach :)
                  Danke nochmals!!!!

                  Wenn Du auf die 3 Punkte klickst - die Anleitung ist zwar nicht besonders gut und ausführlich, aber hilft in den meisten Fällen.
                  Über das DropDown kannst verfügbare Funktionen auswählen und diese sind dann auch auf Deutsch beschreiben:

                  8097dce9-7b5f-4bc1-aacb-3986c5f7ef7f-image.png

                  Über das Testfenster kannst Du dann prüfen, wenn Du die payload zu dem von Dir erwarteten Werten abänderst, ob das Ergebnis rauskommt:

                  96b65a3f-e5f5-44aa-b675-4c99d666d1d3-image.png

                  Ich hab auch mal mit den Format-Optionen bei den Zahlen etwas rumgespielt und die Syntax soweit rausbekommen, wie man Kommas als Dezimalzeichen bekommt - allerdings kann man damit nicht rechnen, aber für die Darstellung ggf. auch interessant:

                  628e1f91-f4a6-485c-81f5-730fc8bf339c-image.png

                  Man muss dann aber schon in den Formatstring das Komma verwenden auch wenn die payload noch mit Punkt als Zahl rein kommt.

                  [
                      {
                          "id": "eced96f2.ea9648",
                          "type": "change",
                          "z": "6e170384.60c96c",
                          "name": "Zahlen mit 2 Dezimalzahlen und Komma",
                          "rules": [
                              {
                                  "t": "set",
                                  "p": "payload",
                                  "pt": "msg",
                                  "to": "$formatNumber(payload, \"#.##0,00\", {'decimal-separator':',', 'grouping-separator':'.'} )\t",
                                  "tot": "jsonata"
                              }
                          ],
                          "action": "",
                          "property": "",
                          "from": "",
                          "to": "",
                          "reg": false,
                          "x": 3680,
                          "y": 4280,
                          "wires": [
                              [
                                  "bf7a7a83.a06298"
                              ]
                          ]
                      }
                  ]
                  
                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  Noch eine Ergänzug - mit der $formatNumber Funktion kann man sich auch die Stringverkettung sparen.

                  207e6adc-d3d1-40ac-94f7-692e9dc47700-image.png

                  [
                     {
                         "id": "c29e7b3f.165058",
                         "type": "change",
                         "z": "6e170384.60c96c",
                         "name": "Zahlen in Euro",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$formatNumber(payload, \"0,00 Euro\", {'decimal-separator':',', 'grouping-separator':'.'} )\t",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 3600,
                         "y": 4100,
                         "wires": [
                             [
                                 "2d1e27c5.f03cc8"
                             ]
                         ]
                     },
                     {
                         "id": "22abbdf1.199262",
                         "type": "inject",
                         "z": "6e170384.60c96c",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "1.50",
                         "payloadType": "num",
                         "x": 3400,
                         "y": 4140,
                         "wires": [
                             [
                                 "c29e7b3f.165058",
                                 "fb5b593c.6fc458"
                             ]
                         ]
                     },
                     {
                         "id": "2d1e27c5.f03cc8",
                         "type": "debug",
                         "z": "6e170384.60c96c",
                         "name": "",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 3810,
                         "y": 4140,
                         "wires": []
                     },
                     {
                         "id": "fb5b593c.6fc458",
                         "type": "change",
                         "z": "6e170384.60c96c",
                         "name": "Zahlen in €",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$formatNumber(payload, \"0,00 €\", {'decimal-separator':',', 'grouping-separator':'.'} )\t",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 3590,
                         "y": 4160,
                         "wires": [
                             [
                                 "2d1e27c5.f03cc8"
                             ]
                         ]
                     }
                  ]
                  

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  1 Antwort Letzte Antwort
                  0
                  • bahnuhrB Online
                    bahnuhrB Online
                    bahnuhr
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von bahnuhr
                    #9

                    @hotte123

                    Du willst doch nur den neuen/aktuellen Wert mit dem alten Wert vergleichen. Warum nicht ein kleines Script?
                    Bei blockly und node bin ich raus.

                    Anbei mal ein kleines Script:

                    on({id: "object-id", change: "ne"}, function(obj) { 
                            log ("ID geändert: alt= " + obj.oldState.val + "; neu= " + obj.state.val);
                            if (obj.state.val > 12 && obj.oldState.val == 0) {
                                // etwas ausführen
                            }  
                    });
                    

                    mfg


                    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                    Danke.
                    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                    ScreenToGif :https://www.screentogif.com/downloads.html

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


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    696

                    Online

                    32.6k

                    Benutzer

                    81.9k

                    Themen

                    1.3m

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

                    • Du hast noch kein Konto? Registrieren

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