NEWS
ioBroker mit Influxdb => Datenbank als .csv
-
Hallo SBorg,
danke schon mal für deine Antwort.
Ich habe jetzt mal alles mit "Show" durchprobiert was unter >help steht:
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'show series' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
csv Datei erstellt: 1747 Bytes
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'show series information' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
error parsing query: found information, expected ; at line 1, char 13keine csv Datei erstellt
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'show measurements' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
csv Datei erstellt: 2117 Bytes
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'show measurements information' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
error parsing query: found information, expected ; at line 1, char 19keine csv Datei erstellt
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'show tag keys' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
csv Datei erstellt: 0 Bytes
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'show tag keys information' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
error parsing query: found information, expected ; at line 1, char 15keine csv Datei erstellt
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'show field keys' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
csv Datei erstellt: 8922 Bytes
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'show field keys information' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
error parsing query: found information, expected ; at line 1, char 17keine csv Datei erstellt
Leider ist keine Tabelle dabei worin meine Werte enthalten sind?
-
@meierchen006 Du musst schon präziser zu Influx sein was du möchtest. -execute 'select * from measurements'
Hier würde "alles" ausgegeben was in der Datenreihe "measurements" enthalten ist. (Beispiel: https://docs.influxdata.com/influxdb/v1.7/tools/shell/#execute-an-influxql-command-and-quit-with-execute)Aber ev. wäre das was, wie und wofür noch interessant? Normalerweise schreibt man gerade deswegen in eine Datenbank, um alles zentral an einer Stelle zu haben, und "zerpflückt" die im Nachhinein nicht wieder. Ev. machst du dir das Leben nur unnötig schwer? Wenn du die Daten unbedingt extra brauchst, kannst du sie auch parallel zB. mittels des History-Adapters mitloggen. Dann wäre aber wieder die Frage: wozu in eine Datenbank...?
-
Hallo
so nochmal ein Stück weiter. Danke für die Unterstützung an SBorg.
So sieht das jetzt für einzelne Werte aus:
sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Wetter.092-Wetter-Test.tele.Sensor-Temperatur"' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Wetter.092-Wetter-Test.tele.Sensor-Luftdruck"' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Wetter.092-Wetter-Test.tele.Sensor-Luftfeuchte"' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
So funktioniert es wenn ich drei Werte in einem Aufruf abhole:
sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Wetter.092-Wetter-Test.tele.Sensor-Temperatur","mqtt.0.SmartHome.Wetter.092-Wetter-Test.tele.Sensor-Luftdruck","mqtt.0.SmartHome.Wetter.092-Wetter-Test.tele.Sensor-Luftfeuchte"' > /media/usb_stick_128/datenbanken_csv/DBWetter.csv
Allerdings stehen dann alle Werte in Zeilen untereinander.
Mir wäre es lieber gewesen wenn ich drei Spalten hintereinander haben könnte:
Beispiel so:
name | time | ack | from | q | value Temperatur | value Luftdruck | value Luftfeuchte |Und dann möchte ich auch nicht immer die ganze Tabelle sondern differenzieren nach Datum, werde ich auch noch herausfinden.
Allerdings gibt es immer noch ein paar Hürden zu nehmen:
So ist wenn ich den Namen der zu speichernden xxx.csv Datei erweitert wird von z.B. DBWetter.csv zu DBWetter_01.csv ein Fehler ausgegeben:pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBWetter' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Wetter.092-Wetter-Test.tele.Sensor-Temperatur"' > /media/usb_stick_128/datenbanken_csv/DBWetter_01.csv
-bash: /media/usb_stick_128/datenbanken_csv/DBWetter_01.csv: Keine Berechtigung
pi@ioBroker:~ $Es wird also nicht die neue Datei "DBWetter_01.csv" erstellt.
Auch funktioniert es nicht, von einer anderen Datenbank eine .csv zu erstellen:
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas"' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
-bash: /media/usb_stick_128/datenbanken_csv/DBEnergie.csv: Keine Berechtigung
pi@ioBroker:~ $Da habe ich noch nicht verstanden warum das nicht funktioniert?
VG
meierchen006 -
@meierchen006 sagte in ioBroker mit Influxdb => Datenbank als .csv:
Allerdings stehen dann alle Werte in Zeilen untereinander.
Mir wäre es lieber gewesen wenn ich drei Spalten hintereinander haben könnte:Den "Zahn" muss ich dir leider ziehen, dass geht nicht. Du könntest höchstens ein Makro in Excel erstellen was es dann bei Ausführung für dich umkopiert.
Die Zeit kannst du mittels "Where" noch einschränken. Bsp. für die letzten 7 Tage:
-execute 'SELECT * FROM "mqtt.0..." WHERE time > now() - 7d'
@meierchen006 sagte in ioBroker mit Influxdb => Datenbank als .csv:
-bash: /media/usb_stick_128/datenbanken_csv/DBEnergie.csv: Keine Berechtigung
Das, und der andere Fehler, deutet auf mangelnde Rechte hin. Der User "pi" darf anscheinend keine Dateien im Verzeichnis anlegen.
-
Hallo SBorg,
Übersicht über die Rechte:
pi@ioBroker:~ $
pi@ioBroker:~ $ cd /media/usb_stick_128
pi@ioBroker:/media/usb_stick_128 $ ls -la
insgesamt 32
drwxr-xr-x 5 root root 4096 Jan 11 18:30 .
drwxr-xr-x 3 root root 4096 Jan 6 10:00 ..
drwxr-xr-x 2 root root 4096 Jan 15 13:48 datenbanken_csv
drwx------ 2 root root 16384 Jan 6 09:27 lost+found
drwxr-xr-x 3 root root 4096 Jan 6 20:07 varpi@ioBroker:/media/usb_stick_128 $ cd /media/usb_stick_128/datenbanken_csv
pi@ioBroker:/media/usb_stick_128/datenbanken_csv $
pi@ioBroker:/media/usb_stick_128/datenbanken_csv $
pi@ioBroker:/media/usb_stick_128/datenbanken_csv $ ls -la
insgesamt 1384
drwxr-xr-x 2 root root 4096 Jan 15 13:48 .
drwxr-xr-x 5 root root 4096 Jan 11 18:30 ..
-rw-r--r-- 1 pi pi 1408977 Jan 19 13:09 DBWetter.csv
pi@ioBroker:/media/usb_stick_128/datenbanken_csv $ -
@meierchen006 sagte in ioBroker mit Influxdb => Datenbank als .csv:
drwxr-xr-x 2 root root 4096 Jan 15 13:48 datenbanken_csv
Jo, ziemlich eindeutig. Verzeichnis gehört User und Gruppe "root" und nur der User "root" hat auch Schreibrechte ("w") im Verzeichnis. Da wahrscheinlich eh kein anderer an den PI ran kommt, könnten die Rechte auch auf den User PI übergehen?
cd /media/usb_stick_128/ chown -R pi datenbanken_csv*
Dein Aufruf geschieht zwar mit "sudo", der bezieht sich aber nur auf den Befehl "influx". Durch das "pipen" (>) kommt der aber quasi "nicht durch", die Datei soll also ohne root-Rechte wieder als normaler User angelegt werden --> Zugriff verweigert
-
Hallo SBorg,
wenn ich ausführen möchte was du geschrieben hast passiert dies:
pi@ioBroker:~ $ cd /media/usb_stick_128
pi@ioBroker:/media/usb_stick_128 $ chown -R pi datenbanken_csv*
chown: der Eigentümer von 'datenbanken_csv' wird geändert: Die Operation ist nicht erlaubt
pi@ioBroker:/media/usb_stick_128 $pi@ioBroker:/media/usb_stick_128 $ ls -la
insgesamt 32
drwxr-xr-x 5 root root 4096 Jan 11 18:30 .
drwxr-xr-x 3 root root 4096 Jan 6 10:00 ..
drwxr-xr-x 2 root root 4096 Jan 15 13:48 datenbanken_csv
drwx------ 2 root root 16384 Jan 6 09:27 lost+found
drwxr-xr-x 3 root root 4096 Jan 6 20:07 var
pi@ioBroker:/media/usb_stick_128 $Hat sich also nichts geändert!
pi@ioBroker:~ $ cd /media/usb_stick_128
pi@ioBroker:/media/usb_stick_128 $ sudo chown -R pi datenbanken_csv*
pi@ioBroker:/media/usb_stick_128 $pi@ioBroker:/media/usb_stick_128 $ ls -la
insgesamt 32
drwxr-xr-x 5 root root 4096 Jan 11 18:30 .
drwxr-xr-x 3 root root 4096 Jan 6 10:00 ..
drwxr-xr-x 2 pi root 4096 Jan 15 13:48 datenbanken_csv
drwx------ 2 root root 16384 Jan 6 09:27 lost+found
drwxr-xr-x 3 root root 4096 Jan 6 20:07 var
pi@ioBroker:/media/usb_stick_128 $Jetzt werde ich mal sehen ob sich weitere Ordner speichern lassen!
Ja funktioniert jetzt habe ich die neuen Ordner erstellen können!
Vielen Dank!
So jetzt muss ich mal meine weiteren Aufgaben (Datumseinschränkung) machen!
VG
meierchen006 -
Hallo SBorg,
die Zeit/Datum Einschränkung macht mir noch Probleme:
Erst:
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas" WHERE time >"2020-01-01T00:00:00Z" and time <"2020-01-15T23:59:59Z"' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
invalid operation: time and *influxql.VarRef are not compatible
pi@ioBroker:~ $jetzt aktuell:
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas"' WHERE time >= "2020-01-01T00:00:00Z" AND time <= "2020-01-15T23:59:59Z" > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
unknown arguments: WHERE time 2020-01-01T00:00:00Z AND time 2020-01-15T23:59:59Z
pi@ioBroker:~ $pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas"' WHERE time >= '2020-01-01T00:00:00Z' AND time <= '2020-01-15T23:59:59Z' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
unknown arguments: WHERE time 2020-01-01T00:00:00Z AND time 2020-01-15T23:59:59Z
pi@ioBroker:~ $Habe jetzt hier nochmal nachgeschaut:
github.com/influxdata/docspi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas"' WHERE time > '''2020-01-01''' and time < '''2020-01-15T23:59:59Z'' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
unknown arguments: WHERE time
pi@ioBroker:~ $sehe aber meinen Fehler nicht? evtl. siehst du was
-
Hallo SBorg,
Oben hatte ich noch ein Leerzeichen vor dem "WHERE"
heute Morgen nochmal mit deinem Vorschlag von gestern getestet:
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas"'WHERE time > now() - 7d' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
-bash: Syntaxfehler beim unerwarteten Wort `('
pi@ioBroker:~ $pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas"'WHERE time>= '2020-01-01T00:00:00Z' AND time <= '2020-01-15T23:59:59Z' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
unknown arguments: time 2020-01-01T00:00:00Z AND time 2020-01-15T23:59:59Z
pi@ioBroker:~ $pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas"'WHERE time > '2020-01-01T00:00:00Z' AND time < '2020-01-15T23:59:59Z' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
-bash: 2020-01-15T23:59:59Z: Datei oder Verzeichnis nicht gefunden
pi@ioBroker:~ $VG
meierchen006 -
@meierchen006 sagte in ioBroker mit Influxdb => Datenbank als .csv:
-execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas"'WHERE time > now() - 7d'
Du hast bei fast allen Versuchen ein ' zu viel drin:
-execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas" WHERE time > now() - 7d'
...und bei denen zwei oder drei wo du es nicht drin hast, hast du leider gleich einen anderen Fehler eingebaut:
bei Time-Strings wie bspw. 2020-01-15T23:59:59Z dürfen keine doppelten Anführungszeichen (") benutzt werden, sondern nur einfache (') -
Hallo SBorg,
pi@ioBroker:~ $
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas" WHERE time > now() - 31d' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
pi@ioBroker:~ $pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas" WHERE time > now() - 7d' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
pi@ioBroker:~ $scheint zu funktionieren
dies leider nicht loggt sich direkt in die Influx Konsole ein:
pi@ioBroker:~ $ sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute 'SELECT * FROM "mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas" WHERE time >= '2020-01-01T00:00:00Z' AND time <= '2020-01-15T23:59:59Z' > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
> -
@meierchen006 Das hängt da leider mit den ' zusammen. Dein Befehl ist -execute ' ... ' Kommen jetzt zwischen dem beginnenden und endenden ' noch weitere hinzu, kann er das nicht mehr richtig interpretieren. Versuch mal:
sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute "SELECT * FROM \"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas\" WHERE time >= '2020-01-01T00:00:00Z' AND time <= '2020-01-15T23:59:59Z'" > /media/usb_stick_128/datenbanken_csv/DBEnergie.csv
-
Hallo SBorg,
ja so funktioniert es:
sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute "SELECT * FROM \"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas\" WHERE time >= '2020-01-01T00:00:00Z' AND time <= '2020-01-31T23:59:59Z'" > /media/usb_stick_128/datenbanken_csv/DBEnergie_02.csv
so jetzt teste ich noch wenn alle Sensoren in eine .csv Datei kommen, ob dies auch funktioniert.
sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute "SELECT * FROM \"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-H2O\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Strom\" WHERE time >= '2020-01-01T00:00:00Z' AND time <= '2020-01-31T23:59:59.999Z'" > /media/usb_stick_128/datenbanken_csv/DBEnergie_05.csv
Ja so würde es mit drei Sensoren aussehen.
Vielen Herzlichen Dank für deine Unterstützung
Viele Grüße
meierchen006 -
Hallo SBorg,
Nun habe ich doch noch Fragen:
Gibt es eine Möglichkeit direkt aus Windows 10 raus eine Abfrage in meinen Raspberry zu starten, wo diese Daten dann abgerufen und in eine .csv Datei gespeichert werden, ohne das ich mich immer extra in den Raspberry einloggen muss?Wenn ja, wie würde eine solche Lösung aussehen?
Viele Grüße
meierchen006 -
Das geht auch, wird aber aufwändig.
Zuerst: brauchst du "sudo" bei influx überhaupt? Sollte auch ohne gehen?
Dann musst du ein Shellskript zB. im home-Verzeichnis anlegen mit deinem influx-Aufruf und ausführbar machen.
Dann musst du ein SSH-Zertifikat erstellen und auf dem PI einrichten.
Dann kannst du vom Win-Rechner ssh pi@192.168.x.x .... mit dem Aufruf des Shellskriptes ausführen und das dank SSH-Zertifikat ohne Passworteingabe. -
Hallo SBorg,
ich habe noch eine Entdeckung gemacht und zwar kann man dem Befehle auch noch eine Timezone mitgeben:
influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute "SELECT * FROM \"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-H2O\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Strom\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Leistung\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Stroeme\" WHERE time >= '2020-01-01T00:00:00Z' AND time <= '2020-01-31T23:59:59.999Z' tz('Europe/Berlin')" > /media/usb_stick_128/datenbanken_csv/DBEnergie_WGS.csv
so sah ja das original aus:
sudo influx -username 'admin' -password '123456789' -host 'localhost' -database 'DBEnergie' -precision 'rfc3339' -format 'csv' -execute "SELECT * FROM \"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Gas\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-H2O\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Strom\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Leistung\",\"mqtt.0.SmartHome.Energie.100-WGS-Zaehler.tele.Sensor-Stroeme\" WHERE time >= '2020-01-01T00:00:00Z' AND time <= '2020-01-31T23:59:59.999Z'" > /media/usb_stick_128/datenbanken_csv/DBEnergie_WGS.csv
Somit ist im Moment mal die richtige Zeit im Export der csv. => originalzeit eben 2020-01-23 16:30 Uhr
beim erstellen der .csv DateiJa geht auch ohne "sudo"