Marstek Modbus Suite - Integration mit Fancy Dashboard

Hallo zusammen,

ich habe in den letzten Monaten eine Home-Assistant-Integration für die Marstek-Venus-Speicher weiterentwickelt und möchte sie euch vorstellen. Sie liest den Speicher über lokales Modbus TCP — kein Marstek-Konto, keine Cloud, kein MQTT-Broker, kein YAML.

Repo: https://github.com/sphings79/marstek-modbus-suite

Die Grundlage ist die Integration von ViperRNMC, ohne die es das hier nicht gäbe. Ich habe sie um ein eigenes Panel, schreibenden Zugriff und deutlich mehr Register erweitert. Unten steht, was das für Umsteiger bedeutet.


Das Panel

Der Punkt, der mich am meisten Arbeit gekostet hat: Die Integration bringt ihre eigene Seite mit. Sie erscheint in der Seitenleiste, sobald ein Speicher eingerichtet ist — und sie braucht keine einzige Custom Card. Alles darin gehört zur Integration.

Übersicht

Der äußere Ring ist die Meldung des BMS, der innere das, was oberhalb der Entladegrenze nutzbar ist. Der Abstand zwischen beiden ist die Reserve.

Zwei der vier Felder darunter folgen der Flussrichtung: beim Laden steht dort, was noch hineinpasst und wie lange es bis voll dauert, beim Entladen, was noch herauskommt und wie lange bis leer.

Zellen

Bei einem Venus D mit sieben Packs sind das 112 Zellen. Der Speicher meldet ein Delta je Pack, aber nie eines über den ganzen Stapel — ein Pack, das in sich auseinanderläuft, ist in der Entitätsliste eine Zahl unter vielen. Auf einer gemeinsamen Achse ist es der Balken, der breit geworden ist. Im Bild oben ist das Pack 3 mit 55 mV.

Packs

Ladezustand je Pack, mit der Entladegrenze und darunter der Grenze, die die Notstromsteckdose bei einem Ausfall erreicht. Das markierte Pack ist das, welches gerade Strom führt — der Venus arbeitet ein Pack nach dem anderen ab.

Steuerung

Lade- und Entladeleistung, Grenzwerte, Betriebsmodus, Notstrom, RS485 und alle sechs Zeitpläne — Zeiten, Leistung, Wochentag, an und aus.

Jeder Regler liest seine Grenzen aus der Entität, statt sie fest zu verdrahten. Derselbe Editor ist damit auf einem Venus A (1500 W) genauso richtig wie auf einem Venus D (2500 W).

Wichtig: Was den Speicher von außen regelt — eine Nulleinspeisungs-Automation, ein Energiemanager — schreibt dieselben Register und gewinnt innerhalb von Sekunden. Passiert das direkt nach einer Eingabe, sagt der Reiter das, statt kaputt auszusehen.

Einstellungen

Sieben Farbschemata mit je eigener heller und dunkler Fassung, darunter eines, das die Farben eures Home-Assistant-Themes übernimmt. Dazu Startreiter, Ausblenden einzelner Reiter, eine zusätzliche Nachkommastelle und Import/Export der Einstellungen.


Was noch dazugekommen ist

Neben den rohen Registern rechnet die Integration ein paar Werte aus, die der Speicher nicht selbst meldet:

  • Nutzbare Energie und Energie bis voll — gemessen gegen eine Entladegrenze, die ihr je Speicher einstellt (Standard 12 %)

  • Laufzeit bis leer / bis voll — Stunden bei der aktuellen Leistung, zählt nur in der Richtung, in die es gerade geht

  • Verbleibende Zyklen und Batteriezustand

  • Notstromreserve — die Energie unterhalb der Entladegrenze, an die nur die Notstromsteckdose kommt (Venus A und D)

Das Panel spricht Deutsch und Englisch und folgt der Sprache, auf die Home Assistant eingestellt ist. Einrichtung und Entitätsnamen gibt es zusätzlich auf Niederländisch.

Es findet seine Werte übrigens über das Register hinter einer Entität, nicht über deren Namen. Gerät umbenennen, in einen anderen Bereich schieben, Sprache wechseln — das Panel arbeitet weiter.


Für alle, die schon Vipers Integration nutzen

Der Umstieg ist unkritisch, aber ich will nicht behaupten, er wäre spurlos.

Was bleibt: Beide Integrationen benutzen denselben Domain-Namen und bauen die unique_id identisch aus Config-Eintrag und Registerschlüssel. Der Config-Eintrag bleibt bestehen, und von den 170 Registerschlüsseln bei Viper sind 165 unverändert übernommen. Diese Entitäten behalten ihre Entitäts-ID und ihren Verlauf. Es kommen rund 320 dazu.

Was nicht bleibt: Fünf Entitäten gibt es nicht mehr und sie stehen danach auf unavailable:

ac_current

ac_offgrid_current

internal_mos2_temperature

max_cell_voltage

min_cell_voltage

Die letzten beiden sind die wahrscheinlichsten Stolpersteine — bei mir heißen sie jetzt battery_N_max_cell_voltage je Pack. Wer eine der fünf in einer Automation oder auf einem Dashboard nutzt, muss anpassen; die restlichen einfach aus der Entitätsregistrierung löschen.

Nicht parallel installieren. Beide Integrationen belegen denselben Ordner custom_components/marstek_modbus/. Home Assistant lädt den genau einmal — wer beide installiert, überschreibt die eine mit der anderen. Also erst Vipers Version über HACS entfernen, dann diese installieren.


Installation

Die Integration ist bei HACS noch nicht im Standardverzeichnis — der Antrag läuft. Bis dahin über HACS → Integrationen → ⋮ → Benutzerdefinierte Repositories, Kategorie Integration:

https://github.com/sphings79/marstek-modbus-suite

Danach installieren, Home Assistant neu starten und die Integration über Einstellungen → Geräte & Dienste hinzufügen. Ihr braucht IP, Port (meist 502) und Unit-ID eures Modbus-Gateways sowie die Gerätevariante (A, D, E v1/v2 oder E v3).

Venus A, D und E v3 könnt ihr direkt per Ethernet anbinden, die sprechen Modbus TCP selbst. Für alles andere braucht es einen RS485-auf-TCP-Adapter (Elfin EW11, PUSR DR134, Waveshare und ähnliche laufen).

Vorausgesetzt wird Home Assistant 2025.9 oder neuer.


Über Rückmeldungen freue ich mich — besonders von Venus-A- und Venus-E-Besitzern, denn meine eigene Hardware ist ein Venus D mit sieben Packs, und die Register für die anderen Modelle sind zum Teil aus der Firmware abgeleitet und nicht an echter Hardware geprüft.

Und wenn euch das Ding gefällt, freue ich mich über einen :star: auf GitHub: https://github.com/sphings79/marstek-modbus-suite

3 „Gefällt mir“