RS485 Leistungssteuerung für Soyosource Batteriewechselrichter GTN1000

neue Softwareversion 2.00.00 (05.03.2024)

Mit der neuen Softwareversion 2 meines RS485 Leistungssteuerung eines Soyosource GTN1000 Wechselrichters kann nun direkt ein installierter Shelly 3EM ausgelesen werden. Es werden beim Lesen alle drei Phasen berücksichtigt und der Batteriewechselrichter GTN1000 auf Nullbezug ausgeregelt.
In der älteren Version 1 wurde nur eine Phase berücksichtigt, weil mein Stromzähler nicht saldierend zählte. Mein neuer Holley Stromzähler, den mir mein Netzbetreiber eingebaut hatte zählt saldierend. Ich könnte also über eine Phase 250 Watt im Haus verbrauchen und wenn ich 250 Watt auf einer anderen Phase zurückspeise, erkennt der Zähler nun korrekt 0 Watt. Zudem kann man sich vom Netzbetreiber einen Freischaltcode geben lassen. Diesen gibt man bei mir wahlweise mit der großen Taste ein oder man benutzt eine Taschenlampe. Mit der Taschenlampe ist die Eingabe aber sehr umständlich. Nachdem man den korrekten Code eingegeben hat, werden u.a. auch der momentane Energiebezug auf das Watt genau angezeigt. Für eine Kontrolle, ob die Regelung vom Nullbezug korrekt funktioniert, ist das aber sehr hilfreich. Über die optische Schnittstelle könnte man nahezu alle Stromzählerdaten lesen. Über einen optischen Lesekopf würde man an die Daten das Smart Message Language (SML) Protokoll herankommen. Ich wollte aber nicht erst einen Software Decoder dafür schreiben und nutze lieber meinen schon längst eingebauten Shelly 3EM. Mein Shelly 3EM ist kein PRO Modell an welches man ein Netzwerkkabel anklemmen könnte. Mein Router steht nur 2m vom Schaltschrank entfernt und der per WLAN angebundene Shelly 3EM hat einwandfreien Empfang. Der Schaltschrank ist bei mir komplett aus Blech. Bei meinem Shelly 3EM habe ich einen Benutzernamen und ein Passwort eingegeben. Die korrekte IP Adresse und die Zugangsdaten benötigt natürlich nun auch die Leistungssteuerung um den Shelly auslesen zu können.

Details bei Version 2.00.00

Es wird für diese Version die exakt gleiche Hardware wie bei Version 1 genutzt. Nach dem Start der Software drückt man kurz auf die MODE Taste und danach spannt der ESP8266 ein eigenes WLAN Netz mit der Bezeichnung „WR-Controller“ auf. Das Passwort lautet wieder „12345678“. Nachdem man mit einem Browser (erfolgreich getestet habe ich unter IOS den Safari-Browser und unter Windows 10/11 den EDGE-Browser). Andere Browser können, müssen aber nicht funktionieren. Wenn man dann die Seite http://192.168.4.1 öffnet, erreicht man das bekannte Konfigurationsmenü. Die möglichen Eingaben werde ich hier kurz beschreiben. 

Um nur den Nullbezug zu verwenden, sind Eingaben bei #01, #02, #30, #31, #32, #33 und #40 notwendig. Nach dem „#“ Zeichen und der zweistelligen Funktionsnummer werden alle Eingaben sofort ohne zusätzliche Trennzeichen angefügt und mit „Save and Check“ gespeichert. Bei vielen Funktionen kann man im Anschluss im Textfeld zwischen eckigen Klammern sehen, was eingeben wurde. Wenn nichts zu sehen ist, dann einfach noch mal auf „Save an Check“ ohne irgendwelche Eingaben drücken. Schützenswerte Daten und Passwörter lasse ich nicht anzeigen.    

#01 WLAN SSID eingeben
#02 WLAN Passwort eingeben

#10 MQTT Channel Nummer
#11 MQTT Write Api Key
#12 MQTT Fieldnummer Energie Netz (Grid)
#13 MQTT Fieldnummer Energie Wechselrichter (Inverter)
#14 MQTT Sendeintervall in Sekunden (0=aus; 1-86400)

#20 UDP IP Adresse 1 (verschlüsselte Daten)
#21 UDP IP Adresse 2 (verschlüsselte Daten)
#22 UDP IP Adresse 3 (unverschlüsselte Daten)
#23 UDP IP Adresse 4 (unverschlüsselte Daten)
#24 UDP Sendeintervall in Sekunden (0=aus; 1-86400)

#30 Shelly IP Adresse
#31 Shelly Benutzername
#32 Shelly Passwort
#33 Shelly Typ – noch unbenutzt (1-9)

#40 maximale Leistung in Watt die am GTN1000 benutzt werden soll (0-1000)

#98 Neustart des ESP Controllers

#99 Löschen der WLAN Daten

MQTT – In vielen Anwendung nutze ich eine MQTT Verbindung zum Cloudservice von Thingspeak, um von Überall die aktuellen Energiedaten ablesen zu können. Bei einem kostenfreien Account von Thingspeak sollte man nicht öfters als jede Minute seine Daten senden. Ich selbst verwende ein Intervall von 2 Minuten. Gesendet werden die Energiewerte vom/zum Netz und die des Wechselrichters. In der Zeit des Intervalls wird von den ermittelten Daten der Durchschnitt ermittelt. Wenn also das Intervall auf 10 Minuten steht, werden die durchschnittlichen Energiedaten der letzten 10 Minuten ermittelt.

UDP – Um die Energiedaten im eigenen Netzwerk mit verschiedenen Geräten weiterverwenden zu können, kann die Leistungssteuerung die Energiedaten vom Netz und des Wechselrichters über das UDP Protokoll und Port 40004 an bis zu 4 IP Adressen senden. An die ersten beiden IP Adressen werde verschlüsselte Datenpakete gesendet. Momentan habe ich ein OLED Display auf meinem Schreibtisch, das mir ununterbrochen die Energiedaten anzeigt. Weitere Anwendung sind in Planung. Die beiden IP Adresse mit der unverschlüsselten Datenübertragung können für eigene Erweiterungen verwendet werden. Gesendet wird die Energie vom Netz und des Wechselrichters mit je 16 Bit als int Wert und ein Byte mit der Prüfsumme (einfache Addition der vier ersten Byte Werte). Auch bei UDP kann der Sendeintervall frei eingestellt werden. In den Sendepausen werden wieder die durchschnittlichen Leistungswerte berechnet.

Wird die Taste im Betrieb gedrückt, dann zeigt das Display die IP Adresse einer bestehenden WLAN Verbindung und die Uptime das Moduls an.

Download BIN File als ZIP der Software V2.00 für den WEMOS D1 ESP Controller (319Kb) 

Je nach Verfügbarkeit kann ich Ihren Nachbau mit Leerplatinen oder komplett bestückte Leiterplatten unterstützen. Bitte per Mail anfragen. 

Download Schaltung RS485 Leistungssteuerung als PDF (54Kb)
Download Bestückung der Leiterplatte oben als PDF (17Kb)
Download Bestückung der Leiterplatte unten als PDF (4Kb)

Die beiden Graphen zeigen einen Ausschnitt meiner Energiedaten von 2 Stunden. Auf der linken Seite ist der Bezug von Energie aus dem Netz zu sehen. Es gibt nur eine Spitze an der ich kurzzeitig meinen Wasserkocher in Betrieb hatte um mir einen Tee zu bereiten. Wenn der Balken nach unten gehen würde, wäre Energie ins Netz gespeist worden.

Im rechten Graph wird die Leistung des Wechselrichters dargestellt. Ich habe den Wechselrichter momentan auf maximal 700 Watt gedrosselt. Schlagartig hatte der Wechselrichter seine vorgegebene maximale Leistung erreicht, als der Wasserkocher in Betrieb war. Danach ging auch kein Watt zu viel ins Netz. Meine momentane Grundlast liegt bei etwa 250 Wh und wird nachts aus den LiFePo4 gespeist.

Fazit – Die Reglung mit Shelly 3EM, der RS485 Leistungssteuerung für den Soyosource GTN1000 funktioniert auch mit der Software V2.00.00 mehr als zufriedenstellend.   

Beschreibung Version 1.00.00 (24.09.2023)

Die Regelung auf Nullbezug ist  mit dem Grid Tied Inverter SoyoSource GTN1000 (Wechselrichter / Batteriewechselrichter) über die vorhandene RS485 Datenschnittstelle sehr leicht möglich. Der oft mitgelieferte Limiter Sensor muss aber dazu aber mit einem Datenkabel zum Inverter verkabelt verbunden werden. Bei mir ist aber keine Verbindung zwischen Hausverteilung und dem Wechselrichter (mit großem LiFePo4 Akku) möglich. Die Verbindung von meinem Leistungsmesser / -regler zum SoyoSource Batteriewechselrichter erfolgt über das WLAN mit gesicherten UDP Datenpaketen. Dabei können die minimalen und maximalen Leistungsdaten im Leistungsmesser konfiguriert werden. Kommen keine UDP Datenpaket mehr an, wird nach wenigen Sekunden die Leistung des Wechselrichters auf Null heruntergefahren.

Die RS485 Leistungssteuerung wird mit einem zweiadrigen Kabel zum SoyoSource Wechselrichter verkabelt. Die Modulbaugruppe kann wahlweise aus einer von drei verschiedenen Spannungsversorgungen betrieben werden.

a) Betrieb über 230 Volt Netzspannung – es wird ein einfaches Schaltnetzteil 5 Volt (AZ-Delivery AC-05-3) aufgelötet
b) Betrieb direkt über den Solarakku. Die maximale Spannung des Akkus darf aber nicht mehr als 40 Volt betragen
c) Betrieb über die USB Buchse des WEMOS ESP D1 aus einer beliebigen USB Spannungsversorgung

Auf der Leiterplattenunterseite findet man den stromsparenden 5 Volt Spannungsregler der nur bestückt werden muss, wenn die Spannungsversorgung, wie bei mir, direkt aus dem 8-zelligen LiFePo4 Solarakku erfolgt. Der RS485 IC ist in jedem Fall erforderlich, er wandelt die seriellen Steuersignale das WEMOS D1 und ein normiertes RS485 Signal um.
Im Layout habe ich auch noch ein bistabiles Relais samt Steuerung untergebracht. Im Moment habe ich noch keine Idee, was ich wie damit schalten möchte.
Das OLED Display direkt auf dem D1 muss nicht zwingend bestückt werden. Es zeigt mir aber auch aus größerer Entfernung die Leitung an, mit der der Wechselrichter gerade arbeitet. Damit die Pixel nicht im OLED einbrennen, wandert die Anzeige zyklisch langsam über die komplette Displayoberfläche. Diese Pixelverschiebung hat sich schon seit Jahren an meinem Leistungsmesser bewährt und verändert (beschädigt) die Leuchtkraft des OLED kaum. Zwar kann man auch die LCD Anzeige des SoyoSource verwenden und Leistung- und Spannungsdaten ablesen, doch schaltet diese sich immer wieder nach einer gewissen Zeit ab.

Im folgenden Abschnitt zeige ich einen kurzen Ausschnitt aus der mit C++ geschriebenen Software, wie man eine Leistungsanforderung an den SoyoSource Wechselrichter per RS485 sendet. Es sind nur 7 Datenbyte bei 4800 Baud notwendig. Auch die Berechnung der Prüfsumme ist sehr simpel.

Das verwendet Gehäuse ist ein Gehäuse von BOX4U bezogen über www.reichelt.de mit der Bezeichnung 4U63120806437 und kostet nur 4,55 Euro. Es passt perfekt und als Schrauben können einfache M3 Schrauben verwendet werden.

Download Schaltung RS485 Leistungssteuerung als PDF (54Kb)
Download Bestückung der Leiterplatte oben als PDF (17Kb)
Download Bestückung der Leiterplatte unten als PDF (4Kb)

Download BIN File als ZIP der Software V1.00 für den WEMOS D1 ESP Controller (229Kb)

Wird der kleine Taster (Bezeichnung MODE) innerhalb von 5 Sekunden nach dem Anlegen der Spannung (Start) kurz gedrückt, kann man sich mit dem Weboberfläche der Leistungssteuerung verbinden und hier die WLAN Zugangsdaten eintragen. Wird die Taste im Betrieb gedrückt, dann zeigt das Display die IP Adresse einer bestehenden WLAN Verbindung und die Uptime das Moduls an.