Nachdem hier danach gefragt wurde: https://knx-user-forum.de/347744-post16.html
Hier der Code für mein csv-Plugin, zwar Spaghetti-Code, aber manchmal find ich das übersichtlicher als die vielen push...
Das Plugin schreibt immer innerhalb der 1min nach Mitternacht, die Daten kommen aus anderen Plugins etc. und werden mit knx_read gelesen.
lg
Robert
Zitat von XueSheng
Beitrag anzeigen
Das Plugin schreibt immer innerhalb der 1min nach Mitternacht, die Daten kommen aus anderen Plugins etc. und werden mit knx_read gelesen.
lg
Robert
Code:
# Verbrauchsdaten schreiben # V1.00 2013-03-03 use Date::Calc qw(:all); ### Definitionen ### Hier werden die Werte/Gruppenadressen definiert my $WP_Laufzeit4bit_ga = "5/0/3"; # WP Laufzeit gesamt DPT14 my $WP_Starts_ga = "5/0/4"; # WP Starts DPT12 my $Brunnenpumpe_Laufzeit4bit_ga = "5/0/23"; # Brunnenpumpe Laufzeit gesamt DPT14 my $Brunnenpumpe_Starts_ga = "5/0/24"; # Brunnenpumpe Starts DPT12 my $Stromzaehler_Haus_Zaehlerstand_ga = "5/0/41"; # Stromzaehler Zaehlerstand Haus DPT14 my $Stromzaehler_WP_Zaehlerstand_ga = "5/0/46"; # Stromzaehler Zaehlerstand WP DPT14 my $Zaehlerstand_DG2_ga = "7/1/6"; my $Zaehlerstand_Licht_ga = "3/5/2"; my $Zaehlerstand_DG1_ga = "7/1/16"; my $Zaehlerstand_GS_ga = "7/1/26"; my $Zaehlerstand_KS_ga = "7/1/36"; my $Zaehlerstand_GFS_ga = "7/1/46"; my $Zaehlerstand_WM_ga = "7/0/16"; my $Zaehlerstand_TR_ga = "7/0/26"; my $Zaehlerstand_BP_ga = "7/0/36"; ### Ende Definitionen # Eigenen Aufruf-Zyklus auf 20 Sekunden setzen # der Aufrufzyklus ist unabhängig von der Taktzeit und muss kürzer sein! $plugin_info{$plugname.'_cycle'} = 20; my $write = $plugin_info{$plugname.'_written'}; my $sec; my $min; my $hour; my $mday; my $mon; my $year; my $wday; my $yday; my $isdst; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year += 1900; $mon += 1; #return "Zeit $hour:$min:$sec"; $hour == 0 and if (($hour == 0 and $min == 0) and $write == 0) { $plugin_info{$plugname.'_written'} = 1; my $WP_Laufzeit = knx_read($WP_Laufzeit4bit_ga,0,14); my $WP_Starts = knx_read($WP_Starts_ga,0,12); my $Brunnenpumpe_Laufzeit = knx_read($Brunnenpumpe_Laufzeit4bit_ga,0,14); my $Brunnenpumpe_Starts = knx_read($Brunnenpumpe_Starts_ga,0,12); my $Stromzaehler_Haus = knx_read($Stromzaehler_Haus_Zaehlerstand_ga,0,14); my $Stromzaehler_WP = knx_read($Stromzaehler_WP_Zaehlerstand_ga,0,14); my $Zaehlerstand_DG2 = knx_read($Zaehlerstand_DG2_ga,0,14); my $Zaehlerstand_Licht = knx_read($Zaehlerstand_Licht_ga,0,14); my $Zaehlerstand_DG1 = knx_read($Zaehlerstand_DG1_ga,0,14); my $Zaehlerstand_GS = knx_read($Zaehlerstand_GS_ga,0,14); my $Zaehlerstand_KS = knx_read($Zaehlerstand_KS_ga,0,14); my $Zaehlerstand_GFS = knx_read($Zaehlerstand_GFS_ga,0,14); my $Zaehlerstand_WM = knx_read($Zaehlerstand_WM_ga,0,14); my $Zaehlerstand_TR = knx_read($Zaehlerstand_TR_ga,0,14); my $Zaehlerstand_BP = knx_read($Zaehlerstand_BP_ga,0,14); $mon = sprintf("%02d", $mon); $mday = sprintf("%02d", $mday); $hour = sprintf("%02d", $hour); $min = sprintf("%02d", $min); my $DatumZeit = "$year-$mon-$mday; $hour:$min"; my $wert_neu = "$DatumZeit; $WP_Laufzeit; $WP_Starts; $Brunnenpumpe_Laufzeit; $Brunnenpumpe_Starts; $Stromzaehler_Haus; $Stromzaehler_WP; $Zaehlerstand_Licht; $Zaehlerstand_DG2; $Zaehlerstand_DG1; $Zaehlerstand_GS; $Zaehlerstand_KS; $Zaehlerstand_GFS; $Zaehlerstand_WM; $Zaehlerstand_TR; $Zaehlerstand_BP \n"; open(File,'>>/var/www/rrd/Verbrauchsdaten.csv'); print File $wert_neu; close File; return; #"Zeit $hour:$min:$sec write $write"; } elsif (($hour == 0 and $min == 1) and $write == 1) { $plugin_info{$plugname.'_written'} = 0; return; #"Zeit $hour:$min:$sec Reset write $write": } return;
Kommentar