Dieses Blog durchsuchen

 

Wer eine Photovoltaik-Anlage hat, kennt das Thema nur zu gut: Tagsüber liefert die Sonne oft mehr Strom, als gerade verbraucht wird – der Überschuss fließt ins Netz. Abends oder bei trübem Wetter wird wieder aus dem Netz bezogen. Ein Batteriespeicher kann genau in diese Lücke springen: Überschuss speichern und bei Bedarf wieder abgeben. Damit sinkt der Netzbezug und man nutzt den eigenen Solarstrom besser.
In dem Blog Beitrag geht es um die Steuerung des Marstek-Venus-E3 Speichers mittels Home Assistant. Ich beschreibe wie man ihn per Modbus-Integration in sein Netzwerk anbinden kann und wie eine Automation die Lade- und Entladeleistung anhand von Einspeisung und Bezug automatisch regelt – inklusive Blueprint zum direkten Einsatz.
 
Der Marstek Venus E3 ist ein AC-seitiger Batteriespeicher, der sich einfach in bestehende PV-Anlagen (besonders kleine Balkonkraftwerke) integrieren lässt. Der Speicher nimmt überschüssigen Solarstrom auf und gibt ihn bei Bedarf wieder ab.
Für die Steuerung gibt es eine Vielzahl von Möglichkeiten. Der Marstek unsterstützt auch, über die Marstek-Smartphone APP kofigurierbar, Smartmeter von Shelly und div. anderen Herstellern.
Ich benutze aber die Informationen die mir das EVU-Smartmeter ohnehin schon zur Verfügung stellt und die ich im Homeassistant als ESP-Home Entitäten zur Verfügung habe. ( siehe Projekt: https://blog.fh-kaernten.at/ingmarsretro/2024/03/21/evu-smartmeter-mit-esp32-und-esphome-auslesen-und-in-homeassistant-verwenden/)
 
Um den Marstek  an den Homeassistant anzubinden, gibt es einige Möglichkeiten. Für mich immer interessant ist natürlich eine cloudfreie offline Anbindung.  Hierfür stellt der Speicher den Modbus über zwei Anschlüsse bereit. Über RS485 und als ModbusTCP auch über den LAN-Port des Geräts. Also ideale Bedingungen. Da bei mir soviel wie möglich kabelgebunden abläuft, hängt mein Marstek ohnehin über LAN am Router. Modbus TCP kommuniuziert über den Port 502. Es gilt nur noch die IP Adresse des Marstek herauszufinden. Die ist am schnellsten über den Router oder eine IP-Scanner Software herauszubekommen. Hat man diese Info, dann gehts schon im Homeassistant weiter. Hier gibt es ein super github-repository: https://github.com/ViperRNMC/marstek_venus_modbus das die Integration des Marstek über ModbusTCP bereitstellt. Installiert wird die Integration über ein  custom-repo in HACS und schon kann man die Marstek IP eingeben und sollte danach folgende Entitäten zur Verfügung haben:
 
 
  •  Ladeleistung einstellen:   Wie viel Watt die Batterie maximal aus dem Überschuss laden soll (z. B. 0–2500 W).
  •  Entladeleistung einstellen: Wie viel Watt aus der Batterie abgegeben werden soll, um den Hausbezug zu decken (z. B. 0–2500W).
  • Maximale Ladeleistung: Die Obergrenze für die Ladeleistung
  • Maximale Entladeleistung: Die Obergrenze für die Entladeleistung
  • Batterie-Ladezustand (SOC): State of Charge in Prozent – wichtig, um z. B. bei vollem Speicher das Laden zu stoppen oder unter einem Mindest-SOC nicht mehr zu entladen.
  •  Steuermodus (RS485): Muss aktiv sein, damit externe Befehle (z. B. von Home Assistant) angenommen werden.
  • Force-Mode :** Optionen wie „Laden“, „Stopp“, „Entladen“ für manuelle  Betriebsarten.

Ist der Marstek Speicher vom Homeassistant aus erreichbar, kann mit der Automation begonnen werden. Die Idee ist ganz einfach: Das Smartmeter liefert der Automation den Istzustand in welche Richtung die Energie fließt und wieviel davon. (also ob Leistung vom Netz bezogen wird oder in Netz eingespeist wird).  Mit dieser Information kann dann ein Stellwert für den Marstek berechnet werden, der zum Ziel hat, die eingespeiste Leistung zum Laden zu nutzen und bei Bezug aus dem Netz diesen mit Entladen zu kompensieren. Sprich: "den Nullpunkt halten".  Das geht nur im Bereich der vom Marstek bereitgestellten Arbeitsbereiche.

Ist beispielsweise gerade das Backrohr, Kochplatte und Spülmaschine ein, dann ziehen diese Verbraucher schnell mal 6kW aus dem Netz. Da kann der Marstek auch nur mit max. 2.5kW entgegenwirken. Das bedeutet 3.5kW müssen weiterhin vom EVU geliefert werden. Und die zweite Bedingung: Der Akku soll auch voll genug sein. D.h. die Automation überwacht auch den SOC des Akkus und beendet den Entladevorgang wenn die eingestellte SOC-Reserve erreicht ist.

Was die Automation macht

  • Einspeisung ins Netz (Export) → Es gibt Überschuss → Batterie soll laden (bis zu einem einstellbaren Limit und maximalen SOC).
  • Bezug aus dem Netz (Import) → Haus braucht Strom → Batterie soll entladen (bis zu einem Mindest-SOC, um Tiefentladung zu vermeiden und eine Reserve zu behalten).
  • Weder nennenswerter Export noch Import→ Lade- und Entladeleistung werden schrittweise zurückgefahren, damit der Speicher nicht „gegen das Netz“ arbeitet.
  • Damit keine Dauer-Schalterei entsteht, arbeitet die Logik mit Hysterese (Deadband) und Schrittweiten: Die Leistung wird nicht sprungartig auf einen Zielwert gesetzt, sondern in festen Schritten (z. B. 70 W beim Laden, 100 W beim Entladen) pro Ausführung angepasst. Zusätzlich wird eine kleine  Soll-Reserve (Deadband) abgezogen, sodass die Regelung nicht auf kleinsten Schwankungen reagiert.

Ablauf in Kurzform

1. Steuermodus RS485: Ist er aus, schaltet die Automation ihn wieder ein (damit die Befehle ankommen).
2. SOC-Obergrenze: Ist der Ladezustand ≥ Max.-SOC, wird die Ladeleistung auf 0 gesetzt.
3. Konflikt Laden/Entladen: Sind gleichzeitig Lade- und Entladeleistung > 0, wird je nach Netzsituation eine Richtung auf 0 gesetzt.
4. Überschuss:  Export > Schwellwert, SOC < Max.-SOC → Ladeleistung schrittweise erhöhen (mit Limit und Deadband).
5. Bezug: Import > Schwellwert, SOC > Min.-SOC → Entladeleistung schrittweise erhöhen (mit Max.-Entladeleistung).
6. Export hoch, Entladung an: Entladeleistung schrittweise reduzieren.
7. Bezug oder kein Überschuss  Ladeleistung schrittweise reduzieren.
8. Force-Mode: Je nach Netzsituation und aktueller Leistung wird „Entladen“, „Laden“ oder „Stopp“ gesetzt, um das Gerät in die passende Betriebsart zu bringen.
Alle Schwellwerte, Schrittweiten und Verzögerungszeiten sind im Blueprint über die GUI einstellbar.
Den Blueprint  habe ich auf meinem GitHub-account zur Verfügung gestellt:
 
 
Im Homeassistant sind drei Helfer anzulegen. Die genaue Liste und kurze Erklärungen stehen in der Helfer-Anleitung im Projekt (HELPER_ANLEITUNG.md).
 

Tipps für den Einsatz

1. Modbus-Register zuerst prüfen:  Nur mit der richtigen Modbus-Konfiguration (Adressen, Skalierung) liefern die Entitäten plausible Werte.
2. Zähler-Einheit im Blueprint: Wenn der Zähler in kW liefert, Kilowatt (kW) wählen – dann wird intern mit 1000 multipliziert. Bei Watt-Sensoren „Watt (W)“ wählen.
3. Helfer vor der Automation anlegen: Die drei input_number-Helfer müssen existieren und sinnvolle Min/Max-Werte haben, bevor man die Automation (oder den Blueprint) aktiviert.
4. Force-Mode optional: Wenn das Gerät keinen Force-Mode hat, trotzdem eine Select-Entity auswählen (z. B. eine Dummy-Select), oder den Blueprint ggf. so anpassen, dass der Force-Mode-Block weggelassen werden kann – je nach Blueprint-Version.
 
Wenn ihr einen Marstek- oder Venus-Speicher per Modbus und Home Assistant nutzt, könnt ihr die beschriebene Automation und den Blueprint als Basis nehmen und bei Bedarf an eure Zähler und Geräte anpassen. Die genaue Modbus-Registerliste bleibt dabei eure erste Quelle – ohne sie läuft die Anbindung nicht sauber.
Viel Erfolg beim Nachbauen und Optimieren eures Überschuss-Speichers!
 

Hinweis:
Die beschriebene Steuerung setzt eine funktionierende Modbus-Anbindung und eine sichere elektrische Installation voraus. Änderungen an der Speichersteuerung erfolgen auf eigene Verantwortung; bei Unsicherheit einen Fachbetrieb hinzuziehen.

Keine Kommentare:

Kommentar veröffentlichen