Auf den Wechselrichter warte ich noch, trotzdem habe ich schonmal ein Video zum aktuellen Stand gemacht.
https://youtu.be/CiuBiqD8IjA
Der Wechselrichter ist da.
Leider habe ich mit dem Spannungsbereich etwas daneben gegriffen, die geringste DC Spannung ist 44V. Da wirds mit meinem 12S nix so richtiges werden. Egal, habe ja noch viele LFP Zellen.
Die "USB" Schnittstelle ist wie erwartet v.l.n.r 5V, TX, RX, GND. Es kommt nur ein Rechteck raus. Ich könnte jetzt noch sniffen, was das ESP Modul (tatsächlich ESP8266) so kommuniziert, aber dann muss ich ja deren komische App installieren. Naja, immerhin 5V habe ich so. Den Rest mache ich dann über die RS485 Schnittstelle. Bin gerade in der esphome SW am suchen, mit welcher Baudrate die läuft.
Der Soyosource macht 4800 Baud: https://github.com/syssi/esphome-soyosource-gtn-virtual-meter/blob/main/esp32-example.yaml#L30-L33
Du wirst (weil du kein Display hast) nicht um die Installation der App drum herum kommen. Du wirst den Betriebsmodus von PV-Betrieb auf BAT-Betrieb umstellen und den Limiter-Modus aktivieren müssen:
https://github.com/syssi/esphome-soyosource-gtn-virtual-meter/blob/main/docs/soyosource-settings.jpg
Ok, danke. Dann war das doch keine so gute Idee mit dem Wifi-Modul. Bei der App fehlen Bedienelemente und sie ist komplett chinesisch. Auf dem Beipackzettel sind aber englische Screenshots.
Jedenfalls erklärt das, warum die RS485-Schnittstelle nichts ausgibt (nach Request 0x24 und 7 0x0en)
Ok, ich glaube die config wäre geschafft. In der App mein WLAN eingetragen und dann gehts mit dem web Frontend weiter. Konstante Leistung hat schonmal funktioniert. Nur kommt immer noch nichts aus dem RS485 raus. Weiter gehts...
Mein Test-Code sieht so aus#!/usr/bin/python
import serial, time
ser = serial.Serial('/dev/ttyUSB1', 4800, timeout=0.2)
while True:
#bytes = [ 24, 56, 00, 21, 00, 00, 80, 8 ]
bytes = [ 0x24, 0, 0, 0, 0, 0, 0, 0 ]
ser.write(bytes)
print (ser.read(8))
time.sleep(1)
Habe das mit dem Request jetzt mal gelassen und gleich die Leistungsvorgabe geschickt. Das klappt so mäßig, mehr als 1,6A nimmt er sich nicht bei 50V
EDIT: Eigendoof, hatte in der Config noch 50W stehen als Setpoint, das ist dann scheinbar auch das Maximum vom Limiter
EDIT2: jetzt muss ich nur noch die Statusdaten empfangen um die richtige Leistungsvorgabe einstellen zu können
So, jetzt habe ich alles am Laufen. Habe letzten Endes einen PI-Regler gebaut, der mir den Leistungs-Sollwert für den Inverter ausrechnet, indem er die Bezugsleistung versucht auf 0 zu regeln. Dann brauche ich keine Rückmeldung vom Inverter. wäre zwar ganz interessant, aber naja.
Ansonsten habe ich festgestellt, dass der Inverter nur 900W kann statt der angegebenen 1200W auf dem Typenschild.
Der Quellcode kann noch um einiges verschönert werden, ich hänge ihn trotzdem mal an.
Manchmal gibt es noch Geschwinge, wo Ladegerät und Inverter gleichzeitig laufen.
22623=4370-ebz.py_.zip|attachment (1005 Bytes)
Und noch ein Screenshot vom Inverter in Aktion. Die Spülmaschine läuft gerade und hat wohl Wasser warm gemacht. Zwischendurch ist das Skript abgestürzt, dann schaltet der Inverter ab.
Am Ende des Heizens gibts einen Unterschwinger, dann einen kleinen Überschwinger und dann bleibt die Netzleistung bei 0
Gute Arbeit! KlausLi sind auch schon Inverter untergekommen die "stumm" (aber nicht gehörlos!) sind und nicht auf die Status-Abfragen antworten. Ich habe den Verdacht, dass der RS485-Converter im Inverter dafür verantwortlich ist. Wer mutig ist, könnte ihn mal abstecken und direkt den UART des STM32 ansprechen um die These zu belegen. Ich war nicht mutig, da mein Inverter antwortet. Obwohl ich eine Antwort vom Inverter bekomme nutze ich den Wert der Leistungsaufnahme nicht, welcher vermutlich auf der DC-Seite gemessen wird. Stattdessen merke ich mir die letzte Leistungsanforderung und rechne sie gegen den aktuellen Stromverbrauch. Damit es nicht schwingt aktualisiere ich den Wert zur Leistungsanforderung nur alle 15 Sekunden. Die Nachricht an den Inverter (mit der Leistungsanforderung) sende ich alle 3 Sekunden. Ich meine mich zu erinnern, dass der Inverter meinen Wunsch ignoriert, wenn ich die Nachricht alle 2 Sekunden oder öfter sende. Das Limit in die andere Richtung habe ich noch nicht ausprobiert.
Zu den Specs des Gerätes: 1200W macht das Gerät im PV-Betrieb. 900W im Batterie-Betrieb. Wer versehentlich in der Konfiguration bei "Power Limit" zB. 600W einstellt der bekommt im Limiter-Modus dann auch nur 600W raus, auch wenn man mehr anfordert.
Hallo allerseits.
Mein soyo 1200 / 48 ist leider auch stumm, aber nicht taub,
Der Sache bin ich nicht weiter nachgegangen, weil ich bereits auf den 2. warte.
Allerdings hört er auf einzuspeisen, wenn ich ihm nicht ca. alle 2 s meine Wünsche schicke.
Momentan arbeitet die Steuerung mit 1,5 s Sendepausen, damit es nicht schwingt.
Implementiert ist es per Lesekopf am Stromzähler, vzlogger und einem extra mppt Regler und kleinem (1.3kwh, 16s 25Ah) Akku.
Wenn der Code mal stabil ist, packe ich ihn auf github.
Gibt der soyo die Gerätetemperatur auf dem 485 aus?
Ja, gibt er. Hier der gesamte Inhalt des Frames: https://github.com/syssi/esphome-soyosource-gtn-virtual-meter/blob/main/components/soyosource_inverter/soyosource_inverter.cpp#L62-L86
Gute Arbeit! KlausLi sind auch schon Inverter untergekommen die "stumm" (aber nicht gehörlos!) sind und nicht auf die Status-Abfragen antworten. Ich habe den Verdacht, dass der RS485-Converter im Inverter dafür verantwortlich ist. Wer mutig ist, könnte ihn mal abstecken und direkt den UART des STM32 ansprechen um die These zu belegen.Danke :)
Dann habe ich wohl einen Stummen... läuft auf dem UART wo das WLAN-Modul dransteckt das gleiche Protokoll? Dann könnte ich mich auch daran hängen. Wenn ich mal Lust habe, kann ich auf dem UART ohnehin mal mit 2 USB-Adaptern mitlauschen, also einen für TX, einen für RX. Dann würde ich sehen, wie man das Gerät auch ohne das App-Gedöhns auf Batteriebetrieb umstellt.
Ich habe jetzt eine Durchlaufzeit von rund 2s.
Ich habe den Verkehr zwischen STM23 und Display/WLAN-Dongle noch nie gesehen. Ich befuerchte, dass hier was anderes gesprochen wird. Der STM32 hat zwei UARTs. An einem haengt das Display/WLAN-Dongle und am anderen der RS485-Wandler. An einem Mitschnitt waere ich interessiert. Das einfachste wird sein, wenn du deinen Logikanalyzer an RX & TX haengst und an ein paar Einstellungen des Inverters wackelst.
Vielleicht schaue ich mir heute mal die Kommunikation mit dem WLAN Modul an. Eines habe ich noch gar nicht erwähnt: die 5V der "USB" Buchse reichen nicht aus um ein BeagleBone zu betreiben.
Habe gerade festgestellt, dass das Ceran-Kochfeld eine ziemliche Herausforderung ist mit seinem ständigen Ein- uns Ausschalten
Da wünscht man sich doch die alte Kochplatte zurück . Immer dieses blöde Takten ...
Waschmaschine und Microwelle (auf kleinen Stufen) sind ähnlich, auch Induktionskochplatten sehen so aus.
Hier ist eine Messung zur Trägheit vom soyo beim Lastwechsel gepostet:
https://www.photovoltaikforum.com/thread/148552-g%C3%BCnstiger-1200w-grid-tie-inverter-mit-limiter-sensor-von-soyo-source-%C3%A4hnlich-gti/?postID=2551586#post2551586
Ich vermisse ein kleines Detail im verlinkten Beitrag/Test: Es gibt die These, dass der Wechselrichter schneller nachregelt, wenn man einen Wunsch häufiger wiederholt.
Ich habe heute mal alles auf MQTT umgestellt, da ich nun doch einfach den BeagleBone behalte zur Steuerung von WR und Ladegerät.
Nun habe ich mich mal an die Wifi-Schnittstelle gemacht. Netterweise kann man Pinheader einlöten.
Baudrate ist 9600 8N1. Es werden Binärdaten versendet. Man glaubt es kaum: 15 Bytes
A6 03 84 91 - 40 01 C5 00 DB 00 F7 63 02 BC FE
Also fangen wir hinten an gemäß https://github.com/syssi/esphome-soyosource-gtn-virtual-meter/blob/main/components/soyosource_inverter/soyosource_inverter.cpp#L62
0x02BC = 700 = 50°C (/10-20)
0x63 = 98 = 49.5 Hz (Auflösung grob, schwankt zwischen 0x63 und 0x64)
0x00F7 = 247V (AC Spannung, naaja)
0x00db = 21,9A
0x01C5 = 45,3V
0x40 = Opmode? Also unteres Nibble 0 wie erwartet.
Der Wechselrichter läuft gerade auf Vollast, ca 46V, 17A und der Lüfter läuft hin und wieder, also vermutlich um die 45°C. Also passt.
Die Ausdünstungen von dem Teil sind echt gruselig, werde ich ganz dizzy von :shock:
Nun bin ich auf das Web-Frontend gegangen und habe auf "Read Settings" geklickt, dann kommt einmal eine andere Nachricht:
A6 01 72 93 - 40 D4 30 2C 2B 00 FA 64 5A 03 A3
Meine Einstellungen sind
- Battery Limit mode
- Delay start time: 3s
- Battery output power: 900W
- Battery starting voltage: 44V
- Battery shutdown voltage: 43V
Fangen wir wieder hinten an:
03 - Delay time (habe mal auf 4 geändert, springt dann auf 4)
5A - 90 - Battery output power (kann nur in 10er Schritten geändert werden)
64 - Immer noch Netzfrequenz
00FA - Immer noch AC Spannung
2B - 43, also wohl Shutdown voltage
2C - 44, also wohl Starting voltage
30?
D4?
40 - ändert sich nach umstellen auf PV Limit auf 42 (Standby), also vermutlich das selbe Statusflag wie bei der Datennachricht
93 - (Oberes Nibble gibt immer den Betriebsmodus an: 1=BattConst, 6=PVMode, 9=BattLimit, E=PVLimit). Unteres Nibble=1 bei normalen Nachrichten und 3 bei Config-Nachrichten
Ich habe jetzt noch keine Daten vom Wifi-Modul zum WR gesehen, darum kümmere ich mich jetzt