no message
This commit is contained in:
+16
-4
@@ -16,7 +16,7 @@
|
|||||||
<input id="date" type="date" />
|
<input id="date" type="date" />
|
||||||
</label>
|
</label>
|
||||||
<button id="prev" type="button">◀</button>
|
<button id="prev" type="button">◀</button>
|
||||||
<button id="today" type="button">Letzter Zeitpunkt</button>
|
<button id="today" type="button">Heute</button>
|
||||||
<button id="next" type="button">▶</button>
|
<button id="next" type="button">▶</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="period" style="margin-top:10px;font-size:12px;opacity:0.75;"></div>
|
<div id="period" style="margin-top:10px;font-size:12px;opacity:0.75;"></div>
|
||||||
@@ -240,6 +240,7 @@ return `
|
|||||||
if (data?.date) elDate.value = data.date;
|
if (data?.date) elDate.value = data.date;
|
||||||
const isTotal = (data?.range === 'total');
|
const isTotal = (data?.range === 'total');
|
||||||
elDate.disabled = isTotal;
|
elDate.disabled = isTotal;
|
||||||
|
|
||||||
if (data?.tStart && data?.tEnd) {
|
if (data?.tStart && data?.tEnd) {
|
||||||
const s = new Date(data.tStart * 1000);
|
const s = new Date(data.tStart * 1000);
|
||||||
const e = new Date(data.tEnd * 1000);
|
const e = new Date(data.tEnd * 1000);
|
||||||
@@ -249,16 +250,27 @@ return `
|
|||||||
} else {
|
} else {
|
||||||
elPeriod.textContent = '';
|
elPeriod.textContent = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (data?.hasData === false) {
|
if (data?.hasData === false) {
|
||||||
elHint.textContent = 'Keine Logdaten für den gewählten Zeitraum.';
|
elHint.innerHTML = `
|
||||||
|
<span style="font-weight:900; font-size:16px;">
|
||||||
|
${escapeHtml(data?.noDataHint || 'Letzter Zeitpunkt')}
|
||||||
|
</span>
|
||||||
|
<span style="opacity:.8; margin-left:10px;">
|
||||||
|
(Keine Werte für diesen Zeitraum)
|
||||||
|
</span>
|
||||||
|
`;
|
||||||
} else {
|
} else {
|
||||||
elHint.innerHTML = `
|
elHint.innerHTML = `
|
||||||
<span class="kv"><b>Produktion:</b> ${escapeHtml(prod.toFixed(2))} kWh</span>
|
<span class="kv"><b>Produktion:</b> ${escapeHtml(prod.toFixed(2))} kWh</span>
|
||||||
<span class="kv"><b>Verbrauch:</b> ${escapeHtml(cons.toFixed(2))} kWh</span>
|
<span class="kv"><b>Verbrauch:</b> ${escapeHtml(cons.toFixed(2))} kWh</span>
|
||||||
<span class="kv"><b>Netzbezug:</b> ${escapeHtml(grid.toFixed(2))} kWh</span>
|
<span class="kv"><b>Netzbezug:</b> ${escapeHtml(grid.toFixed(2))} kWh</span>
|
||||||
<span class="kv"><b>Eigenverbrauch:</b> ${escapeHtml(eigenClamped.toFixed(2))} kWh</span>
|
<span class="kv"><b>Eigenverbrauch:</b> ${escapeHtml(eigenClamped.toFixed(2))} kWh</span>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
elGrid.innerHTML = [
|
elGrid.innerHTML = [
|
||||||
donutCard({
|
donutCard({
|
||||||
title: 'Eigenverbrauchsquote',
|
title: 'Eigenverbrauchsquote',
|
||||||
|
|||||||
+4
-13
@@ -91,19 +91,9 @@ class Energy_Pie extends IPSModule
|
|||||||
$feed = $this->readDelta($this->ReadPropertyInteger('VarFeedIn'), $tStart, $tEnd, $dbgFeed);
|
$feed = $this->readDelta($this->ReadPropertyInteger('VarFeedIn'), $tStart, $tEnd, $dbgFeed);
|
||||||
$grid = $this->readDelta($this->ReadPropertyInteger('VarGrid'), $tStart, $tEnd, $dbgGrid);
|
$grid = $this->readDelta($this->ReadPropertyInteger('VarGrid'), $tStart, $tEnd, $dbgGrid);
|
||||||
$hasData = (($dbgProd['count'] ?? 0) > 0) || (($dbgFeed['count'] ?? 0) > 0) || (($dbgGrid['count'] ?? 0) > 0);
|
$hasData = (($dbgProd['count'] ?? 0) > 0) || (($dbgFeed['count'] ?? 0) > 0) || (($dbgGrid['count'] ?? 0) > 0);
|
||||||
// Auto-jump to last log day if none found
|
$noDataHint = (!$hasData && $range !== 'total') ? 'Letzter Zeitpunkt' : '';
|
||||||
if (!$hasData && $range !== 'total') {
|
|
||||||
$lastTs = $this->getLastLogTimestamp($this->ReadPropertyInteger('VarProduction'));
|
|
||||||
if ($lastTs > 0) {
|
|
||||||
$this->WriteAttributeString(self::ATTR_DATE, date('Y-m-d', $lastTs));
|
|
||||||
$date = $this->ReadAttributeString(self::ATTR_DATE);
|
|
||||||
[$tStart, $tEnd] = $this->getRange($range, $date);
|
|
||||||
$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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// House = Prod - Feed + Grid
|
// House = Prod - Feed + Grid
|
||||||
$house = $prod - $feed + $grid;
|
$house = $prod - $feed + $grid;
|
||||||
if ($house < 0) $house = 0.0;
|
if ($house < 0) $house = 0.0;
|
||||||
@@ -113,6 +103,7 @@ class Energy_Pie extends IPSModule
|
|||||||
'tStart' => $tStart,
|
'tStart' => $tStart,
|
||||||
'tEnd' => $tEnd,
|
'tEnd' => $tEnd,
|
||||||
'hasData' => $hasData,
|
'hasData' => $hasData,
|
||||||
|
'noDataHint' => $noDataHint,
|
||||||
'values' => [
|
'values' => [
|
||||||
'Produktion' => (float)$prod,
|
'Produktion' => (float)$prod,
|
||||||
'Einspeisung' => (float)$feed,
|
'Einspeisung' => (float)$feed,
|
||||||
|
|||||||
Reference in New Issue
Block a user