Influx DB nach Excel dumpen

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

Moderator: Schattenschimmer

Antworten
Stefan_E
Beiträge: 3
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) 75 mal betrachtet
dump_Influx.zip.txt
Endung .txt entfernen --> .zip
(692.49 KiB) 2-mal heruntergeladen

Antworten