luxtronik2-modbus-proxy als systemd-Dienst unter Linux betreiben.
systemd verwenden, wenn:
- Ein Linux-Server (Raspberry Pi, NAS, Heimserver) vorhanden ist, der kein Docker betreibt
- Natives Dienst-Management mit
systemctlbevorzugt wird - Der Proxy ohne Container-Laufzeitumgebung automatisch beim Systemstart starten soll
Docker verwenden, wenn:
- Docker bereits auf dem Server laeuft
- Container-Isolation und einfache Updates gewuenscht sind
- Eine einzelne Datei mit
docker composefuer das Deployment bevorzugt wird
Den Docker-Installationsweg im Benutzerhandbuch finden.
- Ein Linux-System mit systemd (die meisten modernen Linux-Distributionen)
- Python 3.10 oder neuer
pipsudo-Rechte zur Installation der Service-Datei
Installation von PyPI:
pip install luxtronik2-modbus-proxyOder direkt aus dem GitHub-Repository installieren:
pip install git+https://github.com/OWNER/PUBLIC-luxtronik2-modbus-proxy.gitNach der Installation pruefen, ob der Befehl verfuegbar ist:
luxtronik2-modbus-proxy --versionDen Proxy als dedizierten Nicht-Root-Systembenutzer aus Sicherheitsgruenden betreiben:
sudo useradd -r -s /bin/false luxtronik-proxyDieser Befehl erstellt ein Systemkonto (-r) ohne Login-Shell (-s /bin/false). Der Proxy-Prozess laeuft als dieser Benutzer.
Das Konfigurationsverzeichnis erstellen und die Beispieldatei kopieren:
sudo mkdir -p /etc/luxtronik2-modbus-proxy
sudo cp config.example.yaml /etc/luxtronik2-modbus-proxy/config.yaml
sudo nano /etc/luxtronik2-modbus-proxy/config.yamlMindestens luxtronik_host auf die IP-Adresse der Waermepumpe setzen:
luxtronik_host: "192.168.x.x" # Durch die IP-Adresse der Waermepumpe ersetzenEine Beschreibung aller Konfigurationsfelder im Benutzerhandbuch.
Dem Dienstbenutzer Lesezugriff auf die Konfigurationsdatei erteilen:
sudo chown root:luxtronik-proxy /etc/luxtronik2-modbus-proxy/config.yaml
sudo chmod 640 /etc/luxtronik2-modbus-proxy/config.yamlDie bereitgestellte Service-Datei-Vorlage in das systemd-Verzeichnis kopieren:
sudo cp contrib/luxtronik2-modbus-proxy.service /etc/systemd/system/Bei Installation von PyPI ohne Klon des Repositories die Service-Datei direkt herunterladen:
sudo curl -o /etc/systemd/system/luxtronik2-modbus-proxy.service \
https://raw.githubusercontent.com/OWNER/PUBLIC-luxtronik2-modbus-proxy/main/contrib/luxtronik2-modbus-proxy.servicesystemd neu laden und den Dienst fuer den Autostart einrichten:
sudo systemctl daemon-reload
sudo systemctl enable --now luxtronik2-modbus-proxyDas --now-Flag startet den Dienst sofort und aktiviert ihn zusaetzlich fuer den Autostart.
sudo systemctl status luxtronik2-modbus-proxyEin gesunder Dienst zeigt active (running). Bei failed die Logs pruefen (siehe unten).
Laufende Log-Ausgabe verfolgen:
journalctl -u luxtronik2-modbus-proxy -fDie letzten 50 Log-Zeilen anzeigen:
journalctl -u luxtronik2-modbus-proxy -n 50Der Proxy verwendet structlog mit JSON-Ausgabe, die journald automatisch erfasst. Die Ereignisse proxy_starting, proxy_running und wiederkehrende poll_cycle_complete-Ereignisse sollten sichtbar sein.
Konfigurationswerte koennen ueber Umgebungsvariablen ueberschrieben werden, ohne config.yaml zu bearbeiten. Dies ist nuetzlich, wenn dieselbe Konfigurationsdatei in mehreren Umgebungen verwendet wird.
Eine Umgebungsdatei unter /etc/luxtronik2-modbus-proxy/env erstellen:
sudo nano /etc/luxtronik2-modbus-proxy/envKEY=VALUE-Paare mit dem Praefix LUXTRONIK_ hinzufuegen. Beispiel:
LUXTRONIK_HOST=192.168.x.x
LUXTRONIK_POLL_INTERVAL=60
LUXTRONIK_LOG_LEVEL=DEBUG
Die Service-Datei enthaelt bereits EnvironmentFile=-/etc/luxtronik2-modbus-proxy/env (das --Praefix macht die Datei optional — der Dienst startet auch, wenn die Datei nicht existiert).
Nach dem Bearbeiten der Umgebungsdatei den Dienst neu starten:
sudo systemctl restart luxtronik2-modbus-proxyDie vollstaendige Log-Ausgabe unmittelbar nach dem Fehler pruefen:
journalctl -u luxtronik2-modbus-proxy -n 100 --no-pagerNach error- oder exception-Ereignissen suchen. Haeufige Ursachen:
- Konfigurationsdatei nicht gefunden: pruefen, ob
/etc/luxtronik2-modbus-proxy/config.yamlexistiert und vom Benutzerluxtronik-proxygelesen werden kann - Ungueltiges YAML: die Konfigurationsdatei oeffnen und auf Einrueckung oder Syntaxfehler pruefen
- Python nicht am in
ExecStartangegebenen Pfad gefunden:which luxtronik2-modbus-proxyals root ausfuehren, um den korrekten Pfad zu finden, und die Service-Datei entsprechend aktualisieren
Port 502 ist ein privilegierter Port (unter 1024), der Root-Rechte oder eine Capability-Vergabe erfordert. Optionen:
- Die Capability dem Python-Binary erteilen (empfohlen):
sudo setcap 'cap_net_bind_service=+ep' $(which python3)
- Oder
modbus_portinconfig.yamlauf einen nicht-privilegierten Port aendern (z.B. 5020) und die evcc-/HA-Konfiguration entsprechend anpassen.
Den Pfad in der Service-Datei mit dem Speicherort von config.yaml abgleichen:
grep ExecStart /etc/systemd/system/luxtronik2-modbus-proxy.serviceBei Abweichung die Service-Datei bearbeiten und neu laden:
sudo systemctl daemon-reload
sudo systemctl restart luxtronik2-modbus-proxysystemd begrenzt die Neustartrate von Diensten, die wiederholt neu starten. Die Service-Datei enthaelt StartLimitIntervalSec=60 und StartLimitBurst=3, um Neustart-Schleifen zu verhindern. Bei Startfehlern aufgrund eines Konfigurationsfehlers diesen zuerst beheben, bevor ein Neustart versucht wird:
journalctl -u luxtronik2-modbus-proxy -n 50
# Konfigurationsfehler beheben, dann:
sudo systemctl reset-failed luxtronik2-modbus-proxy
sudo systemctl start luxtronik2-modbus-proxy