NEWS
Node-Red Filter
-
Wenn also der Sinn Deiner function Node ist nur das ganze nach oben zu ziehen , da braucht man gar nichts programmieren. Dann nimmt man eine Change Node und VERÄNDERT die payload entsprechend.
Diese EINE Regel in der Change Node - macht das Gleiche wie dein Javascript Code. Also vielleicht solltest Du Dich mal mit Objekten beschäftigen.
-
ok, da werde ich mich bestimmt mit beschäftigen.
Aber die Fehlermeldung ist immer noch Im Moment wird die DB nicht bedient.
-
Ich bin ja auch noch nicht fertig
So ich hab Dir nun 2 Möglichkeiten zum Filtern gemacht - da ich auch noch keine Antwort hatte, ob Du das ganze Objekt wegfiltern willst, wenn die Temperatur -100 ist oder nur die Objekteigenschaft Temperatur:
Im ersten Fall kommt also gar nichts hinten raus, wenn in der temperature Eigenschaft -100 steht
-
Ich möchte alles, was kommt, in die DB schreiben. Ausser: -100.
-
Dieser Wert -100 zieht mir die schöne Visualisierung vom Grafana runter.
-
@ranzen sagte in Node-Red Filter:
Ich möchte alles, was kommt, in die DB schreiben. Ausser: -100.
OK dann hätte ich mir das wahrscheinlich sparen können, dann willst Du also nur die temperature Eigenschaft wegfiltern.
dann sollte also im Prinzip das langen:
[{"id":"487d44863b93b5de","type":"change","z":"289f539dcc33814e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.temperature = -100 ? payload~>|$|{},\"temperature\"|","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":6440,"wires":[["7b3c154c0eb45240"]]}]
Und zum Schluss mach ich Dir noch eine Version, in der Du Dir die ganze function Node sparen kannst.
-
Im Copycode steht folgendes:
-
Ich merke gerade, dass ich überhaupt nicht meine Posts editieren kann.
So sollte die Hardcopy aussehen:
-
@ranzen sagte in Node-Red Filter:
Im Copycode steht folgendes:
Vergiss das doch mit der split Node.
Importiere einfach die Change NOde, aus dem letzten Post und hänge die an Deine function NOde. Das andere kannst Du vergessen.
-
Das habe ich gerade gemacht.
Und trotzdem kommt diese blöde Fehlermeldung wieder:
"Invalid JSONata expression: The expressions either side of operator ">" must evaluate to numeric or string values"
-
Moment mal.
Was muss ich bei der Regel denn auswählen?
Im Moment steht in der letzten Zeile bei "to the value" ein JSONata. Ist das richtig ? Da gibt es ja noch 10 andere Möglichkeiten.
-
@ranzen Kannst Du mal einen Screenshot von dem Flow machen
Wenn Du nur diese Node hast - bekomme ich , wenn Dein Objekt das wie im Input dargestellt KEINE Fehler.
-
Ok,
habe mir gerade die kleine Grafik noch mal angeschaut. Da muss "msg" stehen.
-
@ranzen sagte in Node-Red Filter:
Ok,
habe mir gerade die kleine Grafik noch mal angeschaut. Da muss "msg" stehen.
Ach Du meinst um deine function Node zu ersetzen. Da ja!
-
-
War noch ein Fehler bei mir drin. - Sorry
So diese Change Node ersetzt deine Function Node und filtert die -100 raus.
Hier nochmal frisch zum Import
-
@ranzen sagte in Node-Red Filter:
Ja hier habe ich nur das Ausfiltern bedacht und nicht, wenn die Temperatur nicht -100 ist.
Die JSONATA Regel muss also so aussehen:
payload.temperature = -100 ? payload~>|$|{},"temperature"| : payload
-
Ok, habe die Regel geändert.
Ich muss jetzt ein paar Minuten warten, bis die nächsten Datenpakete kommen. LoRaWAN ist da auf 15 Min. eingestellt. -
Perfekt. So passt alles.
Vielen Dank für Deine Hilfe. In Zukunft kann ich mir das tägliche Editieren in der DB sparen.
Dieser Wert "-100" kommt von einem Sensor, der den Saftfluß in einem Apfelbaum misst.
-
@ranzen Hast du jetzt die Change Node mit den 2 Regeln importiert und die vorhandene abgeändert?
In der Node mit den 2 Regeln habe ich nur die beiden Change Nodes in eine zusammengefasst.