Jump to content

Weitere Wechserichter (Modbus/TCP) supporten: Deye Hybrid-Wechselrichter


till

Recommended Posts

Hallo zusammen,

ich bekomme in Kürze einen Deye Hybrid-Wechselrichter installiert. Der kann Modbus (und mit Adapter auch Modbus TCP) und wäre daher als Datenquelle für den Warp perfekt. Habe gerade gesehen dass am Profil für einen Sungrow gearbeitet wird. Gibt es einen „Prozess“ wie man Support für weitere WR in die Firmware bekommt?

beste Grüße!

Link to comment
Share on other sites

Wir brauchen die Information darüber welche Werte in welchem Modbus-Register zu finden sind. Für Deye konnte ich da auf Anhieb gerade keine Dokumentation finden.

An diesem Thema arbeiten wir gerade aktiv. Da wird sich intern wahrscheinlich noch was an der Struktur ändern. So sieht das aktuelle für einen Solarmax Max.Storage Wechelrichter aus:

https://github.com/Tinkerforge/esp32-firmware/blob/3290eb60f6d56d078d148f07096fa17484654661/software/src/modules/meters_modbus_tcp/prepare.py#L629

Es wir auch in Kürze die Möglichkeit geben, dass du einen benutzerdefinierten Modbus/TCP-Zähler anlegst und dort von Hand angibst in welchen Modbus-Registern welche Werte zu finden sind.

Sprich, wenn du uns Dokumentation bereitstellen kannst und uns am besten noch beim Testen helfen kannst, dann schauen wir uns an, ob wir das einbauen können.

Oder du kannst dir das esp32-firmware git clonen, und den Support selbst einbauen und einen Pull Request auf GitHub machen.

Oder du kannst dir in Kürze einen benutzerdefinierten Zähler einrichten und die Modbus-Register von Hand angeben.

Oder Deye unterstüzt SunSpec und du verwendest unsere vorhandene SunSpec Unterstützung. Leider ist SunSpec nicht bei allen Herstellern gleich gut umgesetzt. Daher haben wir jetzt für Sungrow nicht SunSpec sondern gehen über den Sungrow eigenen Registersatz.

Link to comment
Share on other sites

Klingt alles gut. Dann ist mein Plan:

- ich teste die Register selbst mit ioBroker

- ich baue mir eine Firmware mit unterstützung

- ich mache einen pull request auf

falls ich am Bauen einer Firmware scheitere warte ich auf den generischen Modbus Zähler und wenn alles funktioniert würde ich euch das als „Template“ für Deye schicken.

Link to comment
Share on other sites

On 4/30/2024 at 8:13 PM, till said:

Laut dem Dokument werden die 100er Modelle unterstüzt. Diese beziehen sich auf den Wechselrichter, aber nicht auf den Netzanschluss oder den Speicher.

On 5/1/2024 at 12:32 PM, Jojo said:

ich betreibe ebenfalls einen Deye (SUN-12K-SG04LP3) und lese diesen mit FHEM über Modbus aus. Die Register findet Ihr im angehängten Dokument.

Danke. Welche Register liest du den aus? Für PV Überschlussladen brauchen wir aktuell die Leistung am Netzanschluss und zukünftig werden wir auch noch die Leistung und den SoC des Speichers mit einbeziehen. Anzeigen tun wir auch noch die importierte und exportierte Energie.

Link to comment
Share on other sites

Für die Automation lese ich so ziemlich alles aus. Für Euch wären das dann wahrscheinlich folgende Register:

625: Grid_side_total_power_W
590: Battery_output_power_W
588: Battery_capacity (SOC)
520: Day_gridbuy_power_kWh
521: Day_gridsell_power_kWh

schöne Grüße

Jo

Edited by Jojo
Link to comment
Share on other sites

  • photron changed the title to Weitere Wechserichter (Modbus/TCP) supporten: Deye Hybrid-Wechselrichter

Hier eine erste WARP3 Firmware mit Deye Hybrid-Wechselrichter Support. Absolut ungetestet, nur basierend auf der Dokumentation. Danke Jojo.

@Jojo Wenn du das testen möchtest, dann richte bitte vier Modbus/TCP Zähler auf der Zähler-Unterseite der Wallbox ein. Jeweils einen für jeden der möglichen vier virtuellen Zähler. Du solltest dann dort auch schon Daten sehen, wenn es funktioniert. Ich lese im Moment noch mehr Register aus, als ich in der Meters API abbilden kann. Mir ist nicht ganz klar wie die ganzen Spannungen, Ströme und Leistungen zuzuordnen sind. Daher werden im Ereignislog alle ausgelesenen Werte ausgegeben. Am besten wäre, wenn du die Ereignis-Log Unterseite öffnest, sich die Daten kurz (villeicht 30-40 Sekunden) sammeln lässt und dann das Ereignis-Log speicherst und mir schicken könntest.

warp3_firmware_2_3_0_66351a8e_92bf0d855c4a347_merged.bin

  • Like 1
Link to comment
Share on other sites

Das ging ja schnell :classic_smile:

Ich habe die FW installiert und testweise einen Zähler eingerichtet. Der Netzbezug wird schon mal richtig ausgelesen.

Mittlerweile habe ich auch gelesen, dass ich nur 2 Zähler konfigurieren kann, von denen aber einer ja der interne ist.

Wenn ich Modbus/TCP -> Registertabelle Deye Wechselrichter wähle, kann ich bei "virtueller Zähler" zwar zwischen Wechselrichter, Netzanschluss, Speicher und Last wählen, aber alles außer Netzanschluss führt zu der Meldung "Speichern der Strom­zähler-Ein­stell­ungen fehl­ge­schlagen."

Kleine Korrektur: Wenn ich alles entferne, neu starte und von vorne beginne dann klappt es mit den anderen virtuellen Zählern. Nur nachträgliches Ändern scheint nicht zu klappen.

Bei "Wechselrichter" und "Batterie" stimmen die Temperaturen nicht. Da fehlt glaube ich ein Faktor: (($val-1000)*0.1)

Was noch auffällt: Mein Log wird geflutet mit Meldungen. Beim Versuch, da einen Report zu laden kommt die Meldung "Konnte Debug-Report nicht laden The operation was aborted."

 

schöne Grüße

Jo

1.png

2.png

3.png

4.png

5.png

Edited by Jojo
Link to comment
Share on other sites

Danke für's Testen. Das funktioniert besser als erwartet, dafür das ich das hier nicht getestet habe.

On 5/3/2024 at 10:00 PM, Jojo said:

Wenn ich Modbus/TCP -> Registertabelle Deye Wechselrichter wähle, kann ich bei "virtueller Zähler" zwar zwischen Wechselrichter, Netzanschluss, Speicher und Last wählen, aber alles außer Netzanschluss führt zu der Meldung "Speichern der Strom­zähler-Ein­stell­ungen fehl­ge­schlagen."

Den Bug können wir nachstellen. Wir gehen dem nach.

On 5/3/2024 at 10:00 PM, Jojo said:

Bei "Wechselrichter" und "Batterie" stimmen die Temperaturen nicht. Da fehlt glaube ich ein Faktor: (($val-1000)*0.1)

Stimmt, die -1000 fehlen. Das habe ich verbessert.

On 5/3/2024 at 10:00 PM, Jojo said:

Was noch auffällt: Mein Log wird geflutet mit Meldungen. Beim Versuch, da einen Report zu laden kommt die Meldung "Konnte Debug-Report nicht laden The operation was aborted."

Die große Menge an Meldung kommt daher das ich alles auslese und ausgebe. Das wird in der fertigen Version nicht so sein.

On 5/3/2024 at 10:00 PM, Jojo said:

Mittlerweile habe ich auch gelesen, dass ich nur 2 Zähler konfigurieren kann, von denen aber einer ja der interne ist.

Das werden wir in Zukuft erhöhen.

Link to comment
Share on other sites

Mal ein erstes Feedback von mir.

Ich bekomme eine gute Reihe Fehler, aber das liegt vielleicht an meinem Modbus RTU auf Modus TCP Konverter:

2024-05-11 21:23:20,154 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=622 start_address_offset=0 register_count=1
2024-05-11 21:23:20,165 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Phase A Power [W] (622): TIMEOUT [228]
2024-05-11 21:23:27,154 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=598 start_address_offset=0 register_count=1
2024-05-11 21:23:27,165 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Phase Voltage A [0.1 V] (598): TIMEOUT [228]
2024-05-11 21:23:34,040 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=602 start_address_offset=0 register_count=1
2024-05-11 21:23:34,051 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Line Voltage B-C [0.1 V] (602): TIMEOUT [228]
2024-05-11 21:23:38,167 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=598 start_address_offset=0 register_count=1
2024-05-11 21:23:38,178 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Phase Voltage A [0.1 V] (598): TIMEOUT [228]
2024-05-11 21:23:39,971 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=598 start_address_offset=0 register_count=1
2024-05-11 21:23:39,982 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Phase Voltage A [0.1 V] (598): TIMEOUT [228]
2024-05-11 21:24:41,943 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=522 start_address_offset=0 register_count=2
2024-05-11 21:24:41,957 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Total Grid Buy [0.1 kWh] (522): TIMEOUT [228]
2024-05-11 21:24:47,265 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=603 start_address_offset=0 register_count=1
2024-05-11 21:24:47,275 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Line Voltage C-A [0.1 V] (603): TIMEOUT [228]
2024-05-11 21:24:54,231 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=599 start_address_offset=0 register_count=1
2024-05-11 21:24:54,242 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Phase Voltage B [0.1 V] (599): TIMEOUT [228]
2024-05-11 21:25:44,743 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=524 start_address_offset=0 register_count=2
2024-05-11 21:25:44,754 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Total Grid Sell [0.1 kWh] (524): TIMEOUT [228]
2024-05-11 21:25:57,250 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=602 start_address_offset=0 register_count=1
2024-05-11 21:25:57,260 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Line Voltage B-C [0.1 V] (602): TIMEOUT [228]
2024-05-11 21:26:18,299 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=599 start_address_offset=0 register_count=1
2024-05-11 21:26:18,310 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Phase Voltage B [0.1 V] (599): TIMEOUT [228]
2024-05-11 21:26:46,315 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=598 start_address_offset=0 register_count=1
2024-05-11 21:26:46,325 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Phase Voltage A [0.1 V] (598): TIMEOUT [228]
2024-05-11 21:26:48,119 | gen_mbtcp_client | readHreg failed: TIMEOUT (0xe4) host=10.11.2.205 port=8899 device_address=1 start_address=598 start_address_offset=0 register_count=1
2024-05-11 21:26:48,130 | meters_mbtcp     | Error reading Deye Hybrid Inverter / Grid Side Phase Voltage A [0.1 V] (598): TIMEOUT [228]

Ansonsten stimmt bei mir die skalierung bei der Batterie noch nicht:

Bildschirmfoto2024-05-11um21_29_52.thumb.png.2fe82d2ae3ccfbeb051f987fecc20f14.png

Das mag daran liegen dass das ein Hochvolt Wechselrichter ist.

Bei der Spannung zwischen den Phasen sieht auch noch was aufregend aus...

Bildschirmfoto2024-05-11um21_27_39.thumb.png.4d0940affc972f0cadbf0fb6ff6442c9.png

Link to comment
Share on other sites

@Jojo, welchen Modbus Konverter hast du? Und siehst du auch die Timeouts? Und ist dein Konverter auf dem Modbus oder dem BMS Port? Seit ich den Modus auf 115200Baud gestellt habe sehe ich weniger Fehler, aber weg sind sie nicht. Ich vermute einfach dass die Wallbox schneller abfragt als der Wechselrichter liefern kann.

Edited by till
Link to comment
Share on other sites

Ich nutze einen NB114 (Link), der an den BMS-Port angeschlossen ist (ich teile das Kabel auf für BMS und Modbus-Konverter). Timeouts habe ich keine. Ich lese die Daten auch mit mehreren Instanzen aus (FHEM, EVCC, WARP3), was dieser Konverter unterstützt. Die Warp3 ruft gefühlt im Sekundentakt ab, das mache ich mit FHEM (90 s) und EVCC (30 s) nicht. Trotzdem geht alles fehlerfrei durch.

Link to comment
Share on other sites

Gute Frage. Ich meine 7 und 8, aber das sollte vollkommen identisch sein.

Ich habe übrigens die Modbus ID auf 3 umgestellt. Dürfte aber eigentlich auch keinen Unterschied machen. 

Meine Firmware ist die 1140, vorher war es die 1128. Ich meine mich erinnern zu können dass bei verschiedenen anderen Versionen der "Modebus"-Port vom Deye nicht funktioniert hat.

Link to comment
Share on other sites

Danke für's Testen!

On 5/11/2024 at 9:39 PM, till said:

Ansonsten stimmt bei mir die skalierung bei der Batterie noch nicht:

Die Skaliserung ist nach Registertabelle und scheint bei @Jojo ja auch so zu passen. Ich kann keine andere Dokumention dazu finden. Also folge ich erstmal deiner Vermutung und füge eine zweite Variante des virtuellen Zählers für den Hochspannungs-Speicher hinzu. Ich kann in den Modbus-Registern keins finden, dass mir erlauben würde, automatisch zwischen Niederspannungs- und Hochspannungs-Speicher zu unterscheiden.

On 5/11/2024 at 9:39 PM, till said:

Bei der Spannung zwischen den Phasen sieht auch noch was aufregend aus...

Die Phasenspannungen habe ich erstmal rausgeworfen. Auch hier kann ich aus den Modbus-Registern nicht erkennen, ob das System mit oder ohne Neutralleiter angeschlossen ist und somit die Spannungen zu Neutral oder zwischen den Phasen misst. Ich gehe erstmal davon aus, dass der Neutralleiter angeschlossen ist.

On 5/12/2024 at 7:07 PM, Jojo said:

Etwas ist mir noch aufgefallen: Bei "Gleichstromn (Laden minus Entladen)" und "Leistung (Laden minus Entladen)" passt das Vorzeichen nicht bzw die Bezeichnung ist missverständlich. In diesem Moment wurde der Akku mit 74,49 A geladen. Positiv werden Strom und Leistung beim Entladen des Akkus.

Das betrachten verschiedene Hersteller verscheiden. Wir haben uns darauf festgelegt, dass Export/Einspeisung/Entladen als negativer Wert und Import/Bezug/Laden als positiver Wert dargestellt werden. Ich habe das Vorzeichen für Strom und Leistung des Speichers gedreht. Die Dokumention von Deye schweigt sich darüber leider aus.

Mir ist noch aufgefallen, dass bei euch beiden Spannung * Strom != Leistung ist. Deye liefert mehere Stromwerte und Leistungswerte für den Netzanschluss und aus der Dokumention ist nicht ganz klar was was ist. Ich denke ich hatte da die falschen Werte genommen. Ich nehme dafür jetzt die externen Werte.

Könnt ihr beide bitte mit der angehängten Firmware testen. Dort habe ich jetzt die konfigurierbaren Zähler auf fünf erhöht, damit ihr alles gleichzeitg testen könnt.

Schaut mal bitte, ob am Netzanschluss die Ströme und die Leistung passen. Für unsere Regelung müssen wir wissen wieviel Leitung insgesamt und wie viel Strom pro Phase am Netzanschluss bezogen (positiver Wert) oder eingespeist (negativ) wird.

warp3_firmware_2_3_0_66422b7c_e4d0223eb453a78_merged.bin

  • Thanks 1
Link to comment
Share on other sites

Vielen Dank für das Update. Anbei mal alle konfigurierten Zähler als Screenshot. Die Werte und insbesondere die Wirkleistung am Netzanschluss sehen richtig aus (auch für die einzelnen Phasen). Konnte jetzt keinen Fehler mehr entdecken. Da ich nicht im exakt gleichen Moment die Werte abrufe, sind natürlich kleine Abweichungen zu sehen.

Die "Transformator-Temperatur" ist übrigens konstant 25°C. Scheint im Deye schon so implementiert zu sein und wird nicht aktualisiert.

10.png

11.png

12.png

13.png

14.png

 

15.png

Edited by Jojo
Link to comment
Share on other sites

In der Übersicht der Stromzähler ist mir beim "Deye Wechselrichter" die dritte Spalte ("Energie­ein­speisung") noch aufgefallen. Was sagt dieser Wert aus (bei mir 0,00 kWh)? 

Ist die erste Spalte ("Leistung") quasi der Eigenverbrauch des Wechselrichters? Größenordnungsmäßig dürfte der Wert passen.

16.png

Edited by Jojo
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...