no message

This commit is contained in:
belevo\mh
2026-01-20 10:44:32 +01:00
parent 83c74ad05d
commit cfb196f346

View File

@@ -208,35 +208,38 @@ class PV_Forecast extends IPSModule
private function GetForecastSeriesFilteredUtc(int $startUtcTs, int $endUtcTs): array
{
$raw = $this->GetBuffer("ForecastRaw");
if ($raw === "") {
return [];
}
if ($raw === "") return [];
$data = json_decode($raw, true);
if (!is_array($data) || !isset($data["estimated_actuals"]) || !is_array($data["estimated_actuals"])) {
if (!is_array($data)) return [];
// forecast endpoint: "forecasts"
if (isset($data["forecasts"]) && is_array($data["forecasts"])) {
$rows = $data["forecasts"];
} elseif (isset($data["estimated_actuals"]) && is_array($data["estimated_actuals"])) {
// fallback live endpoint
$rows = $data["estimated_actuals"];
} else {
return [];
}
$series = [];
foreach ($data["estimated_actuals"] as $row) {
foreach ($rows as $row) {
if (!isset($row["period_end"], $row["pv_power_rooftop"])) continue;
// period_end ist UTC ("Z")
$ts = strtotime($row["period_end"]);
$ts = strtotime($row["period_end"]); // UTC wegen Z
if ($ts === false) continue;
// Filter: "heute lokal" als UTC-Grenzen
if ($ts < $startUtcTs || $ts >= $endUtcTs) continue;
// Solcast: kW
$val = (float)$row["pv_power_rooftop"];
$series[] = [$ts * 1000, $val];
$series[] = [$ts * 1000, (float)$row["pv_power_rooftop"]];
}
usort($series, fn($a, $b) => $a[0] <=> $b[0]);
return $series;
}
// ----------------- Series: Actual (Archive) -----------------
private function GetActualSeriesFromArchive(int $startTs, int $endTs, int $bucketSeconds, int $nowTs): array