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);