Steuerung für FSP, Infinisolar, MPI, Voltronic Wechselrichter

Hallöchen zusammen

Seit längerem betreibe ich den MPI 5K nun schon als Nulleinspeisung bei mir Zuhause. Funktioniert alles auch so weit ganz gut

Auslesen tu ich ihn über die Solaranzeige mit einem Raspberry, Nulleinspeisung über Modbuskarte und SDM630CT.

Seit Anfang an stört mich, dass ich durch diese Konstellation den Stromzähler nicht Auslesen kann. Ich nutze zwar die S0 Schnittstelle des Eastron, dies funktioniert aber nicht so wie ich das möchte.

Aktuell arbeite ich an folgender Lösung:

Esp8266
ttl to rs232
Ttl to rs485
Spannungsversorgung derzeit noch per USB Netzteil.

Auf dem Esp soll ein Python laufen, welches zum einen die RS232 Schnittstelle vom Wechselrichter ausliest und die per mqtt an meinen iobroker sendet.
Dazu soll über die rs232 Schnittstelle die Ausgangsleistung für die Nulleinspeisung gesetzt werden.

Die Rs485 Anbindung soll auch per mqtt alle Werte des sdm630 zur Verfügung stellen und denn Strombezug an die rs232 Schnittstelle weiterreichen.

Das ganze soll am Ende mal auf eine Platine und quasi die Modbuskarte vom Wechselrichter ersetzen.

Wie weit bin ich aktuell?

-erstes Python Programm ist geschrieben
-esp8266 ist vorhanden
-ttl to rs232 ist bestellt
-ttl to rs485 ist bestellt

Konfiguration soll anfangs ausschließlich per Script sein, künftig aber dann per Weboberfläche, ähnlich die von heishamon (kennt vielleicht der ein oder andere)

Je nachdem wie viel Interesse besteht, werde ich es auch auf GitHub veröffentlichen und fertige Karten anbieten... Davon bin ich aber noch sehr weit entfernt.

Freue mich auf Anregungen, Feedback und eventuell auch unterstützung bei diesem Projekt.

Grüße Benny

Heute kamen die ttl zu rs232/485 Umsetzer für den ESP.

Mittlerweile bin ich von Micropython auf arduino Idee gewechselt, das läuft einfach performanter auf dem kleinen Chip... Python hat sich immer wieder aufgehängt.

Da auf dem Esp auch ein Webserver laufen soll, wo man alle Daten sehen kann, war dieser Schritt nötig.

Hatte das vor Jahren auch mal an meinen zwei Infini 3k+ vor. Habs prinzipiell mit einem PHP Script zusammangebracht, lief eine Weile auch gut damit. Dann bin ich auf zwei 10k umgestiegen.
Da der Nullausgleich sehr zeitkritisch ist, musst du die Regelkommandos mind. im Sekundentakt senden, sonst hast du große Schwankungen. Die Abfragekommandos (z.b. akt. PV Leistung) musst du dazwischen reinschummeln.

Also das Auslesen und Verschicken per MQTT der SDM360 Daten kann Solaranzeige doch schon und das Auslesescript kannst du so oft wie du willst ausführen lassen. Einige Parameter lassen sich damit auch über MQTT anpassen. Reicht dir das nicht?

Das Auslesen ist nicht das Problem. An die Daten kommt man ja dran, vom Wechselrichter und vom sdm

Die Daten müssen dann aber verarbeitet werden und per rs232 an den Wechselrichter gesendet werden damit die Nulleinspeisung funktioniert.

Und das kann Solaranzeige eben nicht :smiling_face:

Ich möchte ne all in one Lösung, und am liebsten direkt im Slot vom Wechselrichter.

Um das ganze im Slot vom WR zu haben, musst du entweder das Programmieren von den Renesas RC8 Microcontrollern erlernen und deinen Code auf eine Modbus Karte flashen (Flashtool habe ich) oder du bastelst dir eine Platine mit z.b. einem ESP32 und einen MAX485, die da genau reinpasst. Pin-Layout (Golden-Fingers) ist bekannt, SW ist dann einfacher zu schnitzen.
Wenn du so ein Projekt vorhast, helfe ich gerne mit. Wäre wohl nicht teuer und universell erweiterbar, ich denke dabei an Ethernet (z.b. mit w5500), CAN (MCP2551) für direkte Anbindung aller möglichen BMS', usw.

1 „Gefällt mir“

Genau so sieht der Plan aus...

Der ESP soll die Kommunikation zwischen Stromzähler und Wechselrichter übernehmen.

Derzeit arbeite ich noch auf dem Bradboard am rs232 Anschluss vom Wechselrichter... Ziel ist es aber mit kicad eine PCB für den Slot zu Entwerfen.

Dann haben wir ja viele Möglichkeiten offen ... Ethernet Anbindung, Anbindung von BMS, und vor allem auch das Auslesen der Werte aus dem Wechselrichter.

Aktuell funktioniert schon die "qpigs" Abfrage, gerade arbeite ich an der Abfrage der Erträge sowie dem erzeugen der Prüfsumme. Dein PHP ist mir dabei eine große Hilfe.

Bei dem Regelkommando für die Nulleinspeisung bin ich gerade noch unsicher ... Ist das das "qmod"???

Die rs485 Anbindung des sdm630 hab ich erst Mal nach hinten geschoben... Da hab ich schon viel versucht, max485, tcpeth,.... Da muss ich nochmal in Ruhe dran. Zur Not bekommt der ESP den Netzbezug erst Mal aus dem iobroker, darin bekomme ich den Zähler abgefragt und könnte die Werte an den ESP weiter schicken. Damit hätte man später auch die Möglichkeit jeden Zähler zu integrieren... Wenn man möchte sogar smart Meter mit optischer Schnittstelle ect

Ich kann dir gerne mal mein Projekt zukommen lassen. Ich programmiere in vscode mit Platformio.

Grüße Benny

Am besten stellst du es auf Github rein. Da kann ich dann meinen Senf dazugeben.

RS485 Modbus Code für sowas sollte eig. x-Mal auf Github zu finden sein.

Die Steuerung der Eispeiseleistung macht man mit den EMINFO Kommandos (siehe Anhang).
Feed-In_control.pdf (4,9 KB)

Danke für die Feed in Control Datei.

Das sollte ja eigentlich vom Befehl her auch zum MPI 5.5k passen oder ? Ich meine dass es ja nur auf der rs232 Schnittstelle 2 verschiedene Protokolle gibt, aber die modbus Karten alle gleich sind?

Ich hab nen Account bei GitHub, hab allerdings noch nie etwas veröffentlicht.

Ich werde die aktuellste Version vom Code hochladen... Aktuell noch ohne modbus Anbindung... Ja da gibt's viele Anleitungen, ich hab auch die richtige Hardware ect alles da... Es hat aber trotzdem nicht funktioniert.
Ich habe allerdings noch einen zweiten sdm630, welcher nicht verbaut ist. Mit dem werde ich eine Kleine Testumgebung Aufbauen... Vielleicht liegt es auch einfach an der Leitungslänge zwischen Wechselrichter und Zähler. Das sind gute 8m, bei 3.3v kommt da wahrscheinlich nicht mehr viel zurück.

Grüße Benny

Aha.. Du hast einen 5.5k. Dann ist das natürlich (deutlich) anders.
Die sprechen ein anderes (RS232) Protokoll und auch die Regelkommandos sind dadurch andere.

Man müsste am ESP32 das dann entsprechend implementieren. Macht Voltronic auch so, damit die Karte in allen ihrere Wechselrichter funktioniert.
Am Anfang wir mit "QPI" das Protokoll (PI16,PI17,PI30,...) abgefragt, danach startet dann auf der Karte das passende Programm.

SDM630 Abfrage, BMS Abfragen (über den CAN), mqtt ist aber bei allen ident.

Für den 10k (PI17) hab ich mal von der KI einen Code hinrozzen lassen, der den SDM630 ausließt, den WR Abfrägt, das BMS via CAN abfrägt und alles an den MQTT sendet (angehängt).
Die BMS Infos vom werden dann dem WR mitgeteilt (damit spring die Anzeige im WR DIsplay auf LI-ION).
ESP32infini.txt (4,3 KB)

Okay, das ist aber ein guter Ansatz, darüber hatte ich mir noch keine Gedanken gemacht

Der 5.5 k läuft ja auf P16, darauf hab ich auch das Programm aufgebaut....

So eine Abfrage könnte man aber implementieren.

Aktuell hab ich eine inverter.cpp die die Befehle ausführt. später könnte man aber den QPI Befehl in die rs232.cpp Packen und dann 3 verschiedene Varianten der inverter.cpp anlegen.

Wenn die auf meinem 5.5k stabil läuft, würde ich das angehen... Das ist ja dann nur noch Kosmetik wenn der Grundcode steht.

Vielleicht schaffe ich heute Abend noch den Upload auf GitHub.

Grüße Benny

es ist so weit!!!

Ich hab dazugelernt und kann den Code jetzt direkt aus Visual-Studio Code uploaden und neue Versionen somit einfach zur Verfügung stellen :slight_smile:

Freue mich auf dein Feedback :slight_smile:

1 „Gefällt mir“