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. JSON String in Template Node richtig darstellen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

JSON String in Template Node richtig darstellen

Geplant Angeheftet Gesperrt Verschoben Node-Red
7 Beiträge 2 Kommentatoren 582 Aufrufe 2 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.
  • _ Offline
    _ Offline
    _R_A_L_F_
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich bekomme vom Device Watcher Adapter im JSON Format die entsprechenden Devices, welche Battery Low haben.

    Die zwei Werte (Gerätename + Batterie Stand) möchte ich nun in einem Template Node darstellen.

    Allerdings zeigt er mir die Werte verständlicherweise (die beiden Werte gemäß der Filterung hintereinander) wie folgt an:
    "Der Batteriezustand von Gerät1,Gerät2 (57%,50%) erreicht einen kritischen Wert!"

    Ich möchte es aber so dargestellt haben:
    "Der Batteriezustand von Gerät1 (57%), Gerät2 (50%) erreicht einen kritischen Wert!"

    Da es hier bestimmt auch eine Lösung mit JSONata gibt aber ich da noch nicht so fit bin, weißt du @mickym vielleicht ja die Lösung?

    Hier mein aktueller Flow:


    [
    {
    "id": "1da12527d3e1843f",
    "type": "tab",
    "label": "Flow 1",
    "disabled": false,
    "info": "",
    "env": []
    },
    {
    "id": "c169efb724969657",
    "type": "template",
    "z": "1da12527d3e1843f",
    "name": "Mail-Inhalt",
    "field": "payload",
    "fieldType": "msg",
    "format": "handlebars",
    "syntax": "mustache",
    "template": "Der Batteriezustand von {{payload.Device}} ({{payload.Battery}}) erreicht einen kritischen Wert!",
    "output": "str",
    "x": 1010,
    "y": 220,
    "wires": [
    [
    "88f9223b01ab08fd"
    ]
    ]
    },
    {
    "id": "a2c52a446f37f88d",
    "type": "change",
    "z": "1da12527d3e1843f",
    "name": "Filtere JSON",
    "rules": [
    {
    "t": "set",
    "p": "payload.Device",
    "pt": "msg",
    "to": "payload.Device",
    "tot": "jsonata"
    },
    {
    "t": "set",
    "p": "payload.Battery",
    "pt": "msg",
    "to": "payload.Battery",
    "tot": "jsonata"
    }
    ],
    "action": "",
    "property": "",
    "from": "",
    "to": "",
    "reg": false,
    "x": 790,
    "y": 220,
    "wires": [
    [
    "c169efb724969657"
    ]
    ]
    },
    {
    "id": "a0cd2bf8b245d058",
    "type": "json",
    "z": "1da12527d3e1843f",
    "name": "",
    "property": "payload",
    "action": "",
    "pretty": false,
    "x": 610,
    "y": 220,
    "wires": [
    [
    "a2c52a446f37f88d"
    ]
    ]
    },
    {
    "id": "88f9223b01ab08fd",
    "type": "debug",
    "z": "1da12527d3e1843f",
    "name": "debug 36",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "false",
    "statusVal": "",
    "statusType": "auto",
    "x": 1200,
    "y": 220,
    "wires": []
    },
    {
    "id": "e564bd6bd0b59b98",
    "type": "inject",
    "z": "1da12527d3e1843f",
    "name": "",
    "props": [
    {
    "p": "payload"
    },
    {
    "p": "topic",
    "vt": "str"
    }
    ],
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": 0.1,
    "topic": "",
    "payload": "[{"Device":"Gerät1","Adapter":"Zigbee","Battery":"57%"},{"Device":"Gerät2","Adapter":"Zigbee","Battery":"50%"}]",
    "payloadType": "str",
    "x": 430,
    "y": 220,
    "wires": [
    [
    "a0cd2bf8b245d058"
    ]
    ]
    }
    ]

    SG

    mickymM 1 Antwort Letzte Antwort
    0
    • _ _R_A_L_F_

      Hallo zusammen,

      ich bekomme vom Device Watcher Adapter im JSON Format die entsprechenden Devices, welche Battery Low haben.

      Die zwei Werte (Gerätename + Batterie Stand) möchte ich nun in einem Template Node darstellen.

      Allerdings zeigt er mir die Werte verständlicherweise (die beiden Werte gemäß der Filterung hintereinander) wie folgt an:
      "Der Batteriezustand von Gerät1,Gerät2 (57%,50%) erreicht einen kritischen Wert!"

      Ich möchte es aber so dargestellt haben:
      "Der Batteriezustand von Gerät1 (57%), Gerät2 (50%) erreicht einen kritischen Wert!"

      Da es hier bestimmt auch eine Lösung mit JSONata gibt aber ich da noch nicht so fit bin, weißt du @mickym vielleicht ja die Lösung?

      Hier mein aktueller Flow:


      [
      {
      "id": "1da12527d3e1843f",
      "type": "tab",
      "label": "Flow 1",
      "disabled": false,
      "info": "",
      "env": []
      },
      {
      "id": "c169efb724969657",
      "type": "template",
      "z": "1da12527d3e1843f",
      "name": "Mail-Inhalt",
      "field": "payload",
      "fieldType": "msg",
      "format": "handlebars",
      "syntax": "mustache",
      "template": "Der Batteriezustand von {{payload.Device}} ({{payload.Battery}}) erreicht einen kritischen Wert!",
      "output": "str",
      "x": 1010,
      "y": 220,
      "wires": [
      [
      "88f9223b01ab08fd"
      ]
      ]
      },
      {
      "id": "a2c52a446f37f88d",
      "type": "change",
      "z": "1da12527d3e1843f",
      "name": "Filtere JSON",
      "rules": [
      {
      "t": "set",
      "p": "payload.Device",
      "pt": "msg",
      "to": "payload.Device",
      "tot": "jsonata"
      },
      {
      "t": "set",
      "p": "payload.Battery",
      "pt": "msg",
      "to": "payload.Battery",
      "tot": "jsonata"
      }
      ],
      "action": "",
      "property": "",
      "from": "",
      "to": "",
      "reg": false,
      "x": 790,
      "y": 220,
      "wires": [
      [
      "c169efb724969657"
      ]
      ]
      },
      {
      "id": "a0cd2bf8b245d058",
      "type": "json",
      "z": "1da12527d3e1843f",
      "name": "",
      "property": "payload",
      "action": "",
      "pretty": false,
      "x": 610,
      "y": 220,
      "wires": [
      [
      "a2c52a446f37f88d"
      ]
      ]
      },
      {
      "id": "88f9223b01ab08fd",
      "type": "debug",
      "z": "1da12527d3e1843f",
      "name": "debug 36",
      "active": true,
      "tosidebar": true,
      "console": false,
      "tostatus": false,
      "complete": "false",
      "statusVal": "",
      "statusType": "auto",
      "x": 1200,
      "y": 220,
      "wires": []
      },
      {
      "id": "e564bd6bd0b59b98",
      "type": "inject",
      "z": "1da12527d3e1843f",
      "name": "",
      "props": [
      {
      "p": "payload"
      },
      {
      "p": "topic",
      "vt": "str"
      }
      ],
      "repeat": "",
      "crontab": "",
      "once": false,
      "onceDelay": 0.1,
      "topic": "",
      "payload": "[{"Device":"Gerät1","Adapter":"Zigbee","Battery":"57%"},{"Device":"Gerät2","Adapter":"Zigbee","Battery":"50%"}]",
      "payloadType": "str",
      "x": 430,
      "y": 220,
      "wires": [
      [
      "a0cd2bf8b245d058"
      ]
      ]
      }
      ]

      SG

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

      @_r_a_l_f_ Wenn ihr Euch bitte angewöhnen könnt, Code auch in CodeTags zu setzen, dann kann man damit was anfangen. So aber nicht.

      Code-Tags.gif

      Dann bekommt man nur Mist - weil der Browser interpretiert und man muss sich alles manuell selektieren.
      Das Ergebnis sieht dann so aus:

      459c56ca-357d-43f6-af2c-1003049abdb1-image.png

      Ich geh aber mal davon aus, dass dieses Array als Daten eingebunden werden soll?

      [{"Device":"Gerät1","Adapter":"Zigbee","Battery":"57%"},{"Device":"Gerät2","Adapter":"Zigbee","Battery":"50%"}]
      

      Tipp:

      Am sichersten, dass es funktioniert ist, wenn man das was man im Thread veröffentlicht, auch mal versucht selbst zu importieren. :face_with_rolling_eyes:

      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 _ 2 Antworten Letzte Antwort
      0
      • mickymM mickym

        @_r_a_l_f_ Wenn ihr Euch bitte angewöhnen könnt, Code auch in CodeTags zu setzen, dann kann man damit was anfangen. So aber nicht.

        Code-Tags.gif

        Dann bekommt man nur Mist - weil der Browser interpretiert und man muss sich alles manuell selektieren.
        Das Ergebnis sieht dann so aus:

        459c56ca-357d-43f6-af2c-1003049abdb1-image.png

        Ich geh aber mal davon aus, dass dieses Array als Daten eingebunden werden soll?

        [{"Device":"Gerät1","Adapter":"Zigbee","Battery":"57%"},{"Device":"Gerät2","Adapter":"Zigbee","Battery":"50%"}]
        

        Tipp:

        Am sichersten, dass es funktioniert ist, wenn man das was man im Thread veröffentlicht, auch mal versucht selbst zu importieren. :face_with_rolling_eyes:

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

        @_r_a_l_f_ sagte in JSON String in Template Node richtig darstellen:

        Da es hier bestimmt auch eine Lösung mit JSONata gibt

        payload.{"Device" : Device & " (" & Battery & ")"}.Device~>$join(", ")
        

        Aber man braucht nicht unbedingt JSONATA :sob: :sob: :sob: - das macht die Template Node aufgrund der mächtigen Angular Bibliothek von selbst. Allerdings muss man aufgrund des Satzbaus das Komma wieder manuell wegmachen - insofern kommt es auf das Gleiche raus, ob man die payload vor oder nach der template Node bearbeitet .

        da0dfd59-7de6-43ea-887e-63138a53bd6f-image.png

        [
           {
               "id": "ef75720b1a71bf20",
               "type": "inject",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "[{\"Device\":\"Gerät1\",\"Adapter\":\"Zigbee\",\"Battery\":\"57%\"},{\"Device\":\"Gerät2\",\"Adapter\":\"Zigbee\",\"Battery\":\"50%\"}]",
               "payloadType": "json",
               "x": 230,
               "y": 180,
               "wires": [
                   [
                       "ae9de2e6db70ec69",
                       "93dc32f8450adc37",
                       "c55c281c7cb2915e"
                   ]
               ]
           },
           {
               "id": "ae9de2e6db70ec69",
               "type": "template",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "field": "payload",
               "fieldType": "msg",
               "format": "handlebars",
               "syntax": "mustache",
               "template": "Der Batteriezustand von {{#payload}}{{Device}} ({{Battery}}), {{/payload}}erreicht einen kritischen Wert!",
               "output": "str",
               "x": 380,
               "y": 140,
               "wires": [
                   [
                       "988a5707fe883b52"
                   ]
               ]
           },
           {
               "id": "93dc32f8450adc37",
               "type": "debug",
               "z": "517cd16e4d7e6ae4",
               "name": "Eingabe",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 400,
               "y": 180,
               "wires": []
           },
           {
               "id": "5817f636b1aec86a",
               "type": "debug",
               "z": "517cd16e4d7e6ae4",
               "name": "Ausgabe",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 780,
               "y": 180,
               "wires": []
           },
           {
               "id": "988a5707fe883b52",
               "type": "change",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "rules": [
                   {
                       "t": "change",
                       "p": "payload",
                       "pt": "msg",
                       "from": ", erreicht",
                       "fromt": "str",
                       "to": " erreicht",
                       "tot": "str"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 580,
               "y": 140,
               "wires": [
                   [
                       "5817f636b1aec86a"
                   ]
               ]
           },
           {
               "id": "c55c281c7cb2915e",
               "type": "change",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "payload.{\"Device\" : Device & \" (\" & Battery & \")\"}.Device~>$join(\", \")",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 410,
               "y": 220,
               "wires": [
                   [
                       "60763b5ce4fdcf48"
                   ]
               ]
           },
           {
               "id": "60763b5ce4fdcf48",
               "type": "template",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "field": "payload",
               "fieldType": "msg",
               "format": "handlebars",
               "syntax": "mustache",
               "template": "Der Batteriezustand von {{payload}} erreicht einen kritischen Wert!",
               "output": "str",
               "x": 620,
               "y": 220,
               "wires": [
                   [
                       "5817f636b1aec86a"
                   ]
               ]
           }
        ]
        

        Wenn man sich sowas hingegen HTML formatiert als Tabelle für eine e-Mail oder eine Webseite oder template Node ausgeben lassen will - dann kommt man auch nur mit der template Node hin.

        d5a7e117-3ebc-44e4-8019-439c54329a37-image.png

        ist jetzt nicht superschön - aber dient nur zur Demo, dass man dann alles in einer Template Node abhandeln kann (wenn man nicht auf deutsche Grammatik Rücksicht nehmen muss. :) ) - Dann braucht es auch kein JSONATA. :face_with_rolling_eyes: :face_with_rolling_eyes: :face_with_rolling_eyes: :sob: :flushed:

        c69ee5f4-c89f-4767-83e6-b8155143f383-image.png

        [
           {
               "id": "2500550bf4260472",
               "type": "debug",
               "z": "517cd16e4d7e6ae4",
               "name": "HTML Tabelle",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 640,
               "y": 440,
               "wires": []
           },
           {
               "id": "83a2de4af3c4d7d3",
               "type": "inject",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "Test",
               "payload": "[{\"Device\":\"Gerät1\",\"Adapter\":\"Zigbee\",\"Battery\":\"57%\"},{\"Device\":\"Gerät2\",\"Adapter\":\"Zigbee\",\"Battery\":\"50%\"}]",
               "payloadType": "json",
               "x": 310,
               "y": 440,
               "wires": [
                   [
                       "e88eb3fa7c14f96e"
                   ]
               ]
           },
           {
               "id": "e88eb3fa7c14f96e",
               "type": "template",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "field": "payload",
               "fieldType": "msg",
               "format": "handlebars",
               "syntax": "mustache",
               "template": "<style>\n    table,\n    th,\n    td {\n        border: 1px solid black;\n        border-collapse: collapse;\n    }\n\n    th,\n    td {\n        padding: 5px;\n        text-align: center;\n    }\n</style>\n\n<center>\n    <h3>Für folgende Geräte erreicht der Batteriezustand ein kritisches Niveau:</h3>\n    <table>\n        <tr>\n            <th>Gerät</th>\n            <th>Batteriezustand</th>\n        </tr>\n        {{#payload}}\n        <tr>\n            <td>{{Device}}</td>\n            <td>{{Battery}}</td>\n        </tr>\n        {{/payload}}\n    </table>\n</center>",
               "output": "str",
               "x": 460,
               "y": 440,
               "wires": [
                   [
                       "2500550bf4260472"
                   ]
               ]
           }
        ]
        

        Das geht natürlich auch als reiner Text (wie gesagt - die zusätzlich Node war nur wegen der Grammatik notwendig)

        77a803e5-b286-43be-8518-89cf98c70932-image.png

        [
           {
               "id": "32cf0e766d1b9a85",
               "type": "debug",
               "z": "517cd16e4d7e6ae4",
               "name": "Test",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 550,
               "y": 680,
               "wires": []
           },
           {
               "id": "d3c52e80d77fc3ee",
               "type": "inject",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "Test",
               "payload": "[{\"Device\":\"Gerät1\",\"Adapter\":\"Zigbee\",\"Battery\":\"57%\"},{\"Device\":\"Gerät2\",\"Adapter\":\"Zigbee\",\"Battery\":\"50%\"}]",
               "payloadType": "json",
               "x": 250,
               "y": 680,
               "wires": [
                   [
                       "da27b511ccda886d"
                   ]
               ]
           },
           {
               "id": "da27b511ccda886d",
               "type": "template",
               "z": "517cd16e4d7e6ae4",
               "name": "",
               "field": "payload",
               "fieldType": "msg",
               "format": "handlebars",
               "syntax": "mustache",
               "template": "Folgende Geräte weisen ein kritisches Batterieniveau auf:\n{{#payload}}\n{{Device}} mit {{Battery}} der Batteriekapazität\n{{/payload}}\n",
               "output": "str",
               "x": 400,
               "y": 680,
               "wires": [
                   [
                       "32cf0e766d1b9a85"
                   ]
               ]
           }
        ]
        

        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
        • mickymM mickym

          @_r_a_l_f_ Wenn ihr Euch bitte angewöhnen könnt, Code auch in CodeTags zu setzen, dann kann man damit was anfangen. So aber nicht.

          Code-Tags.gif

          Dann bekommt man nur Mist - weil der Browser interpretiert und man muss sich alles manuell selektieren.
          Das Ergebnis sieht dann so aus:

          459c56ca-357d-43f6-af2c-1003049abdb1-image.png

          Ich geh aber mal davon aus, dass dieses Array als Daten eingebunden werden soll?

          [{"Device":"Gerät1","Adapter":"Zigbee","Battery":"57%"},{"Device":"Gerät2","Adapter":"Zigbee","Battery":"50%"}]
          

          Tipp:

          Am sichersten, dass es funktioniert ist, wenn man das was man im Thread veröffentlicht, auch mal versucht selbst zu importieren. :face_with_rolling_eyes:

          _ Offline
          _ Offline
          _R_A_L_F_
          schrieb am zuletzt editiert von
          #4

          @mickym Oh je, das tut mir leid :( Da schaue ich nächstes mal drauf, dass das nicht mehr passiert.

          1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @_r_a_l_f_ sagte in JSON String in Template Node richtig darstellen:

            Da es hier bestimmt auch eine Lösung mit JSONata gibt

            payload.{"Device" : Device & " (" & Battery & ")"}.Device~>$join(", ")
            

            Aber man braucht nicht unbedingt JSONATA :sob: :sob: :sob: - das macht die Template Node aufgrund der mächtigen Angular Bibliothek von selbst. Allerdings muss man aufgrund des Satzbaus das Komma wieder manuell wegmachen - insofern kommt es auf das Gleiche raus, ob man die payload vor oder nach der template Node bearbeitet .

            da0dfd59-7de6-43ea-887e-63138a53bd6f-image.png

            [
               {
                   "id": "ef75720b1a71bf20",
                   "type": "inject",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "[{\"Device\":\"Gerät1\",\"Adapter\":\"Zigbee\",\"Battery\":\"57%\"},{\"Device\":\"Gerät2\",\"Adapter\":\"Zigbee\",\"Battery\":\"50%\"}]",
                   "payloadType": "json",
                   "x": 230,
                   "y": 180,
                   "wires": [
                       [
                           "ae9de2e6db70ec69",
                           "93dc32f8450adc37",
                           "c55c281c7cb2915e"
                       ]
                   ]
               },
               {
                   "id": "ae9de2e6db70ec69",
                   "type": "template",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "field": "payload",
                   "fieldType": "msg",
                   "format": "handlebars",
                   "syntax": "mustache",
                   "template": "Der Batteriezustand von {{#payload}}{{Device}} ({{Battery}}), {{/payload}}erreicht einen kritischen Wert!",
                   "output": "str",
                   "x": 380,
                   "y": 140,
                   "wires": [
                       [
                           "988a5707fe883b52"
                       ]
                   ]
               },
               {
                   "id": "93dc32f8450adc37",
                   "type": "debug",
                   "z": "517cd16e4d7e6ae4",
                   "name": "Eingabe",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 400,
                   "y": 180,
                   "wires": []
               },
               {
                   "id": "5817f636b1aec86a",
                   "type": "debug",
                   "z": "517cd16e4d7e6ae4",
                   "name": "Ausgabe",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 780,
                   "y": 180,
                   "wires": []
               },
               {
                   "id": "988a5707fe883b52",
                   "type": "change",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "rules": [
                       {
                           "t": "change",
                           "p": "payload",
                           "pt": "msg",
                           "from": ", erreicht",
                           "fromt": "str",
                           "to": " erreicht",
                           "tot": "str"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 580,
                   "y": 140,
                   "wires": [
                       [
                           "5817f636b1aec86a"
                       ]
                   ]
               },
               {
                   "id": "c55c281c7cb2915e",
                   "type": "change",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload.{\"Device\" : Device & \" (\" & Battery & \")\"}.Device~>$join(\", \")",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 410,
                   "y": 220,
                   "wires": [
                       [
                           "60763b5ce4fdcf48"
                       ]
                   ]
               },
               {
                   "id": "60763b5ce4fdcf48",
                   "type": "template",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "field": "payload",
                   "fieldType": "msg",
                   "format": "handlebars",
                   "syntax": "mustache",
                   "template": "Der Batteriezustand von {{payload}} erreicht einen kritischen Wert!",
                   "output": "str",
                   "x": 620,
                   "y": 220,
                   "wires": [
                       [
                           "5817f636b1aec86a"
                       ]
                   ]
               }
            ]
            

            Wenn man sich sowas hingegen HTML formatiert als Tabelle für eine e-Mail oder eine Webseite oder template Node ausgeben lassen will - dann kommt man auch nur mit der template Node hin.

            d5a7e117-3ebc-44e4-8019-439c54329a37-image.png

            ist jetzt nicht superschön - aber dient nur zur Demo, dass man dann alles in einer Template Node abhandeln kann (wenn man nicht auf deutsche Grammatik Rücksicht nehmen muss. :) ) - Dann braucht es auch kein JSONATA. :face_with_rolling_eyes: :face_with_rolling_eyes: :face_with_rolling_eyes: :sob: :flushed:

            c69ee5f4-c89f-4767-83e6-b8155143f383-image.png

            [
               {
                   "id": "2500550bf4260472",
                   "type": "debug",
                   "z": "517cd16e4d7e6ae4",
                   "name": "HTML Tabelle",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 640,
                   "y": 440,
                   "wires": []
               },
               {
                   "id": "83a2de4af3c4d7d3",
                   "type": "inject",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       },
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "Test",
                   "payload": "[{\"Device\":\"Gerät1\",\"Adapter\":\"Zigbee\",\"Battery\":\"57%\"},{\"Device\":\"Gerät2\",\"Adapter\":\"Zigbee\",\"Battery\":\"50%\"}]",
                   "payloadType": "json",
                   "x": 310,
                   "y": 440,
                   "wires": [
                       [
                           "e88eb3fa7c14f96e"
                       ]
                   ]
               },
               {
                   "id": "e88eb3fa7c14f96e",
                   "type": "template",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "field": "payload",
                   "fieldType": "msg",
                   "format": "handlebars",
                   "syntax": "mustache",
                   "template": "<style>\n    table,\n    th,\n    td {\n        border: 1px solid black;\n        border-collapse: collapse;\n    }\n\n    th,\n    td {\n        padding: 5px;\n        text-align: center;\n    }\n</style>\n\n<center>\n    <h3>Für folgende Geräte erreicht der Batteriezustand ein kritisches Niveau:</h3>\n    <table>\n        <tr>\n            <th>Gerät</th>\n            <th>Batteriezustand</th>\n        </tr>\n        {{#payload}}\n        <tr>\n            <td>{{Device}}</td>\n            <td>{{Battery}}</td>\n        </tr>\n        {{/payload}}\n    </table>\n</center>",
                   "output": "str",
                   "x": 460,
                   "y": 440,
                   "wires": [
                       [
                           "2500550bf4260472"
                       ]
                   ]
               }
            ]
            

            Das geht natürlich auch als reiner Text (wie gesagt - die zusätzlich Node war nur wegen der Grammatik notwendig)

            77a803e5-b286-43be-8518-89cf98c70932-image.png

            [
               {
                   "id": "32cf0e766d1b9a85",
                   "type": "debug",
                   "z": "517cd16e4d7e6ae4",
                   "name": "Test",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 550,
                   "y": 680,
                   "wires": []
               },
               {
                   "id": "d3c52e80d77fc3ee",
                   "type": "inject",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       },
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "Test",
                   "payload": "[{\"Device\":\"Gerät1\",\"Adapter\":\"Zigbee\",\"Battery\":\"57%\"},{\"Device\":\"Gerät2\",\"Adapter\":\"Zigbee\",\"Battery\":\"50%\"}]",
                   "payloadType": "json",
                   "x": 250,
                   "y": 680,
                   "wires": [
                       [
                           "da27b511ccda886d"
                       ]
                   ]
               },
               {
                   "id": "da27b511ccda886d",
                   "type": "template",
                   "z": "517cd16e4d7e6ae4",
                   "name": "",
                   "field": "payload",
                   "fieldType": "msg",
                   "format": "handlebars",
                   "syntax": "mustache",
                   "template": "Folgende Geräte weisen ein kritisches Batterieniveau auf:\n{{#payload}}\n{{Device}} mit {{Battery}} der Batteriekapazität\n{{/payload}}\n",
                   "output": "str",
                   "x": 400,
                   "y": 680,
                   "wires": [
                       [
                           "32cf0e766d1b9a85"
                       ]
                   ]
               }
            ]
            

            _ Offline
            _ Offline
            _R_A_L_F_
            schrieb am zuletzt editiert von
            #5

            @mickym Ansonsten wie immer super gelöst :) Genau so sollte es aussehen, aber wie gesagt, da muss man immer erst darauf kommen, wie einfach es dann doch teilweise geht:

            Folgende Geräte weisen ein kritisches Batterieniveau auf:
            {{#payload}}
            {{Device}} mit {{Battery}} der Batteriekapazität
            {{/payload}}
            

            Auch was die HTML Tabelle angeht ein guter Tipp :)

            Vielen Dank an der Stelle für die Hilfe und ausführliche Erklärung :)

            mickymM 1 Antwort Letzte Antwort
            0
            • _ _R_A_L_F_

              @mickym Ansonsten wie immer super gelöst :) Genau so sollte es aussehen, aber wie gesagt, da muss man immer erst darauf kommen, wie einfach es dann doch teilweise geht:

              Folgende Geräte weisen ein kritisches Batterieniveau auf:
              {{#payload}}
              {{Device}} mit {{Battery}} der Batteriekapazität
              {{/payload}}
              

              Auch was die HTML Tabelle angeht ein guter Tipp :)

              Vielen Dank an der Stelle für die Hilfe und ausführliche Erklärung :)

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

              @_r_a_l_f_ sagte in JSON String in Template Node richtig darstellen:

              wie einfach es dann doch teilweise geht:

              Na das ist halt NodeRed. ;) ;) bzw. Angular.

              Aber das kommt ja auch nicht von mir. Hin und wieder mal bei Steve vorbeischauen - hilft:

              https://stevesnoderedguide.com/node-red-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.

              _ 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @_r_a_l_f_ sagte in JSON String in Template Node richtig darstellen:

                wie einfach es dann doch teilweise geht:

                Na das ist halt NodeRed. ;) ;) bzw. Angular.

                Aber das kommt ja auch nicht von mir. Hin und wieder mal bei Steve vorbeischauen - hilft:

                https://stevesnoderedguide.com/node-red-template-node

                _ Offline
                _ Offline
                _R_A_L_F_
                schrieb am zuletzt editiert von
                #7

                @mickym Stimmt, bei Steve steht im Grunde genau so die Lösung:
                5b70db34-57a4-4004-8f1a-1ac02edfa21d-image.png

                Werde ich berücksichtigen beim nächsten mal. Vielen Dank

                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

                943

                Online

                32.5k

                Benutzer

                81.6k

                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