diff --git a/fhem/contrib/DS_Starter/93_DbRep.pm b/fhem/contrib/DS_Starter/93_DbRep.pm index 73a2814bd..9c2e44dc7 100644 --- a/fhem/contrib/DS_Starter/93_DbRep.pm +++ b/fhem/contrib/DS_Starter/93_DbRep.pm @@ -4677,9 +4677,13 @@ sub DbRep_diffval { if ($runtime_string eq $lastruntimestring) { # Ergebnishash erzeugen if ($i == 1) { - $diff_total = $diff ? $diff : 0 if(abs $diff <= $dlim); + if(abs $diff <= $dlim) { + $diff_total = $diff ? $diff : 0; + } + $rh{$runtime_string} = $runtime_string."|".$diff_total."|".$timestamp; - $ch{$runtime_string} = 1 if($value); + + $ch{$runtime_string} = 1 if(defined $a[3]); $lval = $value ? $value : 0; $rslval = $runtime_string; } @@ -4700,16 +4704,17 @@ sub DbRep_diffval { else { # neuer Zeitabschnitt beginnt, ersten Value-Wert erfassen und Übertragsdifferenz bilden $lastruntimestring = $runtime_string; $i = 1; - $uediff = $value - $lval if($value > $lval); + #$uediff = $value - $lval if($value > $lval); + $uediff = $value - $lval; $diff = $uediff; - $lval = $value if($value); # Übetrag über Perioden mit value = 0 hinweg ! + $lval = $value if($value); # Übertrag über Perioden mit value = 0 hinweg ! $rslval = $runtime_string; Log3 ($name, 5, "DbRep $name - balance difference of $uediff between $rslval and $runtime_string"); $diff_total = $diff ? $diff : 0 if(abs $diff <= $dlim); $rh{$runtime_string} = $runtime_string."|".$diff_total."|".$timestamp; - $ch{$runtime_string} = 1 if($value); + $ch{$runtime_string} = 1 if(defined $a[3]); $uediff = 0; } @@ -17842,7 +17847,8 @@ return; Berechnet den Differenzwert des Datenbankfelds "VALUE" in den angegebenen Zeitgrenzen (siehe verschiedenen time*-Attribute).

- Es wird die Differenz aus den VALUE-Werten der im Aggregationszeitraum (z.B. day) vorhandenen Datensätze gebildet. + Es wird die Differenz aus den VALUE-Werten der im Aggregationszeitraum (z.B. day) vorhandenen Datensätze gebildet und + aufsummiert. Ein Übertragswert aus der Vorperiode (aggregation) zur darauf folgenden Aggregationsperiode wird berücksichtigt, sofern diese Periode einen Value-Wert enhtält.