Fix: Growatt SPH bat_charge/discharge Messartefakt — nur dominanter Wert bleibt (v1.7.4)

Growatt SPH rapportiert beide Register gleichzeitig als > 0 (physikalisch unmöglich).
Fix: bat_discharge_power = 0 wenn bat_charge_power >= bat_discharge_power, sonst umgekehrt.
Verhindert falschen Hausverbrauch durch doppelt gezählte Batterieleistung.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
retr0
2026-04-29 07:50:07 +02:00
parent 0d29739fc8
commit 3ccf11771d
2 changed files with 9 additions and 1 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
name: ShineBridge name: ShineBridge
version: "1.7.3" version: "1.7.4"
slug: shinebridge slug: shinebridge
description: Growatt Wechselrichter lokal in Home Assistant — Modbus TCP via ShineLAN-X, MQTT Discovery, Web UI description: Growatt Wechselrichter lokal in Home Assistant — Modbus TCP via ShineLAN-X, MQTT Discovery, Web UI
url: https://gitea.bitfire.work/retr0/shinebridge url: https://gitea.bitfire.work/retr0/shinebridge
+8
View File
@@ -245,6 +245,14 @@ def _poll_loop(inv_cfg: Dict[str, Any], stop: threading.Event):
if values and "grid_power" not in values and "import_kwh" in values and "total_power" in values: if values and "grid_power" not in values and "import_kwh" in values and "total_power" in values:
values["grid_power"] = values["total_power"] values["grid_power"] = values["total_power"]
# Growatt SPH: beide Batterie-Register können gleichzeitig != 0 sein (Messartefakt).
# Batterie kann physikalisch nur laden ODER entladen — kleineren Wert auf 0 setzen.
if values and "bat_charge_power" in values and "bat_discharge_power" in values:
if values["bat_charge_power"] >= values["bat_discharge_power"]:
values["bat_discharge_power"] = 0.0
else:
values["bat_charge_power"] = 0.0
# EMS: PV-Überschuss aus anderen Geräten holen und Ladestrom regeln # EMS: PV-Überschuss aus anderen Geräten holen und Ladestrom regeln
if ems is not None and values is not None: if ems is not None and values is not None:
pv_surplus = _get_pv_surplus() pv_surplus = _get_pv_surplus()