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;


.
verschicken?
Kommentar