From ec1d273dc13d98b2956721e2ecd2f35250d312d9 Mon Sep 17 00:00:00 2001 From: tpoitzsch <> Date: Wed, 21 May 2014 19:54:17 +0000 Subject: [PATCH] bugfix git-svn-id: https://svn.fhem.de/fhem/trunk@5925 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_statistics.pm | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/fhem/FHEM/98_statistics.pm b/fhem/FHEM/98_statistics.pm index 3971d4a4a..12b9fcff7 100644 --- a/fhem/FHEM/98_statistics.pm +++ b/fhem/FHEM/98_statistics.pm @@ -38,7 +38,7 @@ use warnings; use Time::Local; sub statistics_PeriodChange($); -sub statistics_DoStatisticsAll($); +sub statistics_DoStatisticsAll($$); sub statistics_DoStatistics ($$$); sub statistics_doStatisticMinMax ($$$$$); sub statistics_doStatisticMinMaxSingle ($$$$$$$); @@ -162,7 +162,7 @@ statistics_Set($$@) return $resultStr; } elsif ($cmd eq 'doStatistics') { - statistics_DoStatisticsAll($hash); + statistics_DoStatisticsAll($hash,0); return undef; } my $list = "resetStatistics:all" . statistics_getStoredDevices($hash); @@ -185,7 +185,7 @@ statistics_Notify($$) delete($hash->{READINGS}{$r}); } } - statistics_DoStatisticsAll $hash; + statistics_DoStatisticsAll $hash, 0; my %unknownDevices; foreach my $r (keys %{$hash->{READINGS}}) { if ($r =~ /^\.(.*):.*/) { $unknownDevices{$1}++; } @@ -294,35 +294,23 @@ statistics_PeriodChange($) elsif ($monthNow != $monthLast) { $periodSwitch = 3; } elsif ($dayNow != $dayLast) { $periodSwitch = 2; } - foreach my $r (keys %{$hash->{READINGS}}) - { - if ($r =~ /^monitoredDevices.*/) { - if ($r !~/UnknownTypes|Unsupported/) { - Log3 $name,4,"$name: Starting period change statistics (Type: $periodSwitch) for all devices of reading '$r'"; - my @devNameArray = split /,/, $hash->{READINGS}{$r}{VAL}; - foreach my $devName (@devNameArray) { - Log3 $name,4,"$name: Doing period change statistics for device '$devName'"; - statistics_DoStatistics $hash, $defs{$devName}, $periodSwitch; - } - } - } - } + statistics_DoStatisticsAll $hash, $periodSwitch; return undef; } ########################## sub -statistics_DoStatisticsAll($) +statistics_DoStatisticsAll($$) { - my ($hash) = @_; + my ($hash,$periodSwitch) = @_; my $name = $hash->{NAME}; return "" if(!defined($hash->{DEV_REGEXP})); my $regexp = $hash->{DEV_REGEXP}; foreach my $devName (sort keys %defs) { - if($devName =~ m/^($regexp)$/) { - Log3 $name,4,"$name: Doing statistics for device '$devName'"; - statistics_DoStatistics($hash, $defs{$devName}, 0); + if ($devName ne $name && $devName =~ m/^($regexp)$/) { + Log3 $name,4,"$name: Doing statistics (type $periodSwitch) for device '$devName'"; + statistics_DoStatistics($hash, $defs{$devName}, $periodSwitch); } } } @@ -783,7 +771,7 @@ statistics_FormatDuration($) my ($value) = @_; #Tage my $returnstr =""; - if ($value > 86400) { sprintf "%d\d ", int($value/86400); } + if ($value > 86400) { $returnstr = sprintf "%dd ", int($value/86400); } # Stunden $value %= 86400; $returnstr .= sprintf "%02d:", int($value/3600);