From 1297b4f0bdd4b0c4541936776c2f4cc8b2770e57 Mon Sep 17 00:00:00 2001 From: justme1968 Date: Sat, 13 Feb 2016 17:22:19 +0000 Subject: [PATCH] 98_logProxy.pm: recalculate min/max values on clipping extendet range. see forum: http://forum.fhem.de/index.php/topic,49240.0.html git-svn-id: https://svn.fhem.de/fhem/trunk@10817 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_logProxy.pm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/98_logProxy.pm b/fhem/FHEM/98_logProxy.pm index 140cf4e8f..ffce300a1 100644 --- a/fhem/FHEM/98_logProxy.pm +++ b/fhem/FHEM/98_logProxy.pm @@ -532,6 +532,8 @@ logProxy_clipData($$$$;$) my ($dp, $from, $to, $interpolate, $predict) = @_; my $ret = ""; + my $min = 999999; + my $max = -999999; my $comment = ""; my ($dpl,$dpoff,$l) = (length($$dp), 0, ""); @@ -569,10 +571,15 @@ logProxy_clipData($$$$;$) my $value = $prev_value; $value = logProxy_linearInterpolate( SVG_time_to_sec($prev_timestamp), $prev_value, SVG_time_to_sec($d), $v, $from ) if( $interpolate ); + $min = $value if( $value < $min ); + $max = $value if( $value > $max ); + my @t = localtime($from); my $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]); $ret .= "$timestamp $value\n"; } + $min = $v if( $v < $min ); + $max = $v if( $v > $max ); $ret .= "$l\n"; @@ -606,6 +613,8 @@ logProxy_clipData($$$$;$) if( defined($next_value) ) { my $value = $prev_value; $value = logProxy_linearInterpolate( SVG_time_to_sec($prev_timestamp), $prev_value, SVG_time_to_sec($next_timestamp), $next_value, $to ) if( $interpolate ); + $min = $value if( $value < $min ); + $max = $value if( $value > $max ); my @t = localtime($to); my $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]); @@ -614,7 +623,7 @@ logProxy_clipData($$$$;$) $ret .= $comment; - return $ret; + return (\$ret, $min, $max); } #parse plot data to array @@ -887,7 +896,7 @@ logProxy_Get($@) # clip extended query range to plot range if( $clip || defined($predict) ) { - $$internal_data = logProxy_clipData($internal_data,$fromsec,$tosec,$interpolate,$predict); + ($internal_data,$main::data{"min1"},$main::data{"max1"}) = logProxy_clipData($internal_data,$fromsec,$tosec,$interpolate,$predict); } #call postprocessing function @@ -913,7 +922,7 @@ logProxy_Get($@) $data = $d; $comment = "#$a[$i]\n"; - ($internal_data,$main::data{"min1"}, $main::data{"max1"},$main::data{"currval1"}) = logProxy_array2Data($data,$comment); + ($internal_data,$main::data{"min1"},$main::data{"max1"},$main::data{"currval1"}) = logProxy_array2Data($data,$comment); } if( $$internal_data ) {