NEWS
Visualisierung mit Node Red erstellen
-
@damrak2022 Gut nun das war nur zum Test und Du hättest es nicht in der Inject Node eingeben müssen, wir brauchen die Tabelle ja nur temporär zur Übersetzung. Dazu müssen wir dieses Array einer neuen Nachrichteneigenschaft zuweisen. Welchen Namen wollen wir diesem Array geben?
-
@mickym Shellystatus, oder was meinst Du?
-
@damrak2022 Ja oder wir können die Eigenschaft auch der Kürze halber einfach shellies nennen, wenn Du willst?
-
@mickym Ja, aber dann bitte so: Shellys - Finde ich optisch schöner
-
@damrak2022 Na die Tabelle werden wir ja nicht sehen, sondern wir nutzen die nur zur Übersetzung. Das mit dem Dashboard kannst Du wieder löschen.
Nun dann definierst Du eben in der Change Node, in der Du die Kennung extrahiert hast, eine Nachrichteigenschaft Shellys und kopierst da das komplette Array hinein, dass Du gerade mit der Inject Node definiert hast.
Das heißt diese Tabelle sieht ja niemand - die brauchen wir ja nur, um das topic zu übersetzen.
-
@mickym Du meinst die
Aber wenn ich das $1 entferne, klappt das doch nicht. Habe wieder ein Verständnisproblem -
@damrak2022 Ja Du hast ein Verständnisproblem. Du sollst drunter eine neue Regel erstellen, in der Du der nachrichteneigenschaft msg.Shellys Dein Array zuweist.
-
@mickym Meinst Du so?
-
@damrak2022 Sehr gut. Wenn Du dir nun das komplette Nachrichtenobjekt ausgeben lässt, siehst Du dass nun Deine Tabelle in der Nachrichteneigenschaft Shellys auftaucht. Das werden wir aber zum Schluss wieder entfernen, weil wir die Tabelle ja nur zur Übersetzung brauchen. Aber zeig mal dass nun in jedem Nachrichtenobjekt die Tabelle enthalten ist.
-
@mickym Du hast schon wieder recht
-
@damrak2022 Wäre ja schlimm, wenn es nicht so wäre. Und nun wirst Du die Magie von JSONATA kennenlernen, wie wir nun das topic übersetzen. Wir nutzen dafür sogenannte predicate Queries ( https://docs.jsonata.org/predicate ) - um Dich nicht gänzlich zu verwirren, wir werden später mit den Zimmer uns genauer mit dieser Art von JSONATA Abfragen beschäftigen.
Nun setzt Du darunter eine neue Regel, in der Du das msg.topic auf folgenden JSONATA Ausdruck setzt.
Shellys[Kennung=$$.topic].Name
-
-
@damrak2022 Na und was siehst Du, wie hat sich das topic verändert?
-
@mickym Keine Ahnung wie ich das beschreiben soll. Oben steht als Topic der Gerätename
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Keine Ahnung wie ich das beschreiben soll. Oben steht als Topic der Gerätename
Genau und das war unser Ziel.
- Nun können wir die Nachrichteneigenschaft Shellys wieder aus dem Nachrichtenobjekt löschen, denn die Tabelle hat nun ihren Zweck erfüllt. Also einfach eine weitere Regel eingeben und die Eigenschaft wieder aus dem Nachrichtenobjekt entfernen.
Also nicht die 2. Regel löschen, sondern zum Schluss eine Löschen Regel eingeben!
Dein komplette Change Node sollte also so aussehen:
-
-
@damrak2022 Sehr gut - das heißt wir haben nun unser nächstes Etappenziel erreicht und haben nun den Topics in den Nachrichten die richtige Bedeutung gegeben. Ist doch gut, oder? - Damit können wir dann morgen mittels der JOIN Node wieder Objekte erstellen, die den Status aller Shellies enthalten.
Du kannst Dich ja zum Schluss noch überzeugen, dass die Tabellen wieder erfolgreich aus den Nachrichtenobjekten entfernt wurden.
-
@mickym Ja, morgen ist eine gute Aussage
-
@damrak2022 Na bist Du nicht stolz, was Du geschafft hast - sprechende topics - Du musst Dir keine Codes mehr merken, welches Gerät was meldet, sondern siehst es auf Anhieb anhand des topics.
-
@mickym Ja, aber dieses Klammer auf und zu, geschweifte Klammer und Komma und so weiter finde ich anstrengend. Ansonsten klar, es wird langsam besser