Deye Sun Wechselric...
 
Benachrichtigungen
Alles löschen

Deye Sun Wechselrichter über Modbus auslesen

1 Beiträge
1 Benutzer
0 Reactions
68 Ansichten
(@fredratl)
Newbie
Beigetreten: Vor 1 Woche
Beiträge: 1
Themenstarter  

Hallo Zusammen,

auch ich bin jetzt endlich Besitzer einer 6K PV Anlage und da ich gestern Abend etwa gute 3-4h benötigt habe, mein Deye Sun sg04lp3-eu Wechselrichter über modbus abzufragen und dieses in IOBroker reinzuschmeißen, dachte ich mir ich schreibe mal ne kurze Anleitung wie das zumindest bei mir funktioniert.

Wie immer, am Ende ist es easy Grin br />
Ich hatte mehrere Wegen probiert und viel recherchiert...
Am Ende sind es 2 mögliche Wege die ohne Zusatz-Hardware funktionieren.

 

1. Ermitteln der IP-Adresse vom Wechselrichter:
Falls noch unbekannt, mm besten in die Fritzbox unter Ereignisse -> WLAN schauen. Dann einfach den Haken setzen für Protokollierung von An/Abmeldungen und den Wechselrichter mal richtig aus und wieder anschalten. Dann sollte in der Fritzbox Ereignisse->WLAN der Host sichtbar sein.
Ich persönlich habe dann den Wechselrichter einen schöneren Namen gegeben. Alt war irgendwas mit PC-192.... Neu: solardach

2. Testen ob Netzwerk-Zugriff zum Wechselrichter funktioniert.
Browser öffnen und http://solardach (oder die IP des Wechselrichters) eingeben.
Username/Password: admin/admin

3. Optional - Testen ob Modbus Port 8899 über TCP offen ist.
ich habe auf der Cmd oder Putty eingegeben: telnet solardach 8899
Dann sollte keine Fehlermeldung kommen, was bedeutet, dass der Port beim Wechselrichter offen ist.

4. Modbus ansprechen über TCP

Option 4.1: Benutzung von IoBroker Plugin "deyeidc".
Das Plugin mach ein ziemlich guten Eindruch und hat bei mir auf Anhieb funktioniert. Es ist wohl aktuell nur möglich über Modbus die Wechselrichter Einstellungen zu lesen. Das sollte aber in den meisten Fällen vollkommen ausreichen.

Settings von deyeidc plugin:
Einstellungen:
IP-Adresse wechselrichter: die IP vom Wechselrichter. Ich habe hier nicht den Namen solardach verwendet.
Port: 8899
Geräte ID: das ist die SN vom Deye-Logger. Findet man entweder in der Deye-App oder auch auf der WLAN Antenne vom Wechselrichter.
Abfrage-Intervall: 60 sek

Dann einfach Speichern und schlieißen und die deyeidc unter IpBroker Instanzen starten. Sollte grün werden.
Dann schauen, ob unter IOBroker->Objekte etwas positives steht unter deyeidc.
Es sollten da erstmal nur 1-3 Werte so stehen. Wenn ja super.
Jetzt müssen wir die Config von deyeidc nochmal anpassen. Wir müssen die Register-Einstellungen für Modbus über JSON importieren.
Im github repo deyeidc  findet ihr ein paar JSON Dateien. Ich habe folgende genommen: deyeidc.Sun15K-sg01hp3-eu-am2.json
Also JSON Datei runterladen und dann in der Plugin-Config von deyidc oben rechts auf "Importieren" drücken und diese Datei importieren.
Ich musste dann nochmal die IP Adresse und die GeräteID setzen.
Dann Speichern. und Beenden und wenn die Instanz wieder grün ist, sollte unter IoBroker->Objekte alles andere auch stehen.

Fertig.

Option 4.2 Projekt "deye-inverter-mqtt" von Github verwenden. 
Das war am Ende meine finale Lösung, Vorteil hier ich habe es als docker-compose in Portainer und es soll wohl auch Schreiben von Modbus unterstützen.
Und ich mag MQTT mehr Smile br />Nachteil: man sollte sich schon mit docker und der shell ein bisschen auskennen.

Also:
Zuerst einmal schauen, ob es auch läuft. Dazu am besten die Shell verwenden.

SSH shell öffen mit Putty.

# sudo su
# mkdir solardach
# cd solardach
# touch config.env

In der datei config.env den Inhalt von config.env.example reinkopieren und etwas abändern:
Hier meine folgenden Änderungen:

DEYE_LOGGER_IP_ADDRESS=<die IP vom Wechselrichter. Ich habe hier nicht den Namen solardach verwendet.>
DEYE_LOGGER_IP_ADDRESS=<IP vom pi, weil da mein mqtt server via mosquito läuft>
DEYE_LOGGER_SERIAL_NUMBER=<das ist die SN vom Deye-Logger. Findet man entweder in der Deye-App oder auch auf der WLAN Antenne vom Wechselrichter.>
DEYE_METRIC_GROUPS=deye_sg04lp3,deye_sg04lp3_battery

Die anderen Werte habe ich so gelassen.
Eine genaue Beschreibung der Config und ihrer Werte findet ihr den github repo.

dann gehts weiter... docker starten

# docker run --name deye-mqtt --env-file config.env --rm ghcr.io/kbialek/deye-inverter-mqtt

Dieses Kommando startet den Docker-Container und nach einen kurzen Moment sollte in etwa folgender Output kommen:

4-09-10 07:04:11,199 - DeyeInverterState - INFO - Reading completed
2024-09-10 07:05:04,435 - DeyeInverterState - INFO - Reading start
2024-09-10 07:05:04,436 - DeyeInverterState - INFO - Reading registers [metrics group: {'deye_sg04lp3'}, range: 0202-022e]
2024-09-10 07:05:04,608 - DeyeInverterState - INFO - Reading registers [metrics group: {'deye_sg04lp3_battery'}, range: 024a-024f]
2024-09-10 07:05:04,698 - DeyeInverterState - INFO - Reading registers [metrics group: {'deye_sg04lp3'}, range: 0256-027c]
2024-09-10 07:05:05,777 - DeyeInverterState - INFO - Reading registers [metrics group: {'deye_sg04lp3'}, range: 02a0-02a7]

 

dann in Iobroker schauen unter Objekte->mqtt ob da der Eintrag deye auftaucht. Hier sollten nun auch alle Werte auftauchen.

Am Ende habe ich es noch über docker-compose unter portainer gemacht. Find ich persönlich besser.

docker-compose.yml:

services:
deye-mqtt:
image: "ghcr.io/kbialek/deye-inverter-mqtt"
container_name: deye-mqtt
restart: always
hostname: deye-mqtt
env_file:
- config.env

Darauf achten, dass die config.env Datei im selben Verzeichnis wie die docker.yompose.yml liegt.

Dann über portainer neuen Stack erstellen mit der docker-compose.yml und fertig.

Dieses Thema wurde geändert Vor 1 Woche von fredratl
Dieses Thema wurde geändert Vor 5 Tagen 2 mal von fredratl

   
Zitat
Teilen: