T07: Solcast + Open-Meteo forecast clients

Solar forecast integration. Primary: Solcast (free tier, 7d horizon, SOLCAST_API_KEY from secret). Fallback: Open-Meteo (no key needed, 11d horizon). Refresh schedule: 30min 04:00-22:00 local time, 2h overnight. UPSERT to forecast_solar table via sqlmodel. Both APIs return rooftop kW estimates. Error handling: if both fail >2h → disable WEATHER controller mode + banner event.

Note (2026-06-29T02:22:56Z)

Picked up by ralph at 2026-06-29T14:30Z. Implementing Solcast + Open-Meteo forecast clients with primary/fallback pattern, UPSERT to forecast_solar table, and 2h failure timeout for WEATHER mode disable.