Fix: SDM-630 Gesamtwirkleistung aus Phasensumme berechnet (v1.2.1)

Register 0x0030 liefert je nach SDM-630-Firmware-Variante den Phasenwinkel
statt der Gesamtwirkleistung. total_power wird jetzt zuverlässig aus
power_l1 + power_l2 + power_l3 berechnet und überschreibt den Hardware-Wert.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
retr0
2026-04-27 11:27:00 +02:00
parent 456bfb34d6
commit 9913dccfa9
3 changed files with 51 additions and 1 deletions
+42
View File
@@ -0,0 +1,42 @@
# ShineBridge — Roadmap
## In Arbeit / Bekannte Bugs
- [ ] SDM-630 Gesamtwirkleistung zeigt falschen Wert → Fix in v1.2.1 (aus Phasensumme berechnet)
---
## Phase 2 (ShineBridge Add-on)
- [ ] Flash-Wizard — NuttX-Firmware via USB DFU direkt aus dem HA Web UI flashen (kein ST-Link)
- [ ] Persistente History — Sensorwerte über Add-on-Neustart hinaus speichern
- [ ] Weitere Growatt-Modelle — MOD 10000, SPH 10000 etc.
---
## Phase 3 — Multi-Brand / Multi-Hardware
### Goodwe WiFi Stick (ESP32 + LAN)
- [ ] Hardware analysieren: LAN-Chip identifizieren (W5500? LAN8720?)
- [ ] Firmware: NuttX auf ESP32 + mbusd → Modbus TCP Gateway (wie ShineLAN-X)
- [ ] Goodwe Register-Maps in `inverters.py` ergänzen (SEMS-Protokoll, gut dokumentiert)
- [ ] Goodwe-Modelle im Web UI auswählbar
### ShineWifi-X als ShineBridge-Gateway
- [ ] Schlankes ESP8266-Projekt: RS485 → Modbus TCP Bridge (Arduino/ESP-IDF)
- [ ] Dann: ShineWifi-X ebenfalls in ShineBridge Web UI verwaltbar (statt separater ESPHome-YAMLs)
### Langfristig
- [ ] ShineBridge als universelle Multi-Brand-Plattform (Growatt, Goodwe, weitere)
- [ ] Hardware-Erkennung automatisch im Web UI
---
## Erledigt
- [x] v1.0.0 — Grundfunktion: ShineLAN-X + Growatt MIC via Modbus TCP + MQTT
- [x] v1.1.3 — Security: XSS-Fix, Flask-Binding, API-Validierung
- [x] v1.1.4 — Fix: Flask zurück auf 0.0.0.0 (HA Ingress)
- [x] v1.1.5 — Feature: Eastron SDM-630 Support + Float32 Decode
- [x] v1.2.0 — Feature: Aggregat-Gerät + Energie-Dashboard Sensoren
- [x] v1.2.1 — Fix: SDM-630 Gesamtwirkleistung aus Phasensumme berechnet
+1 -1
View File
@@ -1,5 +1,5 @@
name: ShineBridge name: ShineBridge
version: "1.2.0" version: "1.2.1"
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/Growatt-Wechselrichter-HAOS url: https://gitea.bitfire.work/retr0/Growatt-Wechselrichter-HAOS
+8
View File
@@ -81,4 +81,12 @@ def _extract_sensors(sensors: list, regs: Dict[int, int]) -> Dict[str, float]:
else: else:
raw_val = regs[s.reg] * s.scale raw_val = regs[s.reg] * s.scale
values[s.id] = round(raw_val, 3) values[s.id] = round(raw_val, 3)
# SDM-630: register 0x0030 enthält je nach Firmware-Variante den Phasenwinkel statt
# der Gesamtwirkleistung → sicherer aus den Phasenwerten ableiten
if {"power_l1", "power_l2", "power_l3"} <= values.keys():
values["total_power"] = round(
values["power_l1"] + values["power_l2"] + values["power_l3"], 3
)
return values return values