Altdaten übernehmen aus csv

Ich habe erst seit etwa 2 Wochen InfluxDB v2.4.0 und Grafana installiert. Die Daten bekomme ich vom ioBroker.
Nun möchte ich auch manuell erfasste Daten in die InfluxDB bringen und mit Grafana darstellen. Die Daten liegen mir nur in Form einer Excel-Tabelle vor (täglich abgelesener Stand des Gaszählers: Datum und Verbrauch in kW).
Ich habe etwas experimentiert mit “export_csv_to_influx.exe”. Das hat aber nicht geklappt. Die Ausgangs-CSV war als Beispiel:

Datum,Watt
30.06.2022,1.24
01.07.2022,1.46
02.07.2022,0.0
03.07.2022,0.0
04.07.2022,0.0
05.07.2022,0.0
06.07.2022,1.35
07.07.2022,3.83
usw.

Die csv wurde in Influx übernommen, letztlich aber nur die Watt-Werte. Es wurde ein zusätzlicher timestamp mit aktuellem Datum/Uhrzeit für alle Werte gleich angelegt. Mein Datumsfeld blieb unberücksichtigt. Das kann am falschen Format liegen, denn “unsupported input type for mean aggregate: string”. Ich weiß nun nicht, wie ich das korrekte (alte) Datum zusammen mit den Werten (Watt) in Influx bekomme.

Eine Folgefrage:
Wenn ich irgendwann eine richtige Anbindung des Gaszählers im ioBroker erreiche (Rückmeldung des Versorgers zu einem passenden Reed-Kontakt für den Zähler steht noch aus), dann sollten ab diesem Moment die Daten aus dem ioBroker mit in die Influx-DB zu den oben erfassten Altdaten einfließen.

Hello @DGR75,
You have a couple of options. The first is to use the csv.from() function like:

import "csv"

csvData =
    "
_time,region,host,_value
2018-05-08T20:50:00Z,east,A,15.43
2018-05-08T20:50:20Z,east,B,59.25
2018-05-08T20:50:40Z,east,C,52.62
"

csv.from(csv: csvData, mode: "raw")

Or for your data specifically:

import "csv"

csvData =
    "
Datum,Watt
30.06.2022,1.24
01.07.2022,1.46
02.07.2022,0.0
03.07.2022,0.0
04.07.2022,0.0
05.07.2022,0.0
06.07.2022,1.35
07.07.2022,3.83
"

csv.from(csv: csvData, mode: "raw")

However, please note that InfluxDB expects the timestamp to be in rfc3339 format. To change the format I suggest that you convert it to that format in excel or YYYY-MM-DD.
Then I’d suggest using the following functions to rename the columns and write the data to influxDB:

import "csv"

csvData =
    "
Datum,Watt
30.06.2022,1.24
01.07.2022,1.46
02.07.2022,0.0
03.07.2022,0.0
04.07.2022,0.0
05.07.2022,0.0
06.07.2022,1.35
07.07.2022,3.83
"

csv.from(csv: csvData, mode: "raw")
    |> rename(columns: {Datum: "_time", Watt: "_value"})
    |> experimental.set(o: {_field: "Watt", _measurement: "my measurement"})
    |> to(bucket: "<my bucket>") 

Alternatively, you can use the CLI to write CSV:

influx write -b example-bucket \
  -f path/to/example.csv \
  --header "#constant measurement,my-measurement" \
  --header "#datatype dateTime:2006-01-02,long"

If you plan on using the CLI you’ll want to set up a config too before using the config:

But again this solution you’ll need to change the timestamp to be in rfc3339 format.

Please let me know if you still need help and sorry for the delay.

Also you might be interested in:

As an example of how to format your timestamps with Flux.

1 Like

Danke. Ich muss mich mehr mit den Grundlagen befassen.
Zunächst habe ich meine Daten in Excel umgewandelt.
Beispiel:
_time,_value
2022-06-30T00:01:00.000Z,1.24
2022-07-01T00:01:00.000Z,1.46
2022-07-02T00:01:00.000Z,0
2022-07-03T00:01:00.000Z,0
2022-07-04T00:01:00.000Z,0
2022-07-05T00:01:00.000Z,0
2022-07-06T00:01:00.000Z,1.35
2022-07-07T00:01:00.000Z,3.83
2022-07-08T00:01:00.000Z,3.94

Die Uhrzeit spielt bei mir keine Rolle. Deshalb ist sie überall gleich.

Leider weiß ich nicht, wo ich in Influx die Funktion csv.from() anwenden kann.Ich werde mich mit der Dokumentation beschäftigen.

Telegraf wurde installiert.
ich habe jetzt versucht über Load Data - Telegraf - ADD DATA eine csv-Datei hochzuladen.
Leider komme ich mit der notwendigen Struktur nicht klar.
Meine Daten beinhalten den täglichen Gasverbrauch wie schon oben dargestellt. Ich habe jetzt verschiedene Anordnungen der Daten in der csv-Datei getestet, aber ohne Erfolg.
Kann mir jemand eine Beispiel-csv geben ?

Sorry. Telegraf kann sicher auch für die Datenübernahme aus csv genutzt werden, aber auf einem anderen Weg. Da muss ich noch lernen.
Meine Daten kommen sonst über den iobroker. So habe ich auch mein bucket genannt. Ich versuche nun den bereits genannten Weg über Load Data - BUCKETS - iobroker - +ADD DATA.
Das Problem mit der csv-Struktur bleibt natürlich.

Das Problem ist gelöst.
Ich habe im iobroker einen Datenpunkt erzeugt und dort einige Daten eingegeben. Dann diese Daten in influxdb2 übertragen und dort als csv exportiert. Dadurch erhielt ich eine csv-Datei mit der passenden Struktur, in der ich alle meine Daten ergänzen und in influx - Buckets - iobroker - +ADD DATA als csv wieder einlesen konnte.

For anyone else following:

The problem is solved.
I created a data point in iobroker and entered some data there. Then transfer this data to influxdb2 and export it there as a csv. This gave me a csv file with the right structure, in which I could add all my data and read it back in as csv in influx - Buckets - iobroker - +ADD DATA.

@DGR75
Ich bin froh, dass es funktioniert hat! Vielen Dank für Ihre Fragen und ich wünsche Ihnen eine schöne Woche. Übrigens, wofür verwenden Sie InfluxDB? Wenn Sie einen kostenlosen Hoodie erhalten möchten, ermutige ich Sie, Ihren Anwendungsfall hier zu teilen (oder mir zumindest zu sagen, weil ich gerne erfahre, was Benutzer tun).

InfluxDB2 nutze ich seit kurzer Zeit anstelle der json-Datenbank im ioBroker. Ich habe Influx und Grafana wegen besserer Möglichkeiten zur Visualisierung gewählt. Das klappt soweit sehr gut, wenn es im Detail auch noch einige Probleme gibt. Zu einem Problem habe ich heute ein topic erstellt.

1 Like

@DGR75,
Thank you for sharing!