SG-Ready startup grace period (sg_ready_startup_min: 10):
Heat pump compressor takes ~9 minutes to start after receiving the
SG-Ready signal. Previously, idle detection fired after only 3×2min=6min,
turning off SG-Ready before the compressor had time to respond. The grace
period suppresses idle detection for the configured duration after activation.
0 = disabled (tests and unconfigured deployments are unaffected).
Daily PV yield (photovoltaic_production_cumulated_currentDay):
Reads actual kWh produced today from Prometheus (Wh → kWh, ÷1000).
Logged as pv_today_kwh each cycle. Shown on status page in two places:
- PV card sub-line: "Heute: 31.9 kWh"
- Forecast card alongside forecast: "Ist: 31.9 kWh"
Immediately makes forecast vs reality visible (today: forecast 15.9,
actual 31.9 kWh — explains why SOC bypass triggered).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1. SOC high bypass: when SOC >= soc_high_bypass_pct (default 90%), activate
car charging without requiring a good forecast. Solves today's missed
charging window where 4kW was exported for 6h with a full battery because
the intraday forecast dropped from 15.4 to 13.3 kWh.
2. Log ambient_c in every cycle: makes it diagnosable why isHeatingPeriod
suppresses SG-Ready on warm days (heating_min_ambient_c: 15°C gate).
3. Consumer names in logs: replace slog integer Consumer values with
.String() so logs show "wallbox_a" instead of "2".
4. Status page order: reorder consumers by EMS priority (WallboxA →
WallboxB → WW → SG-Ready) instead of the old reversed order.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>