NEWS
Daten aus Datei in Datenbank schreiben
-
Hallo zusammen,
zuerst mal sorry wenn das Thema hier falsch ist, aber ich wusste nicht wo rein sonst…
Ich bräuchte mal Hilfe oder Denkanstöße. Auf einem Raspi läuft ein Stromzähler, welcher immer wenn der Zählerstand sich um ein Tausendstel ändert, Datum/Uhrzeit, Zählerstand und Impulse in eine Textdatei schreibt (oberes Bild). Für jeden Tag wird eine neue Datei angelegt (unteres Bild).
Hat jemand einen Tipp, wie ich es hinbekomme, diese Daten in meine vorhandene Influxdb zu schreiben, damit ich diese mit Grafana oder Flot visualisiert bekomme? Influx ist kein MUSS. Zur Not installiere ich noch ne andere DB, Hauptsache ich bekomme die Daten irgendwie in Grafana/Flot. Leider hab ich nicht den Hauch einer Ahnung, wie ich das machen kann und wäre ewig dankbar für Hilfe.
-
Das hat zwar nichts mit ioBroker zu tun, aber schonmal mit Google versucht?
Beispielergebnisse:
https://github.com/jpillora/csv-to-influxdb
https://github.com/CorpGlory/csv2influx
… und ca. 103.000 weitere Ergebnisse.
Ich denke vorher musst Du deine Daten in ein sinnvolles CSV Konvertieren und ein "Standard" Zeitformat wäre auch hilfreich ...
-
Danke. Ja, natürlich habe ich mir schon nen Wolf gesucht. Das ist mein Problem. Die Daten sind halt so wie sie sind. Ich habe da keinen Einfluss darauf. Da ich keinerlei Programmiererfahrung habe, hab ich keinen Schimmer, wie ich automatisiert die Daten in csv konvertiert bekomme. Darum meine Frage hier.
-
Ich behaupte mal, dass das mit ioBroker möglich ist.
Mal grob als Fahrplan:
-
per Javascript am Anfang des Tages die Datei vom Vortag einlesen
-
den Dateinamen kann man sich dabei zusammenbauen
-
den Inhalt der Datei mit RegEx in ein Array packen (3 Felder je Zeile)
-
Funktion, die das Datum in ein ordentliches Format packt
-
wenn man mit dem Influx Adapter loggt, wird wahrscheinlich jeder Wert mit dem Datum eingetragen, an dem man die Datei ausliest
-
beim sql Adapter kann man mit sendTo direkt auf die DB zugreifen
sendTo(sqlInstanz, 'query', 'SELECT …
- damit kann man dann wahrscheinlich die Werte mit dem richtigen Datum schreiben
Dateieinlesen und mit RegEx auswerten bekomme ich wahrscheinlich noch hin.
Die Daten dann in die Datenbank zu schreiben... bisher habe ich da nur Abfragen mit SELECT gemacht.
-
-
dafür haben wir doch einen wunderschönen adapter "systeminfo": https://github.com/frankjoke/ioBroker.s … /README.md
-
Adapter installieren
-
konfigurieren damit er die Datei ausliest
-
dauen werden in datenpunkte geschrieben
-
die datenpunkte kan man dan mit history/SQL adapter und so weiter wie gewohnt loggen
~ Dutch
-
-
dafür haben wir doch einen wunderschönen adapter "systeminfo": https://github.com/frankjoke/ioBroker.s … /README.md
-
Adapter installieren
-
konfigurieren damit er die Datei ausliest
-
dauen werden in datenpunkte geschrieben
-
die datenpunkte kan man dan mit history/SQL adapter und so weiter wie gewohnt loggen
~ Dutch `
Gute Idee. Folgende Fragen dazu.
Werte aus der Datei, wie 79.9 müssen bei der Übernahme in die Datenbank auf 79.000 geändert werden.
Bekommt man das mit dem systeminfo.0 Adapter ohne Skript hin?
Wann werden die Daten vom Adapter übernommen?
Jedes Mal, wenn eine neue Zeile geschrieben wird oder nach Polling per schedule/cron?
Wenn mehrere Daten auf einmal eingelesen werden, z.B. am Ende des Tages dann geschrieben werden, haben die dann nicht in der SQL Datenbank alle das identische Datum? D.h., die Zeit des Einlesens und nicht den Zeitstempel aus der Datei?
Wie würde so eine Konfigzeile im Adapter aussehen?
-
-
Hallo,
ich spüre auch den Jagdtrieb nach einer Lösung.
Trotzdem glaube ich, dass es sicher viel einfacher wär, dem Raspi-Programm noch zusätzlich einen SimpleApi Aufruf zu verpassen, als in iobroker alles rauszuparsen. Kannst du das Programm nicht hier veröffentlichen?
Gruß
Pix