FHEM Forum

FHEM => Automatisierung => Thema gestartet von: FhemPiUser am 28 September 2024, 15:02:13

Titel: Skript zum Import von Filelog-Dateien in eine Influx DB
Beitrag von: FhemPiUser am 28 September 2024, 15:02:13
Hiermit möchte ich ein Python-Skript zum Import von FHEM FileLog-Dateien in eine Influx DB teilen. Die Idee dazu wurde hier (https://forum.fhem.de/index.php?topic=139237.msg1320706#msg1320706) beschrieben.

Mit dem Befehl

python3 importFilelog2influxdb.py -r Daily_PV_Generation -f /fhem/log/FileLog_PV_Daily

kann man z.B. das Reading "Daily_PV_Generation" aller FileLogs "FileLog_PV_Daily-*.log" in die Influx DB importieren. Damit kann man z.B. Graphen für historische Daten aus Fhem FileLog-Dateien generieren (Beispiel siehe Screenshot).

Im Skript muss noch die Config (InfluxDB-Server, -Token etc) individuell konfiguriert werden. Das Skript benötigt außerdem das Modul influxdb-client, der mit folgenden Befehl installiert werden kann:

pip install influxdb-client

Vorher sollte man idealerweise ein virtuelles Environment eingerichtet haben (Anleitung siehe z.B. hier (https://www.computerwoche.de/article/2826499/virtual-environments-in-python-erklaert.html))

Des Weiteren habe ich ein Skript geschrieben, um Filelog-Daten wieder aus der Influx-DB zu löschen.

Mit dem Befehl

python3 deleteDatainfluxdb.py -f FileLog_PV_Daily -s 2023-10-01 -e 2024-10-01

löscht man z.B. alle Daten zum FileLog_PV_Daily im Zeitraum 2023-10-01 bis 2024-10-01.

Update/Change Log importFilelog2influxdb:
- v0.2 mit der Möglichkeit ein start-Datum für den Import anzugeben
- v0.3 mit der Möglichkeit inkrementell zu importieren durch Angabe eines relativen Start-Datums. "-1d" als start-Datum wäre immer Import aller Dateien, die bis zu 1 Tag zurück (bzw. gestern) geändert wurden. Das wird bei mir jede Nacht auf dem NAS ausgeführt, um die täglich FileLogs mit Grafana zu synchronisieren.
- v0.4 mit der Möglichkeit die Spalten für key (Reading-Name) und value (Reading-Wert) anzugeben, um spezielle FileLog-Formate wie z.B. CUL_EM zu unterstützen