2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-08 01:14:19 +00:00
git-svn-id: https://svn.fhem.de/fhem/trunk@5925 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
tpoitzsch 2014-05-21 19:54:17 +00:00
parent 0798427a9b
commit ec1d273dc1

View File

@ -38,7 +38,7 @@ use warnings;
use Time::Local; use Time::Local;
sub statistics_PeriodChange($); sub statistics_PeriodChange($);
sub statistics_DoStatisticsAll($); sub statistics_DoStatisticsAll($$);
sub statistics_DoStatistics ($$$); sub statistics_DoStatistics ($$$);
sub statistics_doStatisticMinMax ($$$$$); sub statistics_doStatisticMinMax ($$$$$);
sub statistics_doStatisticMinMaxSingle ($$$$$$$); sub statistics_doStatisticMinMaxSingle ($$$$$$$);
@ -162,7 +162,7 @@ statistics_Set($$@)
return $resultStr; return $resultStr;
} elsif ($cmd eq 'doStatistics') { } elsif ($cmd eq 'doStatistics') {
statistics_DoStatisticsAll($hash); statistics_DoStatisticsAll($hash,0);
return undef; return undef;
} }
my $list = "resetStatistics:all" . statistics_getStoredDevices($hash); my $list = "resetStatistics:all" . statistics_getStoredDevices($hash);
@ -185,7 +185,7 @@ statistics_Notify($$)
delete($hash->{READINGS}{$r}); delete($hash->{READINGS}{$r});
} }
} }
statistics_DoStatisticsAll $hash; statistics_DoStatisticsAll $hash, 0;
my %unknownDevices; my %unknownDevices;
foreach my $r (keys %{$hash->{READINGS}}) { foreach my $r (keys %{$hash->{READINGS}}) {
if ($r =~ /^\.(.*):.*/) { $unknownDevices{$1}++; } if ($r =~ /^\.(.*):.*/) { $unknownDevices{$1}++; }
@ -294,35 +294,23 @@ statistics_PeriodChange($)
elsif ($monthNow != $monthLast) { $periodSwitch = 3; } elsif ($monthNow != $monthLast) { $periodSwitch = 3; }
elsif ($dayNow != $dayLast) { $periodSwitch = 2; } elsif ($dayNow != $dayLast) { $periodSwitch = 2; }
foreach my $r (keys %{$hash->{READINGS}}) statistics_DoStatisticsAll $hash, $periodSwitch;
{
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;
}
}
}
}
return undef; return undef;
} }
########################## ##########################
sub sub
statistics_DoStatisticsAll($) statistics_DoStatisticsAll($$)
{ {
my ($hash) = @_; my ($hash,$periodSwitch) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
return "" if(!defined($hash->{DEV_REGEXP})); return "" if(!defined($hash->{DEV_REGEXP}));
my $regexp = $hash->{DEV_REGEXP}; my $regexp = $hash->{DEV_REGEXP};
foreach my $devName (sort keys %defs) { foreach my $devName (sort keys %defs) {
if($devName =~ m/^($regexp)$/) { if ($devName ne $name && $devName =~ m/^($regexp)$/) {
Log3 $name,4,"$name: Doing statistics for device '$devName'"; Log3 $name,4,"$name: Doing statistics (type $periodSwitch) for device '$devName'";
statistics_DoStatistics($hash, $defs{$devName}, 0); statistics_DoStatistics($hash, $defs{$devName}, $periodSwitch);
} }
} }
} }
@ -783,7 +771,7 @@ statistics_FormatDuration($)
my ($value) = @_; my ($value) = @_;
#Tage #Tage
my $returnstr =""; my $returnstr ="";
if ($value > 86400) { sprintf "%d\d ", int($value/86400); } if ($value > 86400) { $returnstr = sprintf "%dd ", int($value/86400); }
# Stunden # Stunden
$value %= 86400; $value %= 86400;
$returnstr .= sprintf "%02d:", int($value/3600); $returnstr .= sprintf "%02d:", int($value/3600);