← Zurück zur Startseite

Battery-Stats: SQLite-Verlauf + Web-Ansicht

Ergänzung zu den Modbus-Scripts auf der Startseite: ein kleiner Collector, der Messwerte in eine SQLite-Datenbank schreibt, plus eine PHP-Seite, die sie als Dashboard anzeigt.

Screenshot der batterie.php-Dashboard-Ansicht mit Live-Werten, Zellspannungen, MPPT- und Energiezähler-Daten

So sieht batterie.php mit echten Live-Daten aus (Live-Werte, Zellspannungen Modul 1, Netz/AC, Temperatur, MPPT/Solar, Energie-Zähler, Konfiguration sowie eine History-Tabelle unten). Zum Vergrößern anklicken.

Das ist eine Ergänzung zu den zwei Modbus-Scripts auf der Startseite – dort steht auch alles Wichtige zu Registern, bekannten Fallstricken und warum man den Akku nicht zu häufig abfragen sollte. Das gilt hier genauso: Der Collector liest ca. 55–60 Register nacheinander, mit Pause dazwischen – ein Durchlauf dauert entsprechend einige Minuten.

Scripts zum Download

Vier Dateien, die zusammengehören und in denselben Ordner müssen:

config.ini
Alle installationsspezifischen Werte (Akku-IP, Slave-ID, Poll-Pause, Datenbankpfad) – anpassen vor dem ersten Lauf.
Download
modbus.py
Wird vom Collector per Subprocess aufgerufen, um einzelne Register zu lesen.
Download
battery_collector.py
Liest alle Register aus und schreibt sie in eine SQLite-Datenbank. Gibt nach jedem Register sofort eine Fortschrittszeile aus.
Download
batterie.php
Web-Dashboard (siehe Screenshot oben) – liest die SQLite-Datenbank aus und zeigt Live-Werte plus History mit Pagination.
Download

Transparenzhinweis: Alle vier Scripte sind KI-generiert (mit Unterstützung von Claude entstanden). Bei uns laufen sie im Test einwandfrei, trotzdem übernehmen wir keine Haftung für Schäden oder Datenverlust durch die Nutzung – selbst prüfen, bevor man sich blind darauf verlässt.

Werbung
Selbst mit Claude coden?
Über diesen Link bekommst du eine kostenlose Woche Claude Code geschenkt. Schließt du danach ein Abo ab, erhalten wir dafür Nutzungsguthaben – für dich entstehen keine Kosten. Referral-Link, es gelten die Nutzungsbedingungen von Anthropic.
Claude Code verschenken

Kurzanleitung

1. config.ini anpassen (im selben Ordner wie die Scripte):

[modbus]
ip = <echte LAN-IP deines Akkus>
slave_id = 1
read_delay = 3.0

[database]
path = /var/lib/battery-stats/battery.db

Empfehlung: Datenbankpfad außerhalb des Webroots wählen, damit die Datei nicht versehentlich per HTTP direkt herunterladbar ist. Zielordner vorher anlegen und für den Cron-User beschreibbar machen.

2. Voraussetzungen prüfen:

3. Einmal manuell testen:

cd /pfad/zum/ordner
python3 battery_collector.py

Gibt nach jedem Register sofort eine Zeile aus (z. B. battery_soc_pct = 62) und legt die battery.db beim ersten Lauf automatisch an. Ein Durchlauf dauert – je nach Erreichbarkeit – etwa 3–8 Minuten.

4. Per Cron automatisieren, z. B. alle 5–10 Minuten (nicht zu knapp wählen, da ein Durchlauf selbst schon einige Minuten dauert):

*/5 * * * * python3 /pfad/zum/ordner/battery_collector.py >> /var/log/battery_collector.log 2>&1

5. batterie.php aufrufen über einen PHP-fähigen Webserver mit Zugriff auf die battery.db – zeigt das Dashboard wie im Screenshot oben.

Häufig gestellte Fragen (FAQ)

Gibt es ein Web Dashboard für den Marstek Venus A?

Ja. batterie.php weiter oben auf dieser Seite ist genau das: ein Web-Dashboard, das die per Collector-Script gefüllte SQLite-Datenbank ausliest und Live-Werte (Zellspannungen, Netz/AC, Temperatur, MPPT/Solar, Energie-Zähler) sowie eine History-Tabelle mit Pagination anzeigt – siehe Screenshot ganz oben. Beide Scripte gibt es oben zum Download.

Bekommt man aus dem Marstek Venus A die einzelnen Zellspannungen heraus?

Ja, aber nur über Modbus TCP. Weder die offizielle App noch die lokale JSON-RPC-API des Akkus liefern die einzelnen Zellspannungen – diese Werte stecken ausschließlich in Modbus-Registern, die nur über die kabelgebundene LAN-Schnittstelle abrufbar sind. Der hier bereitgestellte battery_collector.py liest sie per Modbus aus und schreibt sie in die SQLite-Datenbank, batterie.php zeigt sie anschließend im Dashboard an (siehe Screenshot ganz oben, Abschnitt „Zellspannungen Modul 1“).

Welche Zellkonfiguration und Zellchemie hat der Marstek Venus A?

Über die per Modbus ausgelesenen Zellspannungen lässt sich das Modul als 13 Zellen in Serie (13S) identifizieren, bei einer Gesamt-/Modulspannung von rund 42 V – das ergibt eine mittlere Zellspannung von ca. 3,2–3,25 V. Offiziell dokumentiert Marstek die genaue Zellchemie nicht, aber dieser Wert spricht stark für LFP (Lithium-Eisenphosphat): LFP-Zellen haben eine Nennspannung von genau 3,2 V und liegen im entspannten Zustand typischerweise bei 3,2–3,3 V pro Zelle – die gemessenen ca. 42 V bei 13S passen exakt in dieses Bild. Zum Vergleich: Bei NMC/Li-Ion-Zellen (Nennspannung ca. 3,6–3,7 V) läge ein 13S-Pack eher bei 47–48 V, was hier nicht beobachtet wird. Diese Einschätzung basiert auf der beobachteten Spannungslage und ist keine offizielle Herstellerangabe.