no message
This commit is contained in:
@@ -432,7 +432,6 @@ private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type)
|
||||
|
||||
private function readDelta($varId, $tStart, $tEnd)
|
||||
{
|
||||
// 🕒 Eingangsparameter vereinheitlichen
|
||||
if (!is_int($tStart)) $tStart = strtotime($tStart);
|
||||
if (!is_int($tEnd)) $tEnd = strtotime($tEnd);
|
||||
|
||||
@@ -442,55 +441,42 @@ private function readDelta($varId, $tStart, $tEnd)
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
// 🔍 1 Tag Puffer auf beiden Seiten, damit auch bei Lücken Werte gefunden werden
|
||||
$values = @AC_GetLoggedValues($archiveID, $varId, $tStart - 86400, $tEnd + 86400, 0);
|
||||
if (empty($values)) {
|
||||
IPS_LogMessage('Abrechnung', "⚠️ Keine Archivwerte für $varId im Bereich " . date('d.m.Y H:i', $tStart) . "–" . date('H:i', $tEnd));
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
// 🔹 Letzter Wert <= Startzeitpunkt
|
||||
$vStart = null;
|
||||
foreach (array_reverse($values) as $v) {
|
||||
if ($v['TimeStamp'] <= $tStart) {
|
||||
$vStart = floatval($v['Value']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 🔹 Letzter Wert <= Endzeitpunkt
|
||||
$vEnd = null;
|
||||
foreach (array_reverse($values) as $v) {
|
||||
if ($v['TimeStamp'] <= $tEnd) {
|
||||
$vEnd = floatval($v['Value']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 🔸 Falls keine passenden Werte: Fallback auf aktuellen Variablenwert
|
||||
if ($vStart === null) {
|
||||
$vStart = floatval(GetValue($varId));
|
||||
IPS_LogMessage('Abrechnung', "⚠️ Kein Startwert gefunden – nutze aktuellen Wert $vStart");
|
||||
}
|
||||
if ($vEnd === null) {
|
||||
$vEnd = floatval(GetValue($varId));
|
||||
IPS_LogMessage('Abrechnung', "⚠️ Kein Endwert gefunden – nutze aktuellen Wert $vEnd");
|
||||
}
|
||||
|
||||
// 🔹 Differenz
|
||||
$diff = $vEnd - $vStart;
|
||||
if ($diff < 0) $diff = 0.0; // Negative Differenzen vermeiden (z. B. bei Reset)
|
||||
|
||||
IPS_LogMessage('Abrechnung', sprintf(
|
||||
"📈 ΔVar %d = %.4f (%.4f → %.4f) [%s → %s]",
|
||||
$varId, $diff, $vStart, $vEnd,
|
||||
date('d.m.Y H:i', $tStart), date('H:i', $tEnd)
|
||||
"🧩 readDelta(%d): Zeitraum %s – %s | Werte gefunden: %d",
|
||||
$varId, date('d.m.Y H:i', $tStart), date('H:i', $tEnd), count($values)
|
||||
));
|
||||
|
||||
if (empty($values)) return 0.0;
|
||||
|
||||
usort($values, fn($a, $b) => intval($a['TimeStamp']) <=> intval($b['TimeStamp']));
|
||||
foreach ($values as &$v) {
|
||||
$v['TimeStamp'] = intval($v['TimeStamp']);
|
||||
$v['Value'] = floatval($v['Value']);
|
||||
}
|
||||
|
||||
$vStart = null;
|
||||
$vEnd = null;
|
||||
|
||||
foreach ($values as $v) {
|
||||
if ($v['TimeStamp'] <= $tStart) $vStart = $v['Value'];
|
||||
if ($v['TimeStamp'] <= $tEnd) $vEnd = $v['Value'];
|
||||
if ($v['TimeStamp'] > $tEnd) break;
|
||||
}
|
||||
|
||||
IPS_LogMessage('Abrechnung', sprintf(
|
||||
" ↳ Start=%.5f End=%.5f Diff=%.5f (Var %d)",
|
||||
$vStart ?? -1, $vEnd ?? -1, ($vEnd ?? 0) - ($vStart ?? 0), $varId
|
||||
));
|
||||
|
||||
if ($vStart === null || $vEnd === null) return 0.0;
|
||||
$diff = $vEnd - $vStart;
|
||||
if ($diff < 0) $diff = 0.0;
|
||||
return $diff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function getTariffPriceAt($tariffs, $typeSynonyms, $ts)
|
||||
{
|
||||
// passender unit_type
|
||||
|
||||
Reference in New Issue
Block a user