no message

This commit is contained in:
belevo\mh
2025-12-17 09:29:16 +01:00
parent 7f5a6bcade
commit ca74e3d946
2 changed files with 42 additions and 13 deletions

View File

@@ -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) {

View File

@@ -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.
*/