- Python 92.3%
- Shell 7.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .gitignore | ||
| install_service.sh | ||
| marstek_web.py | ||
| README.md | ||
| VERSION | ||
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.