diff --git a/Energy_Pie/module.php b/Energy_Pie/module.php index 1133651..2998e32 100644 --- a/Energy_Pie/module.php +++ b/Energy_Pie/module.php @@ -180,11 +180,7 @@ class Energy_Pie extends IPSModule if ($archiveID <= 0) { return 0.0; } - $tCalcEnd = min($tEnd, time()); - if ($tCalcEnd <= $tStart) { - return 0.0; - } - $values = @AC_GetLoggedValues($archiveID, $varId, max(0, $tStart - 86400), $tCalcEnd, 0); + $values = @AC_GetLoggedValues($archiveID, $varId, max(0, $tStart - 86400), $tEnd, 0); if (empty($values)) { return 0.0; } @@ -198,31 +194,14 @@ class Energy_Pie extends IPSModule $dbg['last'] = (float)$values[count($values) - 1]['Value']; $vStart = null; $vEnd = null; - $prev = null; - $sum = 0.0; foreach ($values as $v) { $ts = (int)$v['TimeStamp']; - $val = (float)$v['Value']; - - if ($ts <= $tStart) { - $vStart = $val; - $prev = $val; - continue; - } - - if ($ts > $tCalcEnd) break; - if ($ts >= $tStart && $ts < $tEnd) { $dbg['inRange']++; } - - if ($prev !== null) { - $diff = $val - $prev; - $sum += ($diff >= 0) ? $diff : max($val, 0.0); - } - - $prev = $val; - $vEnd = $val; + if ($ts <= $tStart) $vStart = (float)$v['Value']; + if ($ts <= $tEnd) $vEnd = (float)$v['Value']; + if ($ts > $tEnd) break; } if ($dbg['inRange'] === 0) { return 0.0; @@ -231,7 +210,8 @@ class Energy_Pie extends IPSModule if ($vEnd === null) $vEnd = $dbg['last']; $dbg['vStart'] = $vStart; $dbg['vEnd'] = $vEnd; - return $sum; + $diff = $vEnd - $vStart; + return ($diff < 0) ? 0.0 : (float)$diff; } private function getLastLogTimestamp(int $varId): int {