diff --git a/fhem/FHEM/98_statistics.pm b/fhem/FHEM/98_statistics.pm
index feae2f4a3..ec2689ac4 100644
--- a/fhem/FHEM/98_statistics.pm
+++ b/fhem/FHEM/98_statistics.pm
@@ -519,6 +519,7 @@ statistics_doStatisticMinMaxSingle ($$$$$$$)
$statReadingName .= ucfirst($readingName).$period;
my @hidden;
my @stat;
+ my $lastValue;
my $firstRun = not exists($hash->{READINGS}{$hiddenReadingName});
if ( $firstRun ) {
@@ -557,13 +558,16 @@ statistics_doStatisticMinMaxSingle ($$$$$$$)
# Store single readings
my $singularReadings = AttrVal($name, "singularReadings", "");
if ($singularReadings ne "") {
- # statistics_storeSingularReadings $hashName,$singleReading,$dev,$statReadingName,$readingName,$statType,$period,$statValue,$value,$saveLast
+ # statistics_storeSingularReadings $hashName,$singularReadings,$dev,$statReadingName,$readingName,$statType,$period,$statValue,$lastValue,$saveLast
my $statValue = sprintf "%.".$decPlaces."f", $stat[1];
- statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Min",$period,$statValue,$value,$saveLast);
+ if ($saveLast) { $lastValue = $statValue; $statValue = $value; }
+ statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Min",$period,$statValue,$lastValue,$saveLast);
$statValue = sprintf "%.".$decPlaces."f", $stat[3];
- statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Avg",$period,$statValue,$value,$saveLast);
+ if ($saveLast) { $lastValue = $statValue; $statValue = $value; }
+ statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Avg",$period,$statValue,$lastValue,$saveLast);
$statValue = sprintf "%.".$decPlaces."f", $stat[5];
- statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Max",$period,$statValue,$value,$saveLast);
+ if ($saveLast) { $lastValue = $statValue; $statValue = $value; }
+ statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Max",$period,$statValue,$lastValue,$saveLast);
}
# Store hidden reading
@@ -1096,12 +1100,20 @@ statistics_UpdateDevReading($$$$)
Dieses Modul wertet von den angegebenen Geräten (als regulärer Ausdruck) bestimmte Werte statistisch aus und fügt das Ergebnis den jeweiligen Geräten als neue Werte hinzu.
- Derzeit werden Statistiken für folgende Gerätewerte vom Modul automatisch berechnet:
+ Derzeit werden die folgenden Statistik-Typen für bestimmte Gerätewerte vom Modul automatisch berechnet:
- - Minimum, Durchschnitt und Maximum von Momentanwerten: brightness, current, energy_current, humidity, temperature, voltage, wind, wind_speed, windSpeed
- - Tendenz über 1h, 2h, 3h und 6h: pressure
- - Deltawerte von kumulierten Gerätewerten: count, energy, energy_total, power, total, rain, rain_rate, rain_total
- - Dauer der Status: lightsensor, lock, motion, Window, window, state (wenn kein anderer Gerätewert gültig)
+ - Min|Avg|Max Minimum, Durchschnitt und Maximum von Momentanwerten:
+
+ Zeitraum Tag, Monat, Jahr: brightness, current, energy_current, humidity, temperature, voltage
+
+ Zeitraum Stunde, Tag, Monat, Jahr: wind, wind_speed, windSpeed
+ - Tendency Tendenz über 1h, 2h, 3h und 6h: pressure
+ - Delta Differenz zwischen Anfangs- und Endwerte innerhalb eines Zeitraums (Stunde, Tag, Monat, Jahr):
+
+ count, energy, energy_total, power, total, rain, rain_rate, rain_total
+ - DurationDauer der Status innerhalb eines Zeitraums (Tag, Monat, Jahr):
+
+ lightsensor, lock, motion, Window, window, state (wenn kein anderer Gerätewert gültig)
Weitere Gerätewerte können über die entsprechenden Attribute hinzugefügt werden
@@ -1152,11 +1164,11 @@ statistics_UpdateDevReading($$$$)
deltaReadings <Gerätewerte>
- Durch Kommas getrennte Liste von Gerätewerten
+ Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Differenz zwischen den Werten am Anfang und Ende einer Periode (Stunde/Tag/Monat/Jahr) bestimmt wird.
durationReadings <Gerätewerte>
- Durch Kommas getrennte Liste von Gerätewerten
+ Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Dauer einzelner Gerätewerte innerhalb bestimmte Zeiträume (Stunde/Tag/Monat/Jahr) erfasst wird.
excludedReadings <GerätenameRegExp:GerätewertRegExp>
@@ -1164,9 +1176,13 @@ statistics_UpdateDevReading($$$$)
z.B. "FritzDect:current|Sensor_.*:humidity
"
+ hideAllSummaryReadings <0 | 1>
+
+ noch nicht implementiert - Es werden keine gesammelten Statistiken angezeigt, sondern nur die unter "singularReadings" definierten Einzelwerte
+
minAvgMaxReadings <Gerätewerte>
- Durch Kommas getrennte Liste von Gerätewerten
+ Durch Kommas getrennte Liste von Gerätewerten, für die in bestimmten Zeiträumen (Tag, Monat, Jahr) Minimum, Mittelwert und Maximum erfasst werden.
periodChangePreset <Sekunden>
@@ -1175,13 +1191,13 @@ statistics_UpdateDevReading($$$$)
Erlaubt die korrekte zeitliche Zuordnung in Plots, kann je nach Systemauslastung verringert oder vergrößert werden
- singularReadings <GeräteNameRegExp:GeräteWertRegExp:StatistikTypen:ZeitPeriode>
+ singularReadings <GeräteNameRegExp:GeräteWertRegExp:StatistikTypen:ZeitRaum>
- StatistikTypen: Min|Avg|Max|Delta|Duration|Tendency
- - ZeitPeriode: Hour|Day|Month|Year|1h|2h|3h|6h
+ - ZeitRaum: Hour|Day|Month|Year|1h|2h|3h|6h
Regulärer Ausdruck statistischer Werte, die nicht nur in zusammengefassten sondern auch als einzelne Werte gespeichert werden sollen.
- Erleichtert die Erzeugung von Plots.
+ Erleichtert die Erzeugung von Plots und anderer Auswertungen (notify).
z.B. Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day
@@ -1191,7 +1207,7 @@ statistics_UpdateDevReading($$$$)
tendencyReadings <Gerätewerte>
- Durch Kommas getrennte Liste von Gerätewerten
+ Durch Kommas getrennte Liste von weiteren Gerätewerten, für die innerhalb bestimmter Zeiträume (1h, 2h, 3h, 6h) die Differenz zwischen Anfangs- und Endwert ermittelt wird.
- readingFnAttributes