diff --git a/fhem/FHEM/98_statistics.pm b/fhem/FHEM/98_statistics.pm
index c788c921c..70baf2fd9 100644
--- a/fhem/FHEM/98_statistics.pm
+++ b/fhem/FHEM/98_statistics.pm
@@ -421,6 +421,18 @@ statistics_DoStatistics($$$)
statistics_doStatisticMinMax ($hash, $dev, $readingName, 1, $periodSwitch);
}
+ if ($periodSwitch>=1) {
+ @specialReadings = split /,/, AttrVal($hashName, "tendencyReadings", "");
+ foreach $readingName (@specialReadings)
+ {
+ my $completeReadingName = $devName.":".$readingName;
+ next if ($completeReadingName =~ m/^($exclReadings)$/ );
+ next if not exists ($dev->{READINGS}{$readingName});
+ $statisticDone = 1;
+ statistics_doStatisticTendency ($hash, $dev, $readingName, 1);
+ }
+ }
+
if ($statisticDone != 1) {
if ( exists ($dev->{READINGS}{state}) && $dev->{READINGS}{state}{VAL} ne "defined" ) {
statistics_doStatisticDuration $hash, $dev, "state", $periodSwitch;
@@ -589,7 +601,7 @@ statistics_doStatisticTendency ($$$$)
my $result = $value;
Log3 $name,4,"$name: Add $value to $hiddenReadingName";
if (exists ($hash->{READINGS}{$hiddenReadingName}{VAL})) { $result .= " " . $hash->{READINGS}{$hiddenReadingName}{VAL}; }
- my @hidden = split / /, $result; # Internal values
+ @hidden = split / /, $result; # Internal values
if ( exists($hidden[7]) ) {
Log3 $name,4,"$name: Remove last value ".$hidden[7]." from '$hiddenReadingName'";
delete $hidden[7];
@@ -602,6 +614,16 @@ statistics_doStatisticTendency ($$$$)
$result = "1h: " . $stat[1] ." 2h: ". $stat[3] ." 3h: ". $stat[5] ." 6h: ". $stat[7];
readingsBulkUpdate($dev, $statReadingName, $result, 1);
+ # Store single readings
+ my $singularReadings = AttrVal($name, "singularReadings", "");
+ if ($singularReadings ne "") {
+ # statistics_storeSingularReadings $hashName,$singularReadings,$dev,$statReadingName,$readingName,$statType,$period,$statValue,$lastValue,$saveLast
+ statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Tendency","1h",$stat[1],0,0);
+ statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Tendency","2h",$stat[1],0,0);
+ statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Tendency","3h",$stat[1],0,0);
+ statistics_storeSingularReadings ($name,$singularReadings,$dev,$statReadingName,$readingName,"Tendency","6h",$stat[1],0,0);
+ }
+
$result = join( " ", @hidden );
readingsSingleUpdate($hash, $hiddenReadingName, $result, 0);
Log3 $name,4,"$name: Set '$hiddenReadingName = $result'";
@@ -884,7 +906,7 @@ statistics_storeSingularReadings ($$$$$$$$$$)
my ($hashName,$singularReadings,$dev,$statReadingName,$readingName,$statType,$period,$statValue,$lastValue,$saveLast) = @_;
return if $singularReadings eq "";
- if ($statType eq "Delta") { $statReadingName .= $period;}
+ if ($statType =~ /Delta|Tendency/) { $statReadingName .= $period;}
else { $statReadingName .= $statType;}
my $devName=$dev->{NAME};
if ("$devName:$readingName:$statType:$period" =~ /^($singularReadings)$/) {
@@ -1022,7 +1044,11 @@ statistics_FormatDuration($)
Allows the correct timely assignment within plots, can be adapted to the cpu load.
-
singularReadings <DeviceRegExp:ReadingRegExp>:statTypes(Min|Avg|Max|Delta):period(Hour|Day|Month|Year)
+ singularReadings <DeviceRegExp:ReadingRegExp>:statTypes:period
+ tendencyReadings <Gerätewerte>
+ singularReadings <GeräteNameRegExp:GeräteWertRegExp:StatistikTypen:ZeitPeriode>
tendencyReadings <Gerätewerte>
+