NEWS
JSON String in Template Node richtig darstellen
-
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:
SG
-
@_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.
Dann bekommt man nur Mist - weil der Browser interpretiert und man muss sich alles manuell selektieren.
Das Ergebnis sieht dann so aus: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.
-
@_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
- 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 .
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.
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.
Das geht natürlich auch als reiner Text (wie gesagt - die zusätzlich Node war nur wegen der Grammatik notwendig)
-
@mickym Oh je, das tut mir leid
Da schaue ich nächstes mal drauf, dass das nicht mehr passiert.
-
@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
-
@_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:
-
@mickym Stimmt, bei Steve steht im Grunde genau so die Lösung:
Werde ich berücksichtigen beim nächsten mal. Vielen Dank