Uses hourly PV forecast data (watts per hour from forecast.solar) to
find the first contiguous block of hours where:
PV production - base_load_w >= min_surplus_w
Shows a blue advice card on the status page:
"Auto einstecken bis HH:MM Uhr"
"Erwartetes Überschuss-Fenster: HH:MM – HH:MM Uhr"
Card is hidden when:
- No surplus window found (weak forecast day)
- Window has already started or passed
- A wallbox is currently active (car already charging)
Config: forecast.base_load_w (1000W), forecast.min_surplus_w (1800W)
Timestamp parsing handles both "HH:MM:SS" and "HH:MM" key formats.
Today: surplus window 11:00–13:00 (24.3 kWh forecast).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
forecast.solar updates estimates as the day progresses, so a single
morning fetch can be stale by afternoon. New behaviour:
- Re-fetch every 4h within 07:00–19:00 window (3 fetches/day)
- Outside the window always serve the cached value
- Free tier limit is 12 req/day — 3 fetches is well within budget
- First startup outside window still fetches if cache is empty
Config: forecast.fetch_interval, fetch_window_start, fetch_window_end
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>