Influx DB nach Excel dumpen

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen.

Moderatoren: Ulrich, TeamO

Antworten
Stefan_E
Beiträge: 13
Registriert: Do 2. Jan 2020, 22:08

Influx DB nach Excel dumpen

Beitrag von Stefan_E »

Ich hab mir ein perl script gebastelt, mit dem ich die Influx DB flexibel nach Excel dumpen kann. Wenn's jemandem etwas nützt: hier eine kurze Uebersicht. Ich denk, ich leg mir damit ein monatliches Archiv des Verhaltens meiner Anlage an.

Das Script und eine Dokumentation ist im Anhang. Es kann sowohl auf dem Raspi installiert werden (einfach, aber langsam) oder auf einem PC (etwas mehr Installationsschritte, dafür schneller - bei mir 10x schneller).

Im einfachsten Fall (ohne config.ini file) wird ein Excel File mit einem Tab für den laufenden Monat generiert, das die Tabellen PV, AC, Batterie, Summen enthält.

Code: Alles auswählen

perl Dump_InFluxDB.pl
Es gibt aber auch ein config.ini file, mit dem man sagen kann:
  • welche Tabellen genau gedumped werden sollen
  • dass man gewisse columns nicht sehen will
  • gewisse columns aus Rohdaten gerechnet werden sollen
  • Excel charts erstellt werden sollen
Und man kann in der Command Line sagen, welcher Zeitraum geholt werden soll - z.B., nur "heute", letzten Monat, ... etc.

Das .pdf File im Anhang beschreibt die Details (sorry - auf English, da ich immer wieder Versatzstücke aus anderen Scripts und Dokumenten verwende...)

Beispiel: Mit dem config.ini file unten sagt man:
  • kontaktiere Influx auf 192.168.178.89 (mein SolarAnzeige Raspi)
  • hol Daten aus den Tabellen PV und AC (Datenbank solaranzeige ist default)
  • lösche die Columns die zu String 3 gehören (im Moment nichts angeschlossen ... - die Batterie ist wegen Covid in China steckengeblieben)
  • rechne eine Column 'Inverter_Loss_%' aus DC und AC Leistung
  • generiere einen Plot, der diesen Loss gegen die DC Leistung aufträgt (alle calls set_xxx sind nur zur Verschönerung der Defaults)
Der Plot unten enthält Daten von einem Tag für einen Kostal Plenticore Plus 10

Code: Alles auswählen

[GENERAL]
# Demo config.ini file
host       : 192.168.178.89                                                                     # host containing db
tables     : { 01_Data => PV, AC ; }

[01_Data]                                                                                       # tab name; must be key in hash 'tables' in secion [GENERAL]
# List of field names to be dropped:
drop       : { PV.Leistung_Str_3 ;
               PV.Spannung_Str_3 ;
               PV.Strom_Str_3    ;
             }

calculate  : { Inverter_Loss_% => if('PV.Gesamtleistung'=0, "", ('PV.Gesamtleistung' - 'AC.Leistung')/'PV.Gesamtleistung') ; }

charts     : { Eff_Loss => add_chart( type => 'scatter',
                                      name => 'Inverter',
                                      embedded => 1 )
                           add_series( categories => 'PV.Gesamtleistung',
                                       values     => 'Inverter_Loss_%',
                                       name       => 'Inverter Efficiency Loss',
                                       marker     => { type => 'diamond', size => 3 } )
                           set_x_axis( name       => 'PV.Gesamtleistung',
                                       name_font  => { name => 'Calibri (Body)', size => 10.5, bold => 1 },
                                       num_font   => { name => 'Calibri (Body)', size =>  9,   bold => 0 },
                                       min        =>     0,
                                       max        => 10000 )
                           set_y_axis( name       => 'Efficiency Loss',
                                       name_font  => { name => 'Calibri (Body)', size => 10.5, bold => 1 },
                                       num_font   => { name => 'Calibri (Body)', size =>  9,   bold => 0 },
                                       num_format => '0.0%',
                                       major_unit =>  0.1, 
                                       min        =>    0,
                                       max        =>  0.4 )
                           set_legend( none => 1 )
                           insert_chart('AB3', $chart);
             }
Fragen beantworte ich natürlich gerne, und falls jemand Bugs entdeckt bin ich auch da ... Neue Features nach Lust und Laune 8-)

Enjoy!
Dateianhänge
Capture.PNG
Capture.PNG (17.13 KiB) 1832 mal betrachtet
dump_Influx.zip.txt
Endung .txt entfernen --> .zip
(692.49 KiB) 97-mal heruntergeladen

Stefan_E
Beiträge: 13
Registriert: Do 2. Jan 2020, 22:08

Re: Influx DB nach Excel dumpen

Beitrag von Stefan_E »

Minor bug fixes
Dateianhänge
dump_Influx.zip.txt
(692.68 KiB) 73-mal heruntergeladen

r2d2master
Beiträge: 15
Registriert: Di 16. Apr 2019, 14:28

Re: Influx DB nach Excel dumpen

Beitrag von r2d2master »

Hi Stefan,
coole Software.
Habe es gestern installiert und ausprobiert.
Ich hatte nur Probleme mit dem Englisch, da ich die Vokabeln der Programmierung nur sehr schlecht verstehe.
Aber nachdem ich es, nach langem installieren, ausprobieren konnte und auch verstanden habe, wie es mit dem Datum funktioniert.
Konnte ich die Dumps mal durchführen. Knapp 2 Jahre in einer halben Stunde!
Da brauchte ich mit Grafana downloads deutlich mehr Zeit.
Ich versuche gerade meine Daten nach einem Absturz der SD-Karte zu restaurieren.
Wenn man die Daten nun auch wieder aus den CSV-Files in die Datenbank bekommen könnte.
Wäre es leicht, alles zu korrigieren. Zumindest nach mühsamen aufbereiten der Datenfragmente.
Ich habe es auch schon mal gemacht, es muss eigentlich funktionieren.
Nur leider finde ich meine vor etwa 2 Jahren gefundenen Hilfsmittel nicht mehr.
Da verrenne ich mich mittlerweile in der Welt, der zu vielen Möglichkeiten.
Leider ist die suche inzwischen sehr schwer geworden. Weil es eben auch im Internet zu viele Antworten gibt.
Die richtige zu finden, wird halt immer schwerer.
Wenn Du also etwas hast, womit man die Daten auch wieder in die InfluxDB zurückschreiben kann, wäre das für mich sehr hilfreich!

Danke für Deine Mühe und einer Antwort!

Gruß Martin

Stefan_E
Beiträge: 13
Registriert: Do 2. Jan 2020, 22:08

Re: Influx DB nach Excel dumpen

Beitrag von Stefan_E »

Hallo r2d2master,

sorry fuer die späte Antwort - ich hab grad raus gefunden wie man Themen hier abonnieren kann :-)

Zu Deinem Problem: Eine fertige Antwort habe ich nicht (mir ist zum Glück die Datenbank noch nicht gecrasht ...). Aber der Weg müsste ungefähr so gehen (mit Python):
  1. importiere .csv nach pandas DataFrame
  2. schreibe pandas DataFrame nach Influx
1/ ist hier:

Code: Alles auswählen

import pandas as pd
df = pd.read_csv('value.txt')
2/ geht dann ungefähr so (see docu von influxdb)

Code: Alles auswählen

from influxdb import DataFrameClient
myClient   = DataFrameClient(host='<your_host_name>', port=8086, database='solaranzeige')
myClient.write_points(df, '<measurement_name>)
Das müsstest Du also für die verschiedenen measurements von solaranzeige wiederholen (PV, AC, Batterie, ...)

PS: Wenn's mit dem English an bestimmten Stellen klemmt, lass es mich wissen - ich werd nur nicht das ganze übersetzen :-(

r2d2master
Beiträge: 15
Registriert: Di 16. Apr 2019, 14:28

Re: Influx DB nach Excel dumpen

Beitrag von r2d2master »

Hallo Stefan,
danke für Deine Unterstützung.
Ja abonieren ist schon wichtig und das da ein Haken sitzt wo ein Kreuz rein soll hilft auch nicht wirklich.
Habe es auch gerade getan, denn Deine Antwort ist gerade auch nur beim stöbern meiner Themen gefunden worden.
Ich bin mittlerweile schon ein paar Schritte voran gekommen.
Allerdings klappt es noch nicht so, wie ich es brauche. Ich werde mir das mal anschauen und probieren ob ich damit klar komme.
Ich melde mich dann dazu, wenn es klappt oder auch nicht klappt.

Danke schon mal...

Gruß Martin

r2d2master
Beiträge: 15
Registriert: Di 16. Apr 2019, 14:28

Re: Influx DB nach Excel dumpen

Beitrag von r2d2master »

Hi Stefan,
leider bleibe ich schon beim installieren der Software hängen.
Die Abhängigkeit von pandas erfordert wohl noch Anaconda und das lässt sich bei mir nicht aufspielen.
Oder ich kenne mich einfach nicht damit aus diverse Software zu installieren.
Das sh File lässt sich nicht ausführen.
So scheiterte der Versuch leider bevor ich es testen kann.

Danke für Deine Mühe!

Gruß Martin

Stefan_E
Beiträge: 13
Registriert: Do 2. Jan 2020, 22:08

Re: Influx DB nach Excel dumpen

Beitrag von Stefan_E »

Hallo Martin,

wenn Du ".sh" sagst, bist Du auf Linux; ich vermute auf dem Raspi? Der ist 32-bit und Anaconda verteilt soviel ich sehen, nur 64-bit Versionen.

Ich hab grad pandas auf meinem Raspi installiert: Meine Notes sagen mir:

Code: Alles auswählen

# check that pandas and numpy is installed: Try following sequence of commands
#     ~ $ python3
#     >>> import pandas as pd
#     >>> import numpy as np
#     >>> quit()
#     ~ $
# if this doesn't give an error, pandas and numpy are already installed. Else, check out: 
# https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html

sudo apt install python3-pandas
Bei meiner Lösungsskizze für den Import muss man noch den Index (Zeitstempel) etwas anpassen. Ich kann versuchen, das noch etwas genauer hin zu schreiben.

EDIT: ich merk grad dass mir meine Notes durcheinander gewirbelt sind... ich hoff das oben funktioniert ;-)

r2d2master
Beiträge: 15
Registriert: Di 16. Apr 2019, 14:28

Re: Influx DB nach Excel dumpen

Beitrag von r2d2master »

Hallo Stefan,

danke für Deine Mühe!
Ja, Raspberry ist richtig. Der Raspi 4 hat schon das 64 bit.
Kann aber auch noch im 32bit Modus laufen.
Für den Reparaturversuch habe ich den etwas schnelleren genommen.
Ich werde mir das noch mal anschauen.
Wäre einfacher mit einer fertigen Lösung.
Bei meinem Versuch hängt es vermutlich an den Variablen Typen.
Durch das umwandeln aus Excel und cvs in Text, verschwinden die Zahlen als INT .
Dadurch wird mein schreiben von Influx abgewiesen, weil er nur Strings bekommt.
Evtl. teste ich noch eine Perl Variante, wo ich die Variablen Typen korrigieren kann.
Habe in der Woche nur etwas wenig Zeit dafür.

Ich werde dann berichten!
Danke! Und schon mal ein schönes Wochenende!
Gruß Martin

Antworten