
Läuft wunderbar.
Gruß
David
### Plugin Min/Max values from RRD auf den Bus
my $RRDName = "28.203CF0020000_temp";
my $ds = "MIN"; # Datasource: MIN AVERAGE MAX - egal bei Werten <180h
my $start = "now-20h"; # AT-STYLE TIME SPECIFICATION
my $end = "now";
$plugin_info{$plugname.'_cycle'} = 3600; # alle x sekunden
my $debug = 0;
my $gamin = '7/3/0'; # DPT9.001 leer um Versand zu unterbinden-> ''
my $gamax = '7/3/1'; # leer um Versand zu unterbinden-> ''
### ENDE Definitionen
# return early on write/response (telegram from myself!)
if ($msg{'apci'} && $msg{'apci'} ne "A_GroupValue_Read") {
return;
}
-my ($min,$max) = (0,0);
+my ($min,$max);
my ($dbstart, $step, $names, $data) =
RRDs::fetch('/var/www/rrd/'.$RRDName.'.rrd', "--start=$start","--end=$end", $ds);
foreach my $line (@$data) {
foreach my $val (@$line) {
next unless defined $val;
+ $min = $val unless defined $min;
+ $max = $val unless defined $max;
$min = $val if $val < $min;
$max = $val if $val > $max;
}
}
if ($msg{'apci'} eq "A_GroupValue_Read" and $msg{'dst'} eq $gamin) {
knx_write($gamin,$min,9,1);
return;
} elsif ($msg{'apci'} eq "A_GroupValue_Read" and $msg{'dst'} eq $gamax) {
knx_write($gamax,$max,9,1);
return;
}
if ($gamin) {
knx_write($gamin,$min,9);
$plugin_subscribe{$gamin}{$plugname} = 1;
}
if ($gamax) {
knx_write($gamax,$max,9);
$plugin_subscribe{$gamax}{$plugname} = 1;
}
return("Min $min Max $max in $start") if $debug;
return;


Habs oben korrigiert. (100,-100 ginge auch aber dann gehts unter/über 100 nicht, besser so..)markstaller@v1520-mm:~/devel/openautomation/wiregate$ svn diff
Index: plugin/generic/MinMaxValueFromRRDtoGA.pl
===================================================================
--- plugin/generic/MinMaxValueFromRRDtoGA.pl (Revision 472)
+++ plugin/generic/MinMaxValueFromRRDtoGA.pl (Arbeitskopie)
@@ -14,13 +14,15 @@
return;
}
-my ($min,$max) = (0,0);
+my ($min,$max);
my ($dbstart, $step, $names, $data) =
RRDs::fetch('/var/www/rrd/'.$RRDName.'.rrd', "--start=$start","--end=$end", $ds);
foreach my $line (@$data) {
foreach my $val (@$line) {
next unless defined $val;
+ $min = $val unless defined $min;
+ $max = $val unless defined $max;
$min = $val if $val < $min;
$max = $val if $val > $max;
}
Wenns wie derzeit also über 0 Grad liegt, wird das nicht MIN. Gleiches vermutlich für MAX im kalten Winter. Vermutlich muss das noch initialisiert werden?
Aber das ist ein anderes Thema.### Plugin Min/Max values from RRD auf den Bus
# v0.3
my $RRDName = "28.7FD4EB010000_temp";
my $ds = "MIN"; # Datasource: MIN AVERAGE MAX - egal bei Werten <180h
my $start = "now-20h"; # AT-STYLE TIME SPECIFICATION
my $end = "now";
$plugin_info{$plugname.'_cycle'} = 3600; # alle x sekunden
my $debug = 0;
my $gamin = '11/2/20'; # leer um Versand zu unterbinden-> ''
my $gamax = '11/2/21'; # leer um Versand zu unterbinden-> ''
my $dpt = $eibgaconf{$gamin}{'DPTSubId'} || $eibgaconf{$gamax}{'DPTSubId'} || "9.001";
# hier einen Wert setzen (statt "9.001" z.B. "5.001"), falls es nicht im import/config ist
### ENDE Definitionen
# return early on write/response (telegram from myself!)
if ($msg{'apci'} && $msg{'apci'} ne "A_GroupValue_Read") {
return;
}
my ($min,$max);
my ($dbstart, $step, $names, $data) =
RRDs::fetch('/var/www/rrd/'.$RRDName.'.rrd', "--start=$start","--end=$end", $ds);
foreach my $line (@$data) {
foreach my $val (@$line) {
next unless defined $val;
$min = $val unless defined $min;
$max = $val unless defined $max;
$min = $val if $val < $min;
$max = $val if $val > $max;
}
}
if ($msg{'apci'} eq "A_GroupValue_Read" and $msg{'dst'} eq $gamin) {
knx_write($gamin,$min,$dpt,1);
return;
} elsif ($msg{'apci'} eq "A_GroupValue_Read" and $msg{'dst'} eq $gamax) {
knx_write($gamax,$max,$dpt,1);
return;
}
if ($gamin) {
knx_write($gamin,$min,$dpt);
$plugin_subscribe{$gamin}{$plugname} = 1;
}
if ($gamax) {
knx_write($gamax,$max,$dpt);
$plugin_subscribe{$gamax}{$plugname} = 1;
}
return("Min $min Max $max in $start") if $debug;
return;

Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.


Einen Kommentar schreiben: