From 93af86a679820d0fb260a28e82b3ea077cb6041d Mon Sep 17 00:00:00 2001 From: tpoitzsch Date: Tue, 29 Apr 2014 20:13:15 +0000 Subject: [PATCH] git-svn-id: https://svn.fhem.de/fhem/trunk@5699 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/23_LUXTRONIK2.pm | 15 +++++++++------ fhem/FHEM/70_JSONMETER.pm | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/fhem/FHEM/23_LUXTRONIK2.pm b/fhem/FHEM/23_LUXTRONIK2.pm index e8c86c261..32679768f 100644 --- a/fhem/FHEM/23_LUXTRONIK2.pm +++ b/fhem/FHEM/23_LUXTRONIK2.pm @@ -1493,16 +1493,19 @@ LUXTRONIK2_doStatisticMinMaxSingle ($$$$) my @a = split / /, $hash->{READINGS}{"." . $readingName}{VAL}; # Internal values my @b = split / /, $lastReading; # Do calculations + $a[1]++; # Count + $a[3] += $value; # Sum + if ($value < $b[1]) { $b[1]=$value; } # Min + $b[3] = sprintf "%.1f" , $a[3] / $a[1]; # Avg + if ($value > $b[5]) { $b[5]=$value; } # Max + + # in case of period change, save "last" values and reset counters if ($saveLast) { + $result = "Min: $b[1] Avg: $b[3] Max: $b[5]"; + if ($a[5] == 1) { $result .= " (since: $b[7] )"; } readingsBulkUpdate($hash, $readingName . "Last", $lastReading); $a[1] = 1; $a[3] = $value; $a[5] = 0; $b[1] = $value; $b[3] = $value; $b[5] = $value; - } else { - $a[1]++; # Count - $a[3] += $value; # Sum - if ($value < $b[1]) { $b[1]=$value; } # Min - $b[3] = sprintf "%.1f" , $a[3] / $a[1]; # Avg - if ($value > $b[5]) { $b[5]=$value; } # Max } # Store internal calculation values $result = "Count: $a[1] Sum: $a[3] ShowDate: $a[5]"; diff --git a/fhem/FHEM/70_JSONMETER.pm b/fhem/FHEM/70_JSONMETER.pm index ab507dba9..fbc4b151e 100644 --- a/fhem/FHEM/70_JSONMETER.pm +++ b/fhem/FHEM/70_JSONMETER.pm @@ -697,16 +697,19 @@ JSONMETER_doStatisticMinMaxSingle ($$$$) my @a = split / /, $hash->{READINGS}{"." . $readingName}{VAL}; # Internal values my @b = split / /, $lastReading; # Do calculations + $a[1]++; # Count + $a[3] += $value; # Sum + if ($value < $b[1]) { $b[1]=$value; } # Min + $b[3] = sprintf "%.0f" , $a[3] / $a[1]; # Avg + if ($value > $b[5]) { $b[5]=$value; } # Max + + # in case of period change, save "last" values and reset counters if ($saveLast) { + $result = "Min: $b[1] Avg: $b[3] Max: $b[5]"; + if ($a[5] == 1) { $result .= " (since: $b[7] )"; } readingsBulkUpdate($hash, $readingName . "Last", $lastReading); $a[1] = 1; $a[3] = $value; $a[5] = 0; $b[1] = $value; $b[3] = $value; $b[5] = $value; - } else { - $a[1]++; # Count - $a[3] += $value; # Sum - if ($value < $b[1]) { $b[1]=$value; } # Min - $b[3] = sprintf "%.0f" , $a[3] / $a[1]; # Avg - if ($value > $b[5]) { $b[5]=$value; } # Max } # Store internal calculation values $result = "Count: $a[1] Sum: $a[3] ShowDate: $a[5]";