no message
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
<div style="margin-top:10px;display:flex;flex-direction:column;gap:8px;max-width:520px;">
|
||||
<div style="font-weight:600;">Werte</div>
|
||||
<div id="values" style="display:flex;flex-direction:column;gap:6px;"></div>
|
||||
<div id="debug" style="margin-top:8px;font-size:12px;opacity:0.65;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -36,6 +37,7 @@
|
||||
const elNext = document.getElementById('next');
|
||||
const elValues = document.getElementById('values');
|
||||
const elPeriod = document.getElementById('period');
|
||||
const elDebug = document.getElementById('debug');
|
||||
|
||||
// Range ändern -> sofort rechnen
|
||||
elRange.addEventListener('change', () => requestAction('SetRange', elRange.value));
|
||||
@@ -77,6 +79,23 @@
|
||||
|
||||
// Nur die 4 gewünschten Werte anzeigen (fixe Reihenfolge)
|
||||
renderValues(data.values || {});
|
||||
|
||||
if (data.debug) {
|
||||
const p = data.debug.prod || {};
|
||||
const f = data.debug.feed || {};
|
||||
const g = data.debug.grid || {};
|
||||
elDebug.textContent =
|
||||
`Prod(var=${p.varId}, arch=${p.archiveId}, count=${p.count}) | ` +
|
||||
`Feed(var=${f.varId}, arch=${f.archiveId}, count=${f.count}) | ` +
|
||||
`Grid(var=${g.varId}, arch=${g.archiveId}, count=${g.count})`;
|
||||
} else {
|
||||
elDebug.textContent = '';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
function renderValues(values) {
|
||||
|
||||
@@ -104,13 +104,17 @@ private function RecalculateAndPush(): void
|
||||
[$tStart, $tEnd] = $this->getRange($range, $date);
|
||||
|
||||
// Debug-Container initialisieren (sonst "Undefined variable")
|
||||
$dbgProd = null;
|
||||
$dbgFeed = null;
|
||||
$dbgGrid = null;
|
||||
$dbgProd = [];
|
||||
$dbgFeed = [];
|
||||
$dbgGrid = [];
|
||||
|
||||
$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);
|
||||
$prodVar = $this->ReadPropertyInteger('VarProduction');
|
||||
$feedVar = $this->ReadPropertyInteger('VarFeedIn');
|
||||
$gridVar = $this->ReadPropertyInteger('VarGrid');
|
||||
|
||||
$prod = $this->readDelta($prodVar, $tStart, $tEnd, $dbgProd);
|
||||
$feed = $this->readDelta($feedVar, $tStart, $tEnd, $dbgFeed);
|
||||
$grid = $this->readDelta($gridVar, $tStart, $tEnd, $dbgGrid);
|
||||
|
||||
$house = $prod - $feed + $grid;
|
||||
if ($house < 0) $house = 0.0;
|
||||
@@ -183,11 +187,14 @@ private function RecalculateAndPush(): void
|
||||
}
|
||||
|
||||
|
||||
private function readDelta(int $varId, int $tStart, int $tEnd, ?array &$dbg = null): float
|
||||
private function readDelta(int $varId, int $tStart, int $tEnd, array &$dbg): float
|
||||
{
|
||||
$dbg = [
|
||||
'varId' => $varId,
|
||||
'archiveId' => 0,
|
||||
'count' => 0,
|
||||
'first' => null,
|
||||
'last' => null,
|
||||
'vStart' => null,
|
||||
'vEnd' => null
|
||||
];
|
||||
@@ -197,6 +204,8 @@ private function RecalculateAndPush(): void
|
||||
}
|
||||
|
||||
$archiveID = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0] ?? 0;
|
||||
$dbg['archiveId'] = $archiveID;
|
||||
|
||||
if ($archiveID <= 0) {
|
||||
return 0.0;
|
||||
}
|
||||
@@ -209,15 +218,15 @@ private function RecalculateAndPush(): void
|
||||
usort($values, static fn($a, $b) => (int)$a['TimeStamp'] <=> (int)$b['TimeStamp']);
|
||||
$dbg['count'] = count($values);
|
||||
|
||||
// Fallback: erster/letzter Eintrag im Fenster
|
||||
$first = (float)$values[0]['Value'];
|
||||
$last = (float)$values[count($values)-1]['Value'];
|
||||
$dbg['first'] = (float)$values[0]['Value'];
|
||||
$dbg['last'] = (float)$values[count($values)-1]['Value'];
|
||||
|
||||
$vStart = null;
|
||||
$vEnd = null;
|
||||
|
||||
foreach ($values as $v) {
|
||||
$ts = (int)$v['TimeStamp'];
|
||||
|
||||
if ($ts <= $tStart) {
|
||||
$vStart = (float)$v['Value'];
|
||||
}
|
||||
@@ -229,9 +238,9 @@ private function RecalculateAndPush(): void
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn kein Wert vor Start/Ende gefunden wurde -> nimm ersten/letzten Logwert
|
||||
if ($vStart === null) $vStart = $first;
|
||||
if ($vEnd === null) $vEnd = $last;
|
||||
// Wenn kein Wert vor Start/Ende gefunden wurde, nimm ersten/letzten im Fenster
|
||||
if ($vStart === null) $vStart = $dbg['first'];
|
||||
if ($vEnd === null) $vEnd = $dbg['last'];
|
||||
|
||||
$dbg['vStart'] = $vStart;
|
||||
$dbg['vEnd'] = $vEnd;
|
||||
@@ -240,6 +249,7 @@ private function RecalculateAndPush(): void
|
||||
return ($diff < 0) ? 0.0 : (float)$diff;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Buttons for quick navigation.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user