InfluxDB - Eigene Werte mithilfe von csv-Dateien importieren
Eigene Werte lassen sich in eine InfluxDB schnell und einfach mit einer csv-Datei importieren.
InfluxDB ist eine Datenbank die speziell darauf ausgelegt ist, um Messwerte zu erfassen und effektiv zu verwalten.
Besonders Benutzer der populären Hausautomatisierungslösung Home Assistant kennen die Datenbank.
InfluxDB wird dort sehr gerne zum Langzeitspeichern der Messwerte verwendet und zum Bereitstellen der Werte für Grafana.
Home Assistant bringt im Standard das Add-on InfluxDB mit. Die Installation ist damit sehr einfach durchzuführen.
Wie bekommt man aber eigene Werte in eine InfluxDB?
Abhilfe schafft der kleine "Umweg" über eine csv-Datei.
Für den erfolgreichen Import sind ein paar Dinge zu beachten, die im folgenden Beispiel erläutert werden.
Beispieldateien
Die beiden Beispieldateien können hier heruntergeladen werden:
- influxdb-import.xlsx oder hier
- influxdb-import.csv oder hier
Beim Import der Dateien mit einem Euro-Betrag kommt es zu einem Fehler. Das liegt an dem Dezimaltrennzeichen ,
(= Komma).
InfluxDB nimmt beim Import an, dass das ,
ein Spaltentrennzeichen ist und kann die Werte dieser Zeilen nicht korrekt zuordnen. Die Struktur der Importtabelle wird dadurch "zerstört" und der Import der gesamten csv-Datei verweigert.
Abhilfe schafft das Ersetzen des Kommas ,
durch einen Punkt .
als Dezimaltrennzeichen bei den Euro-Werten. Dafür wird eine kleine Ergänzung der Formel durch die Funktion =WECHSELN()
notwendig.
Es darf als Tausendertrennzeichen kein ,
verwendet werden. Am besten ist diese Formatierung auszuschalten.
Die Zahl in der csv-Datei sollte nur nach diesem Schema formatiert sein 1000.00
.
In einem Beispiel Tabelle 1_8_0_EUR, Zelle D1 die Formel wie folgt aus:
=WENN(C1="";"";WENN($Zählerstände.K7="";"value=0 ";"value="&WECHSELN(KÜRZEN($Zählerstände.K7;3);",";".")&" "))
Die Beispieldateien zum Herunterladen wurden entsprechend angepasst.
Use Case
Die Stromverbräuche eines Stromzählers sollen in eine neue InfluxDB Datenbank importiert werden.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️
Der Stromzähler verfügt über zwei interne Zähler
1.8.0
= Stromverbrauch2.8.0
= Einspeisung einer PV-Anlage
Die Messwerte werden (in unregelmäßigen Abständen) manuell ✍️ und fortlaufend in einer Tabelle im xlsx
-Format erfasst.
Dort werden die Verbrauchswerte mit anderen Werten verdichtet und weitere Werte, wie Preis pro kWh, Kosten für den Verbrauch in einem Zeitraum, etc., über Formelberechnungen hinzugefügt.
Die Werte werden dann automatisch in eigene Tabellen übertragen und in ein InfluxDB-konformes Format gebracht.
Die einzelnen Tabellen werden als csv-Dateien abgespeichert und anschließend als csv-Datei in InfluxDB importiert.
Sobald die Werte in der InfluxDB gespeichert wurden, können sie dort oder mithilfe von Grafana Dashboards übersichtlich dargestellt und mit anderen Werten verdichtet werden.
Arbeitsmappe
Für das Beispiel wurde eine Arbeitsmappe mit dem Namen influxdb-import.xlsx
erstellt.
Dort sind mehrere Tabellen vorhanden, die zur Erfassung und für den Import in die InfluxDB verwendet werden.
- Zählerstände
- 1_8_0
- 1_8_0_EUR
- 2_8_0
- 2_8_0_EUR
Die Tabellen werden verwendet für
Zählerstände
= manuelle Erfassung und weitere Anreicherung der Daten mit Formeln1_8_0
= Messwerte des Stromverbrauchs in kWh werden aufbereitet.1_8_0_EUR
= Die Koste für den Stromverbrauch werden für den Import vorbereitet2_8_0
= Die Einspeisung in kWh wird für den Import in die InfluxDB vorbereitet2_8_0_EUR
= Die Erträge der Einspeisung werden in Euro aufbereitet für den Import.
Tabelle - Zählerstände
Die Verbrauchswerte werden manuell ✍️ und fortlaufend in der Tabelle Zählerstände
erfasst.
Die Daten sind in die gelb markierten Spalten manuell einzutragen.
Die Berechnung der restlichen Werte erfolgt auf Grundlage der hinterlegten Formeln.
Tabelle - 1_8_0
Die Tabelle 1_8_0
dient dazu die Werte aus der Tabelle Zählerstände
so vorzubereiten, dass die Tabelle als csv gespeichert und in InfluxDB importiert werden kann.
Für den Import in InfluxDB müssen die Werte in eine bestimmte Reihenfolge und mit "Spaltennamen" versehen werden.
kWh,electric_meter=1emh12345678901_1_8_0,friendly_name=stromzaehler_haushaltsstrom_verbrauch, value=500 1711929600
Übersetzt für InfluxDB bedeuten die Spalten:
kWh
= measurementelectric_meter
= tag setfriendly_name
= tag setvalue
= field set1711929600
= Zeit im UNIX-Format
Danger
Es ist zwingend darauf zu achten, dass Kommas und Leerzeichen korrekt gesetzt werden ‼️ 2
measurement,tag,tag field time
kwh,electric_meter,friendly_name value UNIXtime
Das Ergebnis nach dem Import in InfluxDB sieht dann so aus
kWh
- electric_meter-1
- 1emh12345678901_1_8_0
- friendly_name-1
- stromzaehler_haushaltsstrom_verbrauch
Die Daten lassen sich in einem Tabellenbearbeitungsprogramm, wie LibreOffice Calc, sehr gut jonglieren und für den Export in das csv-Format vorbereiten.
In der Tabelle 1_8_0
werden die Daten für den Import aufbereitet und mit den entsprechenden zusätzlichen Informationen versehen.
Info
In der Spalte E
wird das lesbare Datumsformat dd.mm.jjjj
in das UNIX Zeitformat (Unix timestamp) umgewandelt. Das ist ZWINGEND notwendig, damit die Daten in InfluxDB importiert werden können.
In diesem Beispiel wird die Zeit in Sekunden mit der Formel umgerechnet.
=($Zählerstände.B7 - 25569) * 86400
Möchte man anstatt Sekunden Millisekunden (ms) ist die Formel entsprechend anzupassen.
=($Zählerstände.B7 - 25569) * 86400 * 1000
Die Tabelle wird im csv-Format abgespeichert. Dazu wird die im Menü Datei - Speichern unter ...
anklicken.
Es ist wichtig, dass alle Trennzeichen entfernt werden. Die Trennzeichen und Leerzeichen werden in der Tabelle durch die hinterlegten Formeln eingefügt.
Nach dem Speichern arbeitet man nun in der csv-Datei. Die eigentliche Arbeitsmappe influxdb-import.xlsx
wurde geschlossen!
Eine Kontrolle in einem Texteditor der csv-Datei zeigt, dass die Formatierung für den Import in InfluxDB korrekt ist.
InfluxDB - csv-Datei importieren
Die gerade erstellte csv-Datei soll in eine neue InfluxDB-Datenbank importiert werden.
Neue Datenbank erstellen.
Neue Datenbank testdb
benennen und erstellen.
Datenbank testdb
wurde korrekt erstellt und kann verwendet werden.
In den Explorer
wechseln, um den Import zu starten.
Auf Write Data
klicken.
Die neue Datenbank testdb
auswählen.
Beim Zeitformat sind Sekunden s
zu wählen.
Info
Wird ein anderes Zeitformat verwendet, dann ist das entsprechend aus dem Dropdown auszuwählen.
Die Datei influxdb-import.csv
kan mit Drag&Drop in Position gezogen werden. Mit einem Klick auf Write this File
werden die Daten importiert.
Success!
Die importierten Werte werden umgehend in der neuen Datenbank angezeigt.
Werden keine Werte trotz korrekter Auswahl angezeigt, kann das am eingestellten Zeitraum liegen.
Tabelle - 2_8_0 und restliche
Für die anderen Tabellen
- 1_8_0_EUR
- 2_8_0
- 2_8_0_EUR
ist nach dem gleichen Schemata für den Import zu verfahren.
Kann die gleiche Datei mehrfach importiert werden?
Ja, die Datei influxdb-import.xlsx
kann fortlaufend mit neuen Werten befüllt und auf dem beschriebenen Weg für den Import in InfluxDB vorbereitet werden.
Ist der gleiche Wert in InfluxDB bereits vorhanden, passiert nichts. Neue Werte werden einfach hinzugefügt.
Bei geänderten Werten wird lt. Dokumentation wie folgt verfahren:
Duplicate points Ein Punkt wird eindeutig durch den Messungsnamen, das Tag-Set und den Zeitstempel identifiziert. Wenn Sie ein Linienprotokoll mit derselben Messung, demselben Markierungssatz und demselben Zeitstempel, aber mit einem anderen Feldsatz einreichen, wird der Feldsatz zur Vereinigung des alten Feldsatzes und des neuen Feldsatzes, wobei Konflikte zugunsten des neuen Feldsatzes auftreten. 1
Aus diesem Grund sollten vor dem Einspielen geänderter Werte in InfluxDB die alten Werte gelöscht werden, um Konflikte zu vermeiden. Wie das gemacht wird, beschreibe ich in einem späteren Blogpost.
Fazit
Der Import über eine csv-Datei stellt eine schnelle und einfache Möglichkeit dar, um eigene Werte in InfluxDB zu importieren.
Es werden keine Programmierkenntnisse benötigt.
Die Aufbereitung der Daten kann in einem Tabellenbearbeitungsprogramm, wie LibreOffice Calc, erfolgen.
Das Tool ist bekannt, einfach zu handhaben und alle Werte lassen sich sofort darstellen und auf Korrektheit prüfen.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️
Source
Foto von Mika Baumeister auf Unsplash