From 3ccf11771dba1e102dc9bfd9d321fb8914f5d67f Mon Sep 17 00:00:00 2001 From: retr0 <42kdesigners@gmail.com> Date: Wed, 29 Apr 2026 07:50:07 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20Growatt=20SPH=20bat=5Fcharge/discharge?= =?UTF-8?q?=20Messartefakt=20=E2=80=94=20nur=20dominanter=20Wert=20bleibt?= =?UTF-8?q?=20(v1.7.4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- haos-addon/config.yaml | 2 +- haos-addon/src/main.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/haos-addon/config.yaml b/haos-addon/config.yaml index e3f0f50..4d7af5f 100644 --- a/haos-addon/config.yaml +++ b/haos-addon/config.yaml @@ -1,5 +1,5 @@ name: ShineBridge -version: "1.7.3" +version: "1.7.4" slug: shinebridge description: Growatt Wechselrichter lokal in Home Assistant — Modbus TCP via ShineLAN-X, MQTT Discovery, Web UI url: https://gitea.bitfire.work/retr0/shinebridge diff --git a/haos-addon/src/main.py b/haos-addon/src/main.py index e54d597..56ab615 100644 --- a/haos-addon/src/main.py +++ b/haos-addon/src/main.py @@ -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: 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 if ems is not None and values is not None: pv_surplus = _get_pv_surplus()