- Python 92.2%
- Shell 7.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .gitignore | ||
| install_service.sh | ||
| marstek_web.py | ||
| README.md | ||
| VERSION | ||
marstekTool
Einfache Webanzeige für den Marstek/Hame-Energy-State aus ioBroker. Die Seite
zeigt pe, beide PV-Eingänge (w1, w2), deren Summe, die Ausgangs- bzw.
Entladeleistung (m3), die daraus berechnete Differenz und den Batteriestatus.
Außerdem werden ts, lc (sofern von ioBroker geliefert) und der Zeitpunkt des
letzten Abrufs angezeigt.
Nach jedem erfolgreichen Abruf schreibt die Anwendung die berechneten Werte zusätzlich in folgende ioBroker-States:
| ioBroker-State | Wert |
|---|---|
javascript.0.Variablen.Marstek_pv |
PV gesamt (w1 + w2) |
javascript.0.Variablen.Marstek_soc |
Ladezustand (pe) |
javascript.0.Variablen.Marstek_load |
Ausgangs-/Entladeleistung (m3) |
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 Datenquelle:
http://10.0.1.122:8087/states?pattern=mqtt.0.hame_energy.HMJ-2.device.6824997872e4.ctrl&prettyPrint
Berechnung
PV gesamt = w1 + w2
Differenz = m3 - (w1 + w2)
- 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_STATE_ID |
mqtt.0.hame_energy.HMJ-2.device.6824997872e4.ctrl |
IOBROKER_TIMEOUT |
5 |
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.