SDM630 Emulator für Deye SUN-xxK-SG04 (MQTT <-> Deye Gateway)

Hi,

da ich ein Shelly 3EM Pro im Zählerschrank habe und mein Wechselrichter ungünstig weit weg in der Garage hängt, habe ich mit ESPhome eine Config gebastelt um die notwendigen Register des SDM630 zu emulieren und die vom Shelly über MQTT empfangenen Werte dem Wechselrichter zur Verfügung zu stellen. Die Regelung ist natürlich nicht punktgenau da der Shelly erst nach einer prozentualen Änderung einen neuen Wert per MQTT schickt, aber ich bin mit der erreichten "Nulleinspeisung" recht zufrieden. Für die Leute welche mit den 20W Zwangsbezug unzufrieden sind, habe ich noch einen Schieberegler für ein Leistungsoffset implementiert um dem Deye andere Werte vorgaukeln zu können.

Falls also jemand Interesse daran hat:

Gruß,
Heiko.

Hallo, vielen Dank für das Projekt.
Ich wollte es nachbauen, da mein Zählerschrank auch sehr weit weg ist, schon ein Shelly hab und denn Deye 12kw sg04. Über web Interface funktioniert es auch. Aber Deye nimmt es nicht an bzw. ich soll die Verbindung checken. Hab Programmiererfahrung, aber nicht mit esp.
Hab ein esp32 wrover dev board benutzt (Power kommt vom usb anstatt pin 7&8) und nutze die modbus_master mit pin 1 und 3. Homeassistant ist auf ein Synology Nas. Bei RJ45 zum Deye sind Pin1: A, Pin2:B, Pin3: GND. (hab auch B/A/GND probiert)


Meine Frage ist, sollten die tx und rx led bei ttl oder esp blinken wenn es funktioniert? Meiner tut es nicht. Woran könnte es liegen? Danke im voraus.

Gruß
Matthias

Hi,

Pin 1/3 ist HW Uart 0. Dort liegt normalerweise auch das Console-Log. Ich hatte auch schon versucht HW0 und HW2 parallel zu nutzen um noch die Modbus-Daten des Deye abzufragen aber das lief auf Dauer nie stabil -> Nutze nur noch HW2 UART. Ansonsten sollte TX/RX beim Wandler wild blinken da alle 125ms eine Anfrage vom Deye reinkommt. Vom Kabel her ist der RJ45 am Deye B/A was Pin1/2 angeht. Wenn nix blinkt passt was mit der Verkabelung nicht würde ich tippen. Sobald vom RS485 was auf den Serial-Wandler kommt, sieht man das definitiv weil das Geflacker startet.

Gruß,
Heiko.

Super, Dankeschön. Hab die Verkabelung neu gemacht. jetzt funktioniert es einwandfrei.

Gruß
Matthias

Hi,

freut mich. Kleine Anmerkung noch: Falls du den ESP neu startest, sind die Energiewerte auf 0. Der Deye zeigt dir danach zu viel Import/Export für den Tag an. Wollte die Werte aber nicht ständig speichern um das Flash nicht zu ruinieren.

Gruß,
Heiko.

Benötigt der Deye wirklich die Adressen:
- address: 72
value_type: FP32
read_lambda: |-
return id(energy_import).state;
- address: 74
value_type: FP32
read_lambda: |-
return id(energy_export).state;

Wenn ja wofür?

Hi,

der führt ne Verbrauchsstatistik. Im Solarman sieh man den Export/Import. Du kannst das auch auf 0 setzen im ESPhome, dann zeigt Solarman halt null an.

Gruß,

    Heiko.
1 „Gefällt mir“

Hallo Heiko,
ich würde dein Projekt gerne nachbauen.
Welchen Typ RS485 Wandler hast du verbaut?
LG
Alex

Hi,

ich habe den hier: RS485 to TTL Module UART to RS485 Converter Module GE | eBay verwendet.

Gruß,
Heiko.

Super, das mit der Beschaffung von dem RS485 Adapter hat geklappt.
ESPHome rennt auch und ist per WLAN erreichbar. Allerdings hat der ESP32-3C noch die Standardconfig von ESPhome.
Demnach erhalte ich eine ESP Website wenn ich per HTTP auf das Device gehe.
Die abgebildete Website erscheint nicht.
Welche Datei aus dem GitHub Projekt muss ich jetzt in Homeassistant und welche auf den ESP32 laden?
Vielleicht gibt es ja eine Art Kochrezept für Dummies wie mich?

Hier der Screenshot von dem ESP32.

Nachtrag #1
Hi,
wir haben jetzt nochmal das Thema analysiert.
Es ist uns gelungen die sdemu630.yaml in ESPhome zu laden.
Der direkte Download aus dem ESPHome hat dann leider nicht funktioniert.
Wir haben dann ein OTA File generiert und lokal über das Webinterface geladen.
Nach dem Reboot war die im Forum abgebildete Website kurz erreichbar.
Allerdings nur per Edge auf Android Smartphone. Per Notebook unter Windows ist die Statusseite nicht erschienen, sondern nur ein Debug View.
Ist hier eine spezielle Browser Einstellung oder Java erforderlich?

Kurz danach wurde eine Debug Meldung "No client connected. Reboot" angezeigt.
Im Anschluß war wieder nur noch die initiale Config auf dem ESP32 installiert?
Wird das OTA nicht automatisch persistent gespeichert?

Echt mystisch.
Falls jemand eine Idee hat, sind wir echt offen.
Merci
Alex

Hallo altelch , super Sache mit dem Regelschieber.. Perfekt!!

Halllo EnergizeYourself
Mein Kochrezept war..
mqtt-Explorer in HA einbinden und mit Shelly pro 3em verbinden,
ESPHome Builder in HA einbinden,
ESP32 über usb Kabel an HA Rechner verbinden.
Dann auf + NEW DEVICE(unten rechts) drücken und nach der Standard installation die SMD630emu.yaml bei Edit rein kopieren und bei Secrets (oben rechts) deine Secrets Datei(Passwörter).


Nach Neustart sollte alles laufen, es sei denn die *.yaml hat am Anfang falsches board eingetragen und die Pin belegung zum senden der Werte an das TLL Modul sind falsch.

Ich musste meine *.yaml leicht anpassen da Shelly pro 3em und

Home Assistant Core Installierte Version 2025.3.4.

yaml für Shelly em3 pro.txt (4,2 KB)

secrets.txt (242 Bytes)

Hallo Zusammen,

ich möchte mal anmerken dass ich mit dem Projekt kein Geld verdiene und da meine knappe Freizeit reinstecken muss. Ich gebe zu dass es bei der Doku mau aussieht, mein Ansatz war einfach die offizielle ESPhome Doku zu lesen und dann halt mein YAML reinzuwerfen. Ich werde versuchen die Doku zu verbessern sobald ich mal dazu komme. Bis dahin ist leider etwas mehr Eigeninitiative angesagt :wink:

Gruß,
Altelch.

Hallo zusammen! ich bin bei der Recherche nach meinem Vorhaben auf diese Seite gestoßen, das ist genau das was ich suche.
Aber anstelle eines Shellys habe ich einen elgris den ich auch behalten möchte. Kann mir jemand helfen und sagen wie ich das Mqtt Topic "power_a" usw. sie Bild in diese yaml bekomme.
Vielen Dank schon mal.
Gruß
Wolfgang

Hi,

im Prinzip kannst du das anpassen. In der secrets.yaml steht aktuell der Präfix für den Shelly, das wäre halt an dein Setting anzupassen und in der sdemu630.yaml im Block on_json_message: wäre a_act_power gegen power_a usw. zu ersetzten. Die Energiewerte sind für die Funktion nicht relevant, kannst du also ignorieren oder anpassen falls dein Meter die auch rauswirft.

Gruß,
Heiko.

Super, vielen Dank.
An dem Präfix für den elgris scheiter ich noch. Ich nehme an das ist der Pfad im MQTT. Einen Pfad für den elgris gibt es im iobroker nicht, da der elgris direkt Modbus Werte ausspuckt. diese habe ich mit einem Note in Mqtt umgewandelt. Was soll ich da als Präfix nehmen?
Danke
Wolfgang

Hi,

besorg dir einen simplen mqtt Client wie Mosquitto, verbinde edeinen mqtt Server und lass dir alle Topics anzeigen. Denke dann wirst du den Pfad/Präfix finden.

Gruß,

 Heiko.