NEWS
Visualisierung mit Node Red erstellen
-
@damrak2022 Also wie gesagt, der Name ist Bestandteil des gleichen Objektes, sowie das Zimmer auch 3 Eigenschaften hat, so hat jedes Objekt 2 Eigenschaften.
So und wenn Du das betrachtest, was Du mit den regulären Ausdrücken extrahierst und was wir übersetzen wollen, warum trägst Du das nicht so ein?
Die Kennung Deines Ventilators ist nicht "1C0607" sondern "S#1C0607#1", der "Router" heißt nicht: ""4022D8836452", sondern ""S#4022D8836452#1". Du musst da schon genau arbeiten, wie soll sonst Node Red später die Kennungen übersetzen?
Bei Kühlschrank hast du es wiederum richtig gemacht.
Und wie gesagt, der Name und die Kennung gehören in ein Objekt. Das sind die Spalten in der Tabelle. Die Zeilen sind die Objekte.
-
@mickym Doch hatte ich, aber nicht deployed, bevor ich zu den Objekten gewechselt bin. Ich korrigiere.
-
-
@damrak2022 Sehr gut. Und nun kannst Du mit einer Table Node überprüfen, ob es richtig rauskommt, musst aber nicht.
-
@mickym Hier hätte ich auch beinahe vergessen einmal inject anzuklicken
-
@damrak2022 Na siehst Du, wobei der Kühlschrank nicht stimmt.
-
@mickym Schon korrigiert
-
@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?