diff --git a/fhem/FHEM/72_FRITZBOX.pm b/fhem/FHEM/72_FRITZBOX.pm
index fd14d0a0b..005e47c1e 100644
--- a/fhem/FHEM/72_FRITZBOX.pm
+++ b/fhem/FHEM/72_FRITZBOX.pm
@@ -528,11 +528,13 @@ FRITZBOX_Readout_Run($)
push @readoutArray, ["", "ctlmgr_ctl r telcfg settings/RefreshDiversity" ];
push @readoutArray, ["", "ctlmgr_ctl r telcfg settings/Diversity/count" ];
- # Box model and firmware
+ # Box model and firmware
push @readoutArray, [ "box_model", 'echo $CONFIG_PRODUKT_NAME' ];
push @readoutArray, [ "box_fwVersion", "ctlmgr_ctl r logic status/nspver" ];
push @readoutArray, [ "box_fwUpdate", "ctlmgr_ctl r updatecheck status/update_available_hint" ];
+ push @readoutArray, [ "box_tr069", "ctlmgr_ctl r tr069 settings/enabled", "onoff" ];
+ # Execute commands
$resultArray = FRITZBOX_Readout_Query( $hash, \@readoutArray, \@readoutReadings);
my $dectCount = $resultArray->[1];
@@ -1974,6 +1976,7 @@ sub FRITZBOX_fritztris($)
box_guestWlanRemain - Remaining time until the guest WLAN is switched off
box_model - Fritz!Box model
box_moh - music-on-hold setting
+ box_tr069 - provider remote access TR069 (safety issue!)
box_wlan_2.4GHz - Current state of the 2.4 GHz WLAN
box_wlan_5GHz - Current state of the 5 GHz WLAN
@@ -2215,6 +2218,7 @@ sub FRITZBOX_fritztris($)
box_guestWlanRemain - Verbleibende Zeit bis zum Ausschalten des Gäste-WLAN
box_model - Fritz!Box-Modell
box_moh - Wartemusik-Einstellung
+ box_tr069 - Provider-Fernwartung TR069 (sicherheitsrelevant!)
box_wlan_2.4GHz - Aktueller Status des 2.4-GHz-WLAN
box_wlan_5GHz - Aktueller Status des 5-GHz-WLAN
diff --git a/fhem/FHEM/98_statistics.pm b/fhem/FHEM/98_statistics.pm
index ca6c3c0b7..f5783147c 100644
--- a/fhem/FHEM/98_statistics.pm
+++ b/fhem/FHEM/98_statistics.pm
@@ -861,48 +861,60 @@ sub statistics_doStatisticDurationSingle ($$$$$$)
my $hiddenReadingName = ".".$dev->{NAME}.":".$readingName.$period;
my $name=$hash->{NAME};
my $devName = $dev->{NAME};
+ $state =~ s/ /_/g;
my $statReadingName = $hash->{PREFIX};
$statReadingName .= ucfirst($readingName).$period;
my %hidden;
my $firstRun = not exists($hash->{READINGS}{$hiddenReadingName});
- my $lastState = $state;
- my $statValue = "00:00:00";
+ my $lastState;
+ my $statValue;
+ my $statCount;
if ( $firstRun ) {
# Show since-Value
$hidden{"showDate:"} = 1;
$saveLast = 0;
+ $lastState = $state;
+ $statValue = "00:00:00";
+ $statCount = 1;
$hidden{"(since:"} = strftime ("%Y-%m-%d_%H:%M:%S)",localtime() );
+ $hidden{$state} = 0;
+ $hidden{$state."_Count"} = 1;
} else {
# Do calculations if hidden reading exists
%hidden = split / /, $hash->{READINGS}{$hiddenReadingName}{VAL}; # Internal values
$lastState = $hidden{"lastState:"};
my $timeDiff = int(gettimeofday())-$hidden{"lastTime:"};
$hidden{$lastState.":"} += $timeDiff;
+ $hidden{$state."_Count:"}++
+ if $state ne $lastState;
+ $statCount = $hidden{$state."_Count:"};
$statValue = statistics_FormatDuration ($hidden{$lastState.":"});
}
$hidden{"lastState:"} = $state;
$hidden{"lastTime:"} = int(gettimeofday());
-
# Prepare new current reading, delete hidden reading if it is used again
$result = "";
- while (my ($key, $duration) = each(%hidden)){
- if ($key !~ /lastState:|lastTime:|showDate:|since:/) {
- if ($result ne "") {$result .= " ";}
- $result .= "$key ".statistics_FormatDuration($duration);
+ foreach my $key (sort keys %hidden)
+ {
+ if ($key !~ /^(lastState|lastTime|showDate|\(since):$/) {
+ $result .= " " if $result;
+ $result .= "$key ".statistics_FormatDuration($hidden{$key})
+ if $key !~ /_Count:$/;
+ $result .= "$key ".$hidden{$key}
+ if $key =~ /_Count:$/;
if ($saveLast) { delete $hidden{$key}; }
}
}
- if ($result eq "") {$result = "$state: 0";}
if ($hidden{"showDate:"} == 1) { $result .= " (since: ".$hidden{"(since:"}; }
# Store current reading as last reading, Reset current reading
if ($saveLast) {
readingsBulkUpdate($dev, $statReadingName . "Last", $result, 1);
statistics_Log $hash, 5, "Set '".$statReadingName . "Last = $result'";
- $result = "$state: 00:00:00";
+ $result = "$state: 00:00:00 ".$state."_Count: 1";
$hidden{"showDate:"} = 0;
}
@@ -913,14 +925,17 @@ sub statistics_doStatisticDurationSingle ($$$$$$)
# Store single readings
my $singularReadings = AttrVal($name, "singularReadings", "");
if ($singularReadings ne "") {
- # statistics_storeSingularReadings $hashName,$singularReadings,$dev,$statReadingName,$readingName,$statType,$period,$statValue,$value,$saveLast
+ # statistics_storeSingularReadings for Duration
+ # $hashName,$singularReadings,$dev,$statReadingName,$readingName,$statType,$period,$statValue,$value,$saveLast
statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,ucfirst($lastState),$period,$statValue,0,$saveLast);
+ # statistics_storeSingularReadings for Count
+ statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName."_Count",$readingName,ucfirst($lastState)."_Count",$period,$statCount,0,$saveLast);
}
# Store hidden reading
$result = "";
while (my ($key, $duration) = each(%hidden)){
- if ($result ne "") {$result .= " ";}
+ $result .= " " if $result;
$result .= "$key $duration";
}
readingsSingleUpdate($hash, $hiddenReadingName, $result, 0);