SolarEdge Kommunikation über Modbus TCP

Und wieder ein Ärgernis im Smart Home Umfeld, die SolarEdge API V1 wurde zum 3.11.2026 abgeschaltet. Eine neuere Version von Home Assistent für die V2 ist noch nicht fertig.

SolarEdge SE9K Modbus aktivieren

  • Display mit einem kurzen Tastendruck einschalten.
  • Den Taster anschließend etwa 5 Sekunden gedrückt halten, bis ein Menü erscheint.
  • Falls ein Menü erscheint: kurz drücken zum Weiterblättern, lang drücken zum Auswählen.
  • Suche nach Communication / Kommunikation → LAN Conf → Modbus TCP.
  • Bei mir wurde die IP 192,168.178.75 angezeigt und Port 502.
  • Bestätigt und mir beenden verlassen

Teste im Terminal ob der Wechselrichter erreichbar ist

nc -zv -w 5 192.168.178.75 502

Das Problem ist nur das nur eine Verbindung zum Wechselrichter dann möglich ist.
Wenn mehrere Verbindungen gebracht werden also Home Assisten und ein anderer EVCC z,B, auf den Wechselrichter zugreifen soll ist ein Modbus Proxy nötig.


SolarEdge Modbus-TCP-Proxy

1. Zweck und aktueller Aufbau

Der SolarEdge SE9K wird über einen eigenen Proxy von Home Assistant und zwei evcc-Instanzen abgefragt. Der Proxy bündelt die Anfragen und verwendet eine gemeinsame Verbindung zum Wechselrichter. Er läuft unabhängig von evcc in einem eigenen Debian-13-LXC-Container.

Proxmox-Host: 192.168.178.114. Auf diesem Host laufen außerdem Checkmk und ntopng. Der Proxy ist ein separater Container.

Home Assistant + evcc in HA + eigenständiges evcc
|
v
Modbus-Proxy: 192.168.178.85:502
|
v
SolarEdge SE9K: 192.168.178.75:502, Geräte-ID 1

Home Assistant: 192.168.178.160. Die IP der eigenständigen evcc-Instanz ist hier nicht dokumentiert.

DHCP wird aktuell über Synology bereitgestellt; die Umstellung auf Kea ist vorgesehen. Die FRITZ!Box wird für diese Anleitung nicht als DHCP-Server vorausgesetzt.

2. Verbindungswerte

Alle Verbraucher: Host 192.168.178.85, TCP-Port 502, Modbus-Geräte-ID 1. Nur der Proxy selbst verwendet die direkte Wechselrichter-Adresse 192.168.178.75.

Am Wechselrichter zeigt das Display „Modbus TCP: klar“, IP 192.168.178.75 und Port 502. Port 1502 ist für diesen Aufbau nicht erforderlich.

Der Proxy-Container hat eine statische Adresse: 192.168.178.85/24. Diese Adresse muss bei Synology und später Kea von der dynamischen Vergabe ausgeschlossen oder passend reserviert werden, damit kein Adresskonflikt entsteht.

3. Installation und automatischer Start

Die folgenden Schritte wurden in der Root-Konsole des Proxy-Containers ausgeführt. Sie sind zur Dokumentation einer Neuinstallation gedacht und müssen im laufenden System nicht erneut ausgeführt werden.

apt update
apt upgrade -y
apt install -y python3-venv ca-certificates
python3 -m venv /opt/modbus-proxy
/opt/modbus-proxy/bin/pip install modbus-proxy

Die Dienstdefinition liegt unter /etc/systemd/system/modbus-proxy.service und enthält:

[Unit]
Description=Modbus TCP Proxy SolarEdge
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/opt/modbus-proxy/bin/modbus-proxy -b tcp://192.168.178.85:502 --modbus tcp://192.168.178.75:502
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Hinweis: ExecStart ist eine einzige Zeile; ein optischer Zeilenumbruch im Dokument ist kein zusätzlicher Zeilenumbruch in der Datei.

systemctl daemon-reload
systemctl enable --now modbus-proxy
systemctl status modbus-proxy --no-pager

Bestätigter Zustand: enabled und active (running). Der Dienst startet damit beim Start des Containers. Für den Start nach einem Neustart des Proxmox-Hosts muss zusätzlich beim Container die Proxmox-Option „Beim Booten starten“ aktiviert sein.

4. Falls sich die Wechselrichter-IP ändert

Diese Änderung erfolgt ausschließlich in der Konsole des Proxy-Containers 192.168.178.85, nicht in der Proxmox-Host-Konsole und nicht in Home Assistant.

1. Die neue IP des SolarEdge im aktiven DHCP-System ermitteln: aktuell Synology, später Kea. Gerät möglichst anhand seiner bekannten MAC-Adresse bzw. DHCP-Zuordnung identifizieren. Die konkrete MAC-Adresse ist hier nicht dokumentiert.

2. Dienstdatei vorsorglich sichern und öffnen:

cp /etc/systemd/system/modbus-proxy.service /etc/systemd/system/modbus-proxy.service.bak
nano /etc/systemd/system/modbus-proxy.service


3. In ExecStart nur die Zieladresse hinter –modbus ersetzen. Aktuell lautet dieser Teil:

--modbus tcp://192.168.178.75:502


Die neue Wechselrichter-IP ersetzt 192.168.178.75. Port 502 bleibt bestehen, sofern er am Wechselrichter nicht geändert wurde. Die Listen-Adresse hinter -b bleibt 192.168.178.85:502.


4. In nano speichern: Strg+O, Enter. Schließen: Strg+X.


5. Dienstdefinition neu einlesen und Proxy neu starten:

systemctl daemon-reload
systemctl restart modbus-proxy
systemctl status modbus-proxy --no-pager -l


6. Anschließend die Aktualisierung der Messwerte in HA und beiden evcc-Instanzen prüfen. „active (running)“ bestätigt den laufenden Prozess, allein aber noch keine erfolgreiche Modbus-Abfrage.


In Home Assistant und beiden evcc-Instanzen bleibt die Adresse 192.168.178.85 unverändert. Voraussetzung ist, dass sich nur die Wechselrichter-IP geändert hat.

5. Rücknahme einer fehlerhaften Änderung

Wenn die zuvor gesicherte Datei wiederhergestellt werden soll:

cp /etc/systemd/system/modbus-proxy.service.bak /etc/systemd/system/modbus-proxy.service
systemctl daemon-reload
systemctl restart modbus-proxy
Dieser Beitrag wurde unter Uncategorized veröffentlicht. Setze ein Lesezeichen für den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert