NEWS
Node-Red InFlux Query JSON Hilfe erbeten
-
Hallo, ich habe einen ganz simplen Flow der mir Werte aus einer InfluxDB holt, die dann folgendermaßen in Node-Red ankommen
24.2.2025, 17:50:14node: debug 24 msg.payload : array[2] array[2] 0: object result: "_result" table: 0 _start: "2025-01-01T00:00:00Z" _stop: "2025-02-24T16:50:13.377103661Z" _field: "value" _measurement: "WP_Energy_Month" _value: 537.3399999999997 _time: "2025-02-01T00:00:00Z" 1: object result: "_result" table: 0 _start: "2025-01-01T00:00:00Z" _stop: "2025-02-24T16:50:13.377103661Z" _field: "value" _measurement: "WP_Energy_Month" _value: 386.03999999999996 _time: "2025-02-24T16:50:13.377103661Z"
Daraus möchte ich gerne nur die _value in folgendem Format in einem DP speichern
[ 537.5, 383.72 ]
wobei, der erste Wert dem Monat= Januar entspricht, der zweite Wert= Februar usw. d.h. er müsste dann im nächsten Monat mit einem neuen Eintrag weiter machen usw.
Der aktuelle Monat soll fortlaufend fortgeschrieben werden (z.B. jede Stunde o.Ä)
Ich hoffe es kann jemand helfen.
-
@icebear Am Besten ist immer wenn Du den Wert aus dem Debugfenster nicht mit der Maus kopierst, sondern oben als on top neben der payload die Schaltfläche "Wert kopieren" (in dem Bild "Copy value") nimmst und dass dann in Codetags kopierst. So kann man wenig damit anfangen.
Ich denke aber dass es einfach ist, da Du nur mit einer ChangeNode und JSONATA, die payload auf payload._value setzen musst.
Wie gesagt wenn Du die Daten hier richtig einstellst, kann ich Dir den Flow auch machen.
-
Hallo @icebear,
ich würde mal mit einem jsonata-Ausdruck loslegen:
[ { "id": "ad1cf4c5a0ed4267", "type": "change", "z": "47f31805d18ffe61", "name": "influx2array", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload[].\"_value\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 630, "y": 300, "wires": [ [ "a410bdbf7bc22bd8" ] ] } ]
Den Start der influx-Ausgabe im Januar sicherst Du vermutlich über deine query dort.
Gruß
Sven -
@sprobst Dein JSONATA ist aber schon etwas eigenartig, aber wenn Du es probiert hast, dann wird es wohl stimmen.
-
@mickym said in Node-Red InFlux Query JSON Hilfe erbeten:
Wie gesagt wenn Du die Daten hier richtig einstellst, kann ich Dir den Flow auch machen.
[{"result":"_result","table":0,"_start":"2025-01-01T00:00:00Z","_stop":"2025-02-24T18:28:53.015523517Z","_field":"value","_measurement":"WP_Energy_Month","_value":537.3399999999997,"_time":"2025-02-01T00:00:00Z"},{"result":"_result","table":0,"_start":"2025-01-01T00:00:00Z","_stop":"2025-02-24T18:28:53.015523517Z","_field":"value","_measurement":"WP_Energy_Month","_value":386.3800000000001,"_time":"2025-02-24T18:28:53.015523517Z"}]
Ich hoffe das ist so o.K.
-
geht mit dem Knoten von oben, oder etwas kürzeres Jsonata geht auch (wie schon im Thread zu lesen war)
[ { "id": "c11cd86aa59aac08", "type": "inject", "z": "3ca7d7d6004a839f", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "test", "payload": "[{\"result\":\"_result\",\"table\":0,\"_start\":\"2025-01-01T00:00:00Z\",\"_stop\":\"2025-02-24T18:28:53.015523517Z\",\"_field\":\"value\",\"_measurement\":\"WP_Energy_Month\",\"_value\":537.3399999999997,\"_time\":\"2025-02-01T00:00:00Z\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2025-01-01T00:00:00Z\",\"_stop\":\"2025-02-24T18:28:53.015523517Z\",\"_field\":\"value\",\"_measurement\":\"WP_Energy_Month\",\"_value\":386.3800000000001,\"_time\":\"2025-02-24T18:28:53.015523517Z\"}]", "payloadType": "json", "x": 730, "y": 120, "wires": [ [ "ad1cf4c5a0ed4267" ] ] }, { "id": "ad1cf4c5a0ed4267", "type": "change", "z": "3ca7d7d6004a839f", "name": "influx2array", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload._value", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 910, "y": 120, "wires": [ [ "ab6ed17dd7101198" ] ] }, { "id": "ab6ed17dd7101198", "type": "debug", "z": "3ca7d7d6004a839f", "name": "debug 16", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1100, "y": 120, "wires": [] } ]
-
@icebear sagte in Node-Red InFlux Query JSON Hilfe erbeten:
[{"result":"_result","table":0,"_start":"2025-01-01T00:00:00Z","_stop":"2025-02-24T18:28:53.015523517Z","_field":"value","_measurement":"WP_Energy_Month","_value":537.3399999999997,"_time":"2025-02-01T00:00:00Z"},{"result":"_result","table":0,"_start":"2025-01-01T00:00:00Z","_stop":"2025-02-24T18:28:53.015523517Z","_field":"value","_measurement":"WP_Energy_Month","_value":386.3800000000001,"_time":"2025-02-24T18:28:53.015523517Z"}]
Ja so wie ich mir gedacht habe:
Hier zum Import:
-
Erst einmal Danke für deine Hilfe.
Soweit funktioniert das auch, allerdings bekomme ich die folgende Fehlermeldung:State value to set for "0_userdata.0.Eigene_Variablen.WP.Energie.Database.GesamtYear" has to be stringified but received type "object"
und beim aktualisieren macht er immer die [] weg. Es sollte allerdings so wie ich oben gepostet hatte gespeichert werden. (Also im DP als "role": "state", "type": "json", )[ 537.34, 394.76 ]
i
st bestimmt nur eine Kleinigkeit.strikethrough textHat sich erledigt, ich habs hinbekommen, funktioniert jetzt wie gewünscht.
Ich hab einfach noch ein json-node dazwischen gepackt. (Ich denke das war richtig so), auf jedenfall meckert das log nicht mehr und der Wert steht auch so im DP wie gewünscht.
Also nochmal vielen Dank