NEWS
Projekt: Deye SUN10k mit Modbus an IOB
-
WICHTIGER HINWEIS
Das Installieren solcher elektrischer Einrichtungen muss wegen der Gefährdung von Menschenleben unbedingt von versierten Fachleuten vorgenommen werden! Die Inbetriebnahme dieser Einrichtung ist jedenfalls von einem konzessionierten Elektrounternehmen vorzunehmen.
Seit Ende Feber 2025 habe ich eine erweiterte PV-Anlage mit einem Deye Wechselrichter, mit MeritSun Batterien und insgesamt 10 kWp PV-Modulen. Es dauerte eine gute Woche, bis ich die Werte der Module, des Wechselrichters und der beiden Batterien mit dem ModBus-Konverter „Waveshare RS485 to Eth“ als Datenpunkte in den IoBroker bekam. Zunächst probierte ich den IOB-Adapter "deyeidc" - ohne Erfolg. Dann suchte ich das IOB-Forum und andere Foren nach Hinweisen durch. Da fand ich so manche Lösung, die bei mir nicht funktionierten (die Modbus-Buchse ist bei meinem WR inaktiv).
Dann stellte ich das Thema ins Forum und mit Hilfe einiger tatkräftiger Spezialisten kam ich jetzt nach gefühlten 150 Testvarianten zu einer funktionierenden Lösung, die ich hier als Hilfestellung für ähnliche Projekte darstellen möchte.
Hardware:
• RaspBerry Pi 5 mit 16 GB RAM, Linux Debian an SD-Karte, Daten auf USB-Stick
• Waveshare RS485-TO-ETH
• PV-Module 10 kWp
• Deye Wechselrichter SUN-10K mit separatem Generator-Eingang (Realisierung einer netzgekoppelten Insellösung ohne direkte frequenzmäßige Kopplung)
• MeritSun LiFe Speicher 2 x 10 kWh
• Automatic Transfer Switch 4P 63A , 400V, 50HzSoftware und Adapter:
• MariaDB (MySQL)
• IoBroker v 7.4.10 mit den Adaptern Javascript v8.8.3, Modbus v6.3.2, SQL v3.0.1, Web v6.2.5.Ablauf:
1. Installation der PV-Anlage samt aller Komponenten
Wie bereits erwähnt, handelt es sich um eine netzgekoppelten PV-Insellösung ohne direkte galvanische und frequenzmäßige Kopplung mit dem Stromversorger.
[Edit - gelöscht]
Der Waveshare RS485-TO-ETH wird mittels CAT-7-Kabel an das gesplittete Cat-Kabel zwischen Deye BMS-Buchse und der CAN-Buchse des MeritSun LiFe Speicher angebunden. Bei meinem Deye SUN-10K ist die Modbus-Buchse inaktiv und somit unbrauchbar. Das CAT-7-Kabel verwendet folgende Drähte:
Deye-BMS-Kabel auftrennen und die Drähte 6, 7 und 8 mit einem weiteren CAT-Kabel einseitig ohne Stecker verlöten:
6 = GND weiß/blau
7 = 485A orange
8 = 485B weiß/orangeConverter RS485 to Eth-Pins mit dem weiteren CAT-Kabel verbinden:
GND weiß/blau
485B weiß/orange
485A orangeWichtig ist das Einstellen der Modbus-Adresse am Deye (Menü erweiterte Einstellungen - Modbus SN). Die Adresse 00 soll nicht verwendet werden.
2. Einrichten des RaspBerry Pi 5 samt Software (Hutschienenmodell)
Da gibt es genug Beispiele im Web. Als Datenbank-Freak seit 40 Jahren installierte ich für die Historienbildung die MariaDB (MySQL).
3. Konfigurieren des Waveshare RS485-TO-ETH und Test der Verbindung
Nun wird es interessant. Der Waveshare RS485-TO-ETH wird standardmäßig mit der IP 192.168.1.254 geliefert, die man ans eigene Subnetz anpasst. Die Verwendung einer statischen IP-Adresse und die Verwendung des Ports 502 wird empfohlen. Doku -> RS485-TO-ETH-B-user-manual-en-v1.1.pdf
Die Testtools SSCOM und VirCom_en werden in der Doku beschrieben. Mit der eingestellten IP-Adresse verbindet man sich mit der Konfigurationsseite des RS485-TO-ETH und stellt folgende Parameter ein:Mit dem Tool VirCom_en geht es dann weiter. Wichtig ist hier die Einstellung des Modbus-Gateway Types "Simple Modbus TCP to RTU" im Button "More Advanced Settings". Nach dem Speichern müsste die Link-LED im Waveshare-Adapter blau leuchten.
4. Konfigurieren der Modbus-Instanz im IOB
Das Konfigurieren der Modbus-Instanz im IOB verläuft wie folgt, wobei besonders die Portnummer und die Modbus-Adresse von großer Bedeutung sind.
Das Finden der richtigen Holding-Registernummern ist eine Wissenschaft für sich! Sogar die chinesische Liste von Deye, die im Internet herumgeistert, enthält falsche Nummern. Die von mir verwendeten Holding-Registernummern zum Auslesen der Daten (als TSV-Datei verwendbar ) sind:
_address deviceId name description unit type len factor offset formula role room poll wp cw isScale 3 1 Seriennummer Seriennummer string 5 0 0 state true false false false 102 1 Batteriekapazitaet Batteriekapazitaet kWh int16be 1 0,05 0 level true false false false 108 1 BatterieLadestromMax Maximaler Ladestrom der Batterie A int16be 1 0 0 level true false false false 109 1 BatterieEntladungMax Max A Entladung A int16be 1 0 0 level true false false false 122 1 GEN_Laufzeit Gen-Cool-Time h int16be 1 0 0 level true false false false 500 1 Status Status (Standby, check, norm, altert, fault) string 1 1 0 level true false false false 501 1 Energie pro Tag Power per Day kWh int16be 1 1 0 level true false false false 526 1 Load_Tagesenergie Tagesenergie Load kWh int16be 1 0,01 0 level true false false false 530 1 PV1_Power pro Tag Day_PV-1_Power kWh kWh int16be 1 0,1 0 level true false false false 531 1 PV2_Power pro Tag Day_PV-2_Power kWh kWh int16be 1 0,1 0 level true false false false 541 1 AC_Temperatur AC_Temp °C int16be 1 0,01 0 level true false false false 553 1 Warnhinweis1 Warning message word 1 string 1 1 0 level true false false false 586 1 Batterietemperatur battery temperature °C int16be 1 0,01 10 level true false false false 587 1 Batteriespannung battery voltage V int16be 1 0,01 0 level true false false false 588 1 Batteriekapazitaet SOC battery capacity % int16be 1 1 0 level true false false false 590 1 Batterieausgangsleistung Battery output power W int16be 1 1 0 level true false false false 591 1 Batterieausgangsstrom Battery output current A int16be 1 0,01 0 level true false false false 627 1 WR-Ausgangsspannung L1 Inverter output phase voltage A V int16be 1 0,1 0 level true false false false 628 1 WR-Ausgangsspannung L2 Inverter output phase voltage B V int16be 1 0,1 0 level true false false false 629 1 WR-Ausgangsspannung L3 Inverter output phase voltage C V int16be 1 0,1 0 level true false false false 630 1 WR-Ausgangsstrom L1 Inverter output phase current A A int16be 1 0,01 0 level true false false false 631 1 WR-Ausgangsstrom L2 Inverter output phase current B A int16be 1 0,01 0 level true false false false 632 1 WR-Ausgangsstrom L3 Inverter output phase current C A int16be 1 0,01 0 level true false false false 636 1 WR-Gesamtleistung Inverter output total power W int16be 1 1 0 level true false false false 637 1 WR-Scheinleistung gesamt Inverter output total apparent power W int16be 1 1 0 level true false false false 638 1 WR-Frequenz Inverter frequency Hz int16be 1 0,01 0 level true false false false 667 1 GEN_Gesamtleistung Gesamtleistung des Gen-Ports W int16be 1 1 0 level true false false false 672 1 PV1 Erzeugungsleistung PV1 Erzeugungsleistung W int16be 1 1 0 level true false false false 673 1 PV2 Erzeugungsleistung PV2 Erzeugungsleistung W int16be 1 1 0 level true false false false 676 1 PV1 DC Spannung Dc voltage 1 V int16be 1 0,1 0 level true false false false 677 1 PV1 DC Strom Dc current 1 A int16be 1 0,1 0 level true false false false 678 1 PV2 DC Spannung Dc voltage 2 V int16be 1 0,1 0 level true false false false 679 1 PV2 DC Strom Dc current 2 A int16be 1 0,1 0 level true false false false
5. Verwenden der Datenpunkte in den IOB-Objekten
Nach der erfolgreich gestarteten Modbus-Instanz kann man die Datenpunkte in den IOB-Objekten nutzen.
Sehr empfehlenswert ist jedoch das Definieren individuelle Datenpunkte, die mit den Modbus-Datenpunkten referenziert werden (Aliases).
Das hat unter Anderem den Vorteil, dass im Fall einer Hardwareänderung nur die Referenz im individuellen Datenpunkt geändert werden muss. Sämtliche Abfragen, Dashboards, Statistiken etc. bleiben unverändert.
Nach Belieben kann man Datenpunkte in der Datenbank MySQL aufzeichnen, um diese mit Dashboards etwa in Grafana darzustellen. Ich verwende das IOB-VIS-2, bin aber damit noch beim Einsteigen. Meine noch recht rudimentäre, schnell zusammengezimmerte Handyseite sieht etwa so aus:
Da suche ich noch ein schönes Energieflussdiagramm wie am Deye Wechselrichter.
Resümee:
Nach zahlreichen Versuchen läuft die Modbus-Verbindung recht stabil. Es gibt etwa 200 Deye Register zum Abfragen, die nahezu alle Informationswünsche erfüllen.
Bei Fragen oder Problemen biete ich gern Unterstützung.
Viele Grüße, Fuzzy
-
Habe auch einen Deye Sun, konnte es ebenso mit dem Waveshare RS485 umsetzen.
Probier doch mal den Adapter "energiefluss-erweitert" aus.
-
@reini84
Danke, Reini! Hab ich bereits. Aber ich suche eine Integration im VIS-2, damit ich alles beisammen habe. -
@fuzzy1955 sagte in Projekt: Deye SUN10k mit Modbus an IOB:
@reini84
Danke, Reini! Hab ich bereits. Aber ich suche eine Integration im VIS-2, damit ich alles beisammen habe.ja und?
oder gibt es in vis2 kein iframe widget mehr? -
@homoran sagte in Projekt: Deye SUN10k mit Modbus an IOB:
gibt es in vis2 kein iframe widget mehr?
Wow! Bei dir lerne ich ja was Gscheites
Ich bin doch noch ein ziemlicher Newbie