no message

This commit is contained in:
dh
2025-11-05 07:35:40 +01:00
parent 74deca22fb
commit 27ffb3aef3
+20 -11
View File
@@ -217,7 +217,7 @@ public function GenerateInvoices()
return 0.0; return 0.0;
} }
private function GetValueAt(int $varId, int $timestamp, bool $nearestAfter = false) private function GetValueAt(int $varId, int $timestamp, bool $nearestAfter = true)
{ {
$archiveID = @IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]; $archiveID = @IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0];
if (!$archiveID || !IPS_VariableExists($varId)) { if (!$archiveID || !IPS_VariableExists($varId)) {
@@ -226,21 +226,30 @@ private function GetValueAt(int $varId, int $timestamp, bool $nearestAfter = fal
} }
if ($nearestAfter) { if ($nearestAfter) {
// Endwert: erster Wert >= Timestamp // 🔹 Suche den ersten Wert nach dem gegebenen Zeitpunkt
$values = @AC_GetLoggedValues($archiveID, $varId, $timestamp, $timestamp + 864000, 1); $values = @AC_GetLoggedValues($archiveID, $varId, $timestamp, $timestamp + 7 * 86400, 1000);
if ($values && count($values) > 0) return floatval($values[0]['Value']); if (!empty($values)) {
foreach ($values as $v) {
if ($v['TimeStamp'] >= $timestamp) {
return floatval($v['Value']);
}
}
}
} else { } else {
// Startwert: letzter Wert <= Timestamp // 🔹 Suche den letzten Wert vor dem gegebenen Zeitpunkt
$values = @AC_GetLoggedValues($archiveID, $varId, 0, $timestamp, 1); $values = @AC_GetLoggedValues($archiveID, $varId, $timestamp - 7 * 86400, $timestamp, 1000);
if ($values && count($values) > 0) return floatval($values[count($values)-1]['Value']); if (!empty($values)) {
return floatval($values[count($values) - 1]['Value']);
}
} }
// Fallback auf aktuellen Wert // Fallback aktuellen Variablenwert nehmen
$current = floatval(GetValue($varId)); $fallback = floatval(GetValue($varId));
IPS_LogMessage('Abrechnung', "⚠ Kein Archivwert für $varId gefunden, nehme aktuellen Wert: $current"); IPS_LogMessage('Abrechnung', "⚠ Kein Archivwert für $varId gefunden, nutze aktuellen Wert ($fallback)");
return $current; return $fallback;
} }
private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type) private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type)
{ {
$rows = ''; $rows = '';