diff --git a/Energy_Pie/module.html b/Energy_Pie/module.html index ea316f5..a1868a4 100644 --- a/Energy_Pie/module.html +++ b/Energy_Pie/module.html @@ -126,13 +126,13 @@ function render(data){ const e = new Date(data.tEnd * 1000 - 1000); if (data.range === 'day') - elPeriod.textContent = `Zeitraum: ${fmt(s)}`; + elPeriod.textContent = `Tag: ${fmt(s)}`; else if (data.range === 'week') - elPeriod.textContent = `Zeitraum: Woche ${isoWeek(s)}`; + elPeriod.textContent = `Woche: ${fmt(s)} - ${fmt(e)}`; else if (data.range === 'month') - elPeriod.textContent = `Zeitraum: ${monthName(s.getMonth())} ${s.getFullYear()}`; + elPeriod.textContent = `Monat: ${monthName(s.getMonth())} ${s.getFullYear()}`; else if (data.range === 'year') - elPeriod.textContent = `Zeitraum: ${s.getFullYear()}`; + elPeriod.textContent = `Jahr: ${s.getFullYear()}`; else elPeriod.textContent = ''; // fallback: lieber leer als falsch } else { diff --git a/Energy_Pie/module.php b/Energy_Pie/module.php index 1db55a2..2998e32 100644 --- a/Energy_Pie/module.php +++ b/Energy_Pie/module.php @@ -90,7 +90,7 @@ class Energy_Pie extends IPSModule $prod = $this->readDelta($this->ReadPropertyInteger('VarProduction'), $tStart, $tEnd, $dbgProd); $feed = $this->readDelta($this->ReadPropertyInteger('VarFeedIn'), $tStart, $tEnd, $dbgFeed); $grid = $this->readDelta($this->ReadPropertyInteger('VarGrid'), $tStart, $tEnd, $dbgGrid); - $hasData = (($dbgProd['count'] ?? 0) > 0) || (($dbgFeed['count'] ?? 0) > 0) || (($dbgGrid['count'] ?? 0) > 0); + $hasData = (($dbgProd['inRange'] ?? 0) > 0) || (($dbgFeed['inRange'] ?? 0) > 0) || (($dbgGrid['inRange'] ?? 0) > 0); $lastLogTs = 0; if (!$hasData && $range !== 'total') { $lastLogTs = max( @@ -166,6 +166,7 @@ class Energy_Pie extends IPSModule 'varId' => $varId, 'archiveId' => 0, 'count' => 0, + 'inRange' => 0, 'first' => null, 'last' => null, 'vStart' => null, @@ -179,7 +180,7 @@ class Energy_Pie extends IPSModule if ($archiveID <= 0) { return 0.0; } - $values = @AC_GetLoggedValues($archiveID, $varId, $tStart - 86400, $tEnd + 86400, 0); + $values = @AC_GetLoggedValues($archiveID, $varId, max(0, $tStart - 86400), $tEnd, 0); if (empty($values)) { return 0.0; } @@ -195,10 +196,16 @@ class Energy_Pie extends IPSModule $vEnd = null; foreach ($values as $v) { $ts = (int)$v['TimeStamp']; + if ($ts >= $tStart && $ts < $tEnd) { + $dbg['inRange']++; + } 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; + } if ($vStart === null) $vStart = $dbg['first']; if ($vEnd === null) $vEnd = $dbg['last']; $dbg['vStart'] = $vStart;