NEWS
Object Daten in Influx db speichern
-
@drdoener Also mit der Node und timestamps setzen wird das glaube ich nichts - ggf musst doch direktes HTTP verwenden.
Ich brings nicht ganz hin.
Verwendet wurde die Batch Node mit folgenden Einstellungen:
Aber wie gesagt mit dem timestamp setzen bekomme ich nicht hin - man muss sich noch mal die Format doku inkl. HTTP anschauen.
Das Teil arbeitet die Objekte für die Batch-Node soweit auf:
aber wie gesagt - ggf. muss man sich da was anderes einfallen lassen.
Eventuell ist die Batch Node auch nur für Version 1.8 vorgesehen. Für die influx out habe ich keinen Parameter gefunden, wie man die Zeit setzen kann. Also wahrscheinlich selbst über HTTP arbeiten. Mal schauen, wann ich dazu Zeit finde.
-
-
@mickym
Klappt doch schon! Nur die Time Precision in"influx batch" auf seconds stellen.
Schaue es mir jetzt nochmal im Detail an und melde mich. -
Zweites Feedback:
Klappt super ! -
@drdoener Na dann freut mich das - bei mir war da irgendwie der Wurm drin. Kümmer Dich also nicht um mein anderes Geschreibsel - ich möchte nur verstehen, warum das bei mir nicht tut.
-
@marc-berg sagte in Object Daten in Influx db speichern:
Dafür ist zwar ein Funktion Node erforderlich, aber der Code hält sich in Grenzen. Vielleicht könnt ihr daraus eine Anregung ziehen.
Na ja eine function Node ist dafür nicht erforderlich, dass kann ich Dir gerne zeigen wenn Du willst, aber wenn ich Deinen Flow nehme dann kommen ja die Arrays raus, die Du ggf. für tags brauchst.
Das verstehe ich alles -
hab das dann mal in meine DB in ein anderes Bucket geschrieben.
und ich sehe immer nur EINEN Wert in der DB - das kapiere ich nicht - freut mich ja wenn es bei Euch geht - aber würde halt gerne verstehen warum das bei mir nicht tut.
Ich sehe nur EINEN Wert.
-
@mickym sagte in Object Daten in Influx db speichern:
Ich sehe nur EINEN Wert.
Bin mir nicht ganz sicher, aber es könnte hieran liegen:
Die meisten Werte liegen ja in der Zukunft. Versuch mal den Zeitraum anzupassen.
-
@marc-berg Oh Du bist sooo schlau. - und ich so doof - das wars.
-
@marc-berg Ich passe trotzdem mal Deinen Flow an - um mal wieder zu beweisen, dass man für sowas keine function Node braucht.
Ein weiterer Unterschied zu meiner Methode über die Batch-Node ist, dass man alles aufeinmal übergeben kann und nicht alles in einzelne Nachrichten aufteilen musst.
Angeblich soll das ja auch mit der influx Out Node gehen:
-
@mickym sagte in Object Daten in Influx db speichern:
Na ja eine function Node ist dafür nicht erforderlich, dass kann ich Dir gerne zeigen wenn Du willst
Nachdem es bei meinen Versuchen mit dem Change Node nicht gleich funktioniert hatte, habe ich es einfach mit der Function Node gemacht. Aber wäre cool wenn du eine Lösung parat hättest. Function Nodes finde ich eigentlich auch bäh.
Edit: zu lange gebraucht für die Antwort
-
@mickym sagte in Object Daten in Influx db speichern:
Angeblich soll das ja auch mit der influx Out Node gehen:
Jaha! Aber so wie ich das verstehe, werden dann ALLE Fields und Tags in einen Datensatz mit einem Timestamp gepackt. Das ist ja nicht das, was wir wollen.
-
@marc-berg Ah OK - aber dann geht es mit der Batch- Node wie ich ja dann an dem Flow für @drdoener zeigen konnte.
in der Batch Node - kannst Du einen timestamp Property setzen.
Deswegen schauen meine Objekte auch so aus:
{ "measurement": "Solarprognose1", "timestamp": 1695790800, "fields": { "Datum": "27.09.2023 07:00:00", "Prognose_W": 0, "Prognose_Wh": 0 } }
Ok - ich bin aber noch an Deinem Flow ...
bissi Geduld.
-
@marc-berg sagte in Object Daten in Influx db speichern:
@mickym sagte in Object Daten in Influx db speichern:
Na ja eine function Node ist dafür nicht erforderlich, dass kann ich Dir gerne zeigen wenn Du willst
Nachdem es bei meinen Versuchen mit dem Change Node nicht gleich funktioniert hatte, habe ich es einfach mit der Function Node gemacht. Aber wäre cool wenn du eine Lösung parat hättest. Function Nodes finde ich eigentlich auch bäh.
Edit: zu lange gebraucht für die Antwort
Ok - ist eigentlich nicht schwer - man muss nur aufpassen mit den verschachtelten Arrays - aber ich habs jetzt mit Deiner Ausgabe abgeglichen.
Hier die modifizierte ChangeNode:
Das Array mit den geänderten Objekten kannst Du einfach so erstellen:
payload.data.[[{"time":start_timestamp,"value":marketprice}]]
falls Du noch tags dahinter machen wolltest.
EDIT: Habs gleich in eine Regel gepackt.
-
@marc-berg sagte in Object Daten in Influx db speichern:
@mickym sagte in Object Daten in Influx db speichern:
Angeblich soll das ja auch mit der influx Out Node gehen:
Jaha! Aber so wie ich das verstehe, werden dann ALLE Fields und Tags in einen Datensatz mit einem Timestamp gepackt. Das ist ja nicht das, was wir wollen.
Du brauchst das nicht in einzelne Nachrichten aufteilen. Ich hab einfach mal das gesamte Array übergeben und das ist in der Datenbank völlig identisch. Und ja es geht mit _time. Klasse wieder viel gelernt.
Du musst nur eine Verschachtelung weniger machen.
Wenn Du also das ganze Array auf einmal in die Influx Node schickst, kommt das identische raus (power.marketdata.3), Deine Lösung (power.marketdata.2).
Fazit für mich: Man muss nicht die Batch-Node verwenden.
-
@mickym sagte in Object Daten in Influx db speichern:
Du musst nur eine Verschachtelung weniger machen.
So, das habe ich jetzt eingebaut und das Ergebnis sieht sehr gut aus. Immer toll zu sehen, wie mächtig eine kurze Zeile JSONata ist. Zwei Nodes gespart.
Danke dir!
-
@marc-berg Und wie gesagt - Du kannst das komplette Array aufeinmal senden.
-
@marc-berg sagte in Object Daten in Influx db speichern:
Immer toll zu sehen, wie mächtig eine kurze Zeile JSONata ist.
Ja das fasziniert mich auch immer wieder, wie mächtig das Teil ist und wieviel Code man sich gegenüber normalem Javascript sparen kann.
-
@mickym sagte in Object Daten in Influx db speichern:
Und wie gesagt - Du kannst das komplette Array aufeinmal senden.
Ja, das ist klar. Hätte ich nicht gedacht, dass es so geht.
-
Ist ja richtig was los hier in diesem jungen Beitrag.
Danke Euch beiden, insbesondere mickym für´s schnelle Antworten.
Das läuft jetzt wunderbar.
Hätte ich gleich posten sollen, dann hätte ich mir 2 Stunden rumprobieren ersparen können! -
@mickym said in Object Daten in Influx db speichern:
Das Array mit den geänderten Objekten kannst Du einfach so erstellen:
payload.data.[[{"time":start_timestamp,"value":marketprice}]]Hallo nochmal,
bin auch gerade dabei, die Preise von der Strombörse in meine influx zu schreiben.
Klappt mit Marcs Vorlage grundsätzlich auch wunderbar.
Nun möchte ich aber noch tags hinzufügen. Habe verschiedenes ausprobiert und es will nicht wirklich klappen.
Wie baue ich die am Besten in die payload ein?Danke Euch!