Fix: Wallbox-Read resilient gegen IllegalAddress, Relais-Matrix ergänzt

- wallbox_client: Bei Reg-Fehler Range überspringen statt komplett abbrechen
  → Meter-Daten kommen weiter wenn EVSE-Block (0x0060) nicht verfügbar
- wallbox_client: set_current() schreibt jetzt auch EMS_RELAIS_REG (0x00A1)
  mit korrekter Phasen-Bitmaske (1→0x0001, 2→0x0003, 3→0x0007)
- ems_controller: phases wird an set_current() und Zwangsladen übergeben

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
retr0
2026-04-28 12:17:52 +02:00
parent a09bbdd25d
commit 30f2667589
2 changed files with 20 additions and 12 deletions
+2 -2
View File
@@ -99,7 +99,7 @@ class EmsController:
self._no_pv_since = None
self._forced_charging = False
ma = self._surplus_to_ma(pv_surplus_w)
wallbox_reader.set_current(ma)
wallbox_reader.set_current(ma, self.phases)
return f"PV-Laden {ma // 1000:.1f}A ({pv_surplus_w:.0f}W)"
# Kein PV
@@ -113,7 +113,7 @@ class EmsController:
target = self._next_target()
mins_left = (target - datetime.now()).total_seconds() / 60
if not self._forced_charging:
wallbox_reader.set_current(32000)
wallbox_reader.set_current(32000, self.phases)
self._forced_charging = True
log.info("[EMS] Zwangsladen gestartet — %dmin bis %02d:00", int(mins_left), self.target_hour)
return f"Zwangsladen ({no_pv_h:.1f}h kein PV, {int(mins_left)}min bis {self.target_hour:02d}:00)"