Files
Shinebridge/README.md
T
retr0andClaude Sonnet 5 8f5106e3a0 ShineBridge v1.12.0 — Feature: Prognosebasierter Zwangslade-Timeout (Open-Meteo)
Neuer Standort-Bereich im Einstellungen-Tab (Breitengrad/Längengrad, optional,
site-weit statt pro Gerät). Neues Modul weather_forecast.py fragt Open-Meteos
kostenlose stündliche Solarstrahlungs-Prognose (shortwave_radiation, 48h
voraus, timezone=auto) ab, gecacht alle 3h.

adjusted_timeout_h() passt den Zwangslade-Timeout adaptiv an:
- bald nennenswerte Sonne zu erwarten (naechste 3h) -> Timeout verlaengern
  (x1.75, gedeckelt auf Basiswert+4h)
- auch im 12h-Fenster keine nennenswerte Sonne zu erwarten -> Timeout
  verkuerzen (x0.5, min. 0.5h) statt sinnlos den vollen Timeout abzuwarten
- ohne Standort (lat/lon leer): unveraendertes Verhalten, Feature ist Opt-in

EmsController.update() bekommt einen neuen optionalen timeout_override_h-
Parameter statt selbst Standortdaten zu kennen — Wetter-Logik bleibt im
Poll-Loop, EmsController fokussiert auf die eigentliche Lade-Steuerung.

Auf Sonnenstand-Berechnung bewusst verzichtet — die stuendliche Strahlungs-
prognose bildet Tag/Nacht-Verlauf implizit schon ab, eigene Ephemeriden-
Berechnung waere doppelte Arbeit ohne Mehrwert.

Teil 2 von 2 des 'Prognosebasiertes Laden'-Roadmap-Punkts, damit komplett.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 15:57:04 +02:00

8.1 KiB
Raw Blame History

ShineBridge

Lokales Energiemanagement für Growatt/Goodwe-Wechselrichter in Home Assistant — ohne Cloud, ohne Hersteller-App. Modbus TCP / UDP, MQTT Discovery, persistente History, PV-Überschussladen, Energie-Dashboard.

Repository: https://gitea.bitfire.work/retr0/shinebridge

Firmware, Hardware-Diagnose und Flash-Tools für ShineLAN-X/ShineWifi-X liegen seit v1.9.0 in einem eigenen, privaten Repo (growatt-diagnose-tool) — dieses Repo ist reines Energiemanagement.


Architektur

Wechselrichter / Energiezähler
    │  Modbus RTU (RS485 / USB)
[ShineLAN-X]  ← STM32F103, NuttX, Modbus RTU ↔ TCP  (Firmware: growatt-diagnose-tool)
    │  Modbus TCP Port 502 (LAN)
    │
    │  UDP/8899 (Goodwe)
    │  Modbus TCP Port 502 (Kathrein Wallbox)
    │
[ShineBridge Add-on]  Port 8099 (HAOS Ingress)
    ├── Modbus TCP / Goodwe UDP / Kathrein Wallbox lesen
    ├── EMS-Controller: PV-Überschussladen + Zwangsladen
    ├── MQTT Discovery → Home Assistant Sensoren
    ├── Aggregat-Gerät „ShineBridge Gesamt"
    ├── Persistente History (SQLite, 7 Tage)
    ├── Energie-Dashboard (SVG-Flussdiagramm, EPEX Spot)
    ├── Finanzen-Tab (Abschlags-Tracker, Eigenversorgung)
    └── Web UI: Live-Daten, Geräte, Einstellungen

Features

  • Multi-Gerät — beliebig viele Wechselrichter + Zähler + Wallbox, jeder als eigenes HA-Gerät
  • MQTT Discovery — Sensoren erscheinen automatisch in HA
  • Aggregat-Gerät — summiert alle Geräte für das HA Energie-Dashboard
  • Persistente History — Messwerte überleben Add-on-Neustarts (SQLite, 7 Tage)
  • Energie-Dashboard — HA-Style SVG-Flussdiagramm mit animierten Dots; EPEX-Spot-Chart
  • Finanzen-Tab — kWh-Kosten, Eigenversorgung, Abschlags-Tracker (monatliche Rate + Grundpreis)
  • Flexibler Tarif — Festpreis oder EPEX Spot (aWATTar DE/AT) mit Aufschlag
  • Sparklines — Live-Graphen der letzten 5 Minuten pro Sensor
  • EMS-Controller — PV-Überschussladen der Kathrein Wallbox, Zwangsladen-Fallback mit konfigurierbarem Max-Ladestrom
  • Überschuss-Geräte — Zigbee2MQTT-Geräte bei PV-Überschuss automatisch einschalten
  • Konfig-Export/Import — JSON im Einstellungen-Tab, zusätzlich automatisches tägliches Backup nach /share/shinebridge-backups/ (übersteht auch Add-on-Uninstall+Reinstall, 14 Tage Aufbewahrung)
  • Port-Sicherheit — /api/* nur über HAOS-Ingress erreichbar, kein Direktzugriff von außen
  • Kein Cloud-Zwang — vollständig lokal

Unterstützte Geräte

Gerät Typ Sensoren Protokoll
Growatt MIC 1500/2000 TL-X PV 1-phasig 10 Modbus FC04
Growatt SPH 5000 TL3-BH-UP Hybrid 3-phasig + Batterie 28 Modbus FC04
Growatt MOD 6000 TL3-XH PV 3-phasig 17 Modbus FC04
Eastron SDM-630 Drehstromzähler 16 Modbus FC03, Float32
Goodwe GW10KN-ET Hybrid 3-phasig + Batterie 39 UDP/8899 (goodwe lib)
Kathrein Wallbox EVSE + Meter + EMS 18 Modbus FC03, TCP/502

EMS — PV-Überschussladen (Kathrein Wallbox)

Der EMS-Controller regelt den Ladestrom der Kathrein Wallbox anhand des PV-Überschusses:

  1. PV-Laden — Überschuss ≥ Mindestleistung (Standard: 1400 W = 6 A × 230 V): Ladestrom = verfügbare PV-Leistung / Phasen
  2. Warten — Kein ausreichender Überschuss: Laden pausiert, Timer läuft
  3. Zwangsladen — Nach Timeout ohne PV (Standard: 4 h): Laden mit konfiguriertem Max-Ladestrom bis zur Zielzeit (Standard: 06:00 Uhr), Strom wird bei jedem Poll erneut gesetzt (kein Einmal-Write)
  4. Unbekannte Ladezustände (z. B. Fahrzeug-Störung) pausieren den Strom, ohne den Zwangslade-Timer zurückzusetzen

Konfigurierbar pro Gerät im Web UI:

Parameter Beschreibung Standard
Mindest-PV-Überschuss Untergrenze für PV-Laden 1400 W
Timeout ohne PV Stunden bis Zwangsladen 4 h
Vollladung bis Zielzeit für Zwangsladen 06:00
Anzahl Phasen 1 / 2 / 3-phasig 3
Max. Ladestrom Obergrenze fürs Zwangsladen — auf die tatsächliche Wallbox-/Zuleitungs-Absicherung setzen 32 A

Wichtig: Max. Ladestrom niemals höher als die real installierte Wallbox stellen (z. B. 16 A bei einer 11-kW-Wallbox) — sonst fordert das Zwangsladen mehr an, als die Hardware liefern kann, was bei manchen Fahrzeugen zu Ladefehlern führt.

Die EMS-Funktion muss zusätzlich in der Kathrein easyOperate-App aktiviert sein.

Prognosebasierter Zwangslade-Timeout (optional): Mit Standort (Breitengrad/Längengrad, Einstellungen-Tab) passt sich der Zwangslade-Timeout an die Solarstrahlungs-Prognose (Open-Meteo, kostenlos) an — bei bald zu erwartender Sonne wird länger gewartet (gedeckelt), bei aussichtsloser Prognose eher vom Netz geladen statt sinnlos den vollen Timeout abzuwarten. Ohne Standort unverändertes Verhalten (fester Timeout).

Batterie-Schutz beim PV-Überschussladen: Bei Anlagen mit Hausbatterie (z. B. Goodwe) wird die aktuelle Batterie-Entladeleistung vom berechneten PV-Überschuss abgezogen — ein Netzexport, der eigentlich aus dem Speicher kommt (z. B. bei bewölktem Wetter), wird so nicht fälschlich als PV-Überschuss fürs Auto verwendet. Betrifft nur PV-Überschussladen, Zwangsladen bleibt unverändert netzbasiert.

Netzleistung (grid_power)

Der Sensor grid_power zeigt die Netzleistung intuitiv:

  • Positiv = Netzbezug (Strom vom Netz)
  • Negativ = Einspeisung (Strom ins Netz)

Bei reinen Growatt-Anlagen (ohne Goodwe) wird power_to_grid als Proxy verwendet.

Installation

Add-on in Home Assistant installieren

  1. Einstellungen → Add-ons → Add-on-Store → ⋮ → Repositories
  2. URL: https://gitea.bitfire.work/retr0/shinebridge
  3. „ShineBridge" → Installieren → Starten

ShineLAN-X flashen

Das Flashen des ShineLAN-X-Sticks (OTA oder ST-Link-Erstflash) läuft über das separate growatt-diagnose-tool — dort auch die Firmware-Quelle und Doku.

Gerät konfigurieren

Im Web UI → „+ Gerät hinzufügen":

  • Name, Modell, IP, Port, Modbus-Adresse, MQTT Topic-Präfix, Abfrageintervall
  • Bei Kathrein Wallbox: EMS-Parameter konfigurieren (inkl. Max. Ladestrom!)

Sensoren erscheinen danach unter Einstellungen → Geräte & Dienste → MQTT.

Aggregat-Sensoren (Energie-Dashboard)

Das Aggregat-Gerät „ShineBridge Gesamt" stellt folgende Sensoren bereit:

Sensor Beschreibung
PV Gesamtleistung Summe aller PV-Eingänge (W)
Netzleistung Netzbezug (+) / Einspeisung (−) am Hausanschluss (W)
Netzbezug / Einspeisung Gesamt kWh-Zähler für Energie-Dashboard
Batterie Ladezustand Ø Durchschnitt aller Batterien (%)
Batterie Lade-/Entladeleistung Summe (W)

History API

GET /api/history?inv_id=<id>&sensor_id=<id>&hours=<1-168>

Gibt alle Messpunkte des gewählten Zeitfensters zurück (max. 7 Tage).

Repository-Struktur

shinebridge/
└── haos-addon/                  ← HAOS Add-on (einziger Inhalt dieses Repos)
    ├── config.yaml
    ├── Dockerfile
    └── src/
        ├── main.py              # Flask, Poll-Threads, REST API
        ├── modbus_client.py     # Modbus TCP, Float32-Dekodierung
        ├── goodwe_client.py     # Goodwe UDP/8899 via goodwe-Bibliothek
        ├── wallbox_client.py    # Kathrein Wallbox Modbus TCP
        ├── ems_controller.py    # PV-Überschussladen + Zwangsladen
        ├── mqtt_publisher.py    # MQTT Discovery + Aggregat
        ├── inverters.py         # Register-Maps aller Geräte
        ├── history.py           # SQLite Persistenz
        └── web/index.html       # Web UI (Energie, Finanzen, Live, Geräte, Einstellungen)

Firmware (ShineLAN-X, ShineWifi-X) und das Vor-Ort-Diagnose-Tool (ShineDiag) liegen im separaten, privaten Repo growatt-diagnose-tool.

Lizenz

Frei verwendbar und anpassbar. Keine Garantie für Richtigkeit der Modbus-Register — immer gegen das offizielle Datenblatt des jeweiligen Modells prüfen.