No description
  • Python 92.3%
  • Shell 7.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-02 15:53:04 +02:00
.gitignore Marstek-Webanzeige hinzufügen 2026-07-24 17:28:42 +02:00
install_service.sh 0.4, update 2026-07-24 18:22:37 +02:00
marstek_web.py Gauge 2026-08-02 15:53:04 +02:00
README.md Gauge 2026-08-02 15:53:04 +02:00
VERSION 0.3, update 2026-07-24 18:20:50 +02:00

marstekTool

Einfache Webanzeige für drei Marstek-Variablen aus ioBroker. Die Seite zeigt den Ladezustand als Gauge, die gesamte PV-Leistung, die Ausgangs-/Entladeleistung, die daraus berechnete Differenz und den Batteriestatus. Außerdem werden ts, lc (sofern von ioBroker geliefert) und der Zeitpunkt des letzten Abrufs angezeigt.

Die Anwendung liest folgende ioBroker-States direkt ein:

ioBroker-State Wert
javascript.0.Variablen.Marstek_pv PV gesamt
javascript.0.Variablen.Marstek_soc Ladezustand
javascript.0.Variablen.Marstek_load Ausgangs-/Entladeleistung

Voraussetzungen

  • Python 3.10 oder neuer
  • Netzwerkzugriff auf ioBroker

Zusätzliche Python-Pakete sind nicht erforderlich.

Start

python marstek_web.py

Danach ist die Oberfläche unter http://IP-DES-RECHNERS:8321 erreichbar. Sie aktualisiert sich automatisch alle fünf Sekunden.

Auf einem Linux-Server als Dienst einrichten

Der Projektordner kann an einer beliebigen Stelle auf dem Linux-Server liegen. Das Installationsskript ermittelt seinen Pfad automatisch und trägt ihn in den systemd-Dienst ein.

Im Projektordner ausführen:

cd /beliebiger/pfad/PythonProject3
chmod +x install_service.sh
sudo ./install_service.sh

Das Skript verwendet .venv/bin/python, sofern im Projekt eine virtuelle Python-Umgebung vorhanden ist. Andernfalls wird das installierte python3 verwendet. Danach läuft die Webanzeige als Dienst marstek-web, wird bei einem Fehler automatisch neu gestartet und startet auch nach einem Neustart des Servers selbstständig.

Status und Protokoll lassen sich anschließend so aufrufen:

systemctl status marstek-web
journalctl -u marstek-web -f

Der Dienst kann mit folgenden Befehlen gesteuert werden:

sudo systemctl restart marstek-web
sudo systemctl stop marstek-web
sudo systemctl start marstek-web

Versionsanzeige und automatische Updates

Die Fußzeile zeigt die Version aus der Datei VERSION, den aktuellen Git-Commit, dessen Datum und gegebenenfalls den Hinweis lokal geändert. Alle fünf Minuten prüft die Anwendung den konfigurierten Git-Upstream auf neue Commits.

Ist eine neue Version vorhanden, erscheint in der Fußzeile die Schaltfläche UPDATE verfügbar. Nach Bestätigung führt die Anwendung git pull --ff-only aus und startet anschließend den Dienst marstek-web neu. Sobald der Dienst wieder erreichbar ist, lädt die Browserseite automatisch neu.

Das Installationsskript richtet für den Dienstbenutzer eine eng begrenzte sudo-Berechtigung ein, die ausschließlich den Neustart von marstek-web erlaubt. Für die Updatefunktion müssen das Projekt ein Git-Repository, ein Upstream konfiguriert und der Dienstbenutzer zum Lesen und Aktualisieren des Projektordners berechtigt sein.

Voreingestellte Datenquellen:

javascript.0.Variablen.Marstek_pv
javascript.0.Variablen.Marstek_soc
javascript.0.Variablen.Marstek_load

Berechnung

Differenz = Marstek_load - Marstek_pv
  • Differenz größer 0: Batterie speist
  • Differenz kleiner 0: Batterie lädt
  • Differenz gleich 0: Batterie neutral

Optionale Konfiguration

Die Voreinstellungen lassen sich über Umgebungsvariablen ändern:

Variable Standard
MARSTEK_HOST 0.0.0.0
MARSTEK_PORT 8321
IOBROKER_URL http://10.0.1.122:8087
IOBROKER_TIMEOUT 5
MARSTEK_PV_STATE javascript.0.Variablen.Marstek_pv
MARSTEK_SOC_STATE javascript.0.Variablen.Marstek_soc
MARSTEK_LOAD_STATE javascript.0.Variablen.Marstek_load

Beispiel für PowerShell:

$env:MARSTEK_PORT = "8321"
python .\marstek_web.py

Tests

python -m unittest -v

Die Tests verwenden Beispieldaten und benötigen keine Verbindung zu ioBroker.