Nulleinspeisung DIY...
 
Benachrichtigungen
Alles löschen

[Oben angepinnt] Nulleinspeisung DIY mit Balkonsolar

200 Beiträge
39 Benutzer
24 Likes
40.6 K Ansichten
Sebastian
(@syssi)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 99
 

Es gibt wirklich viele Infos über die Schnittstelle, aber eine Leistungsvorgabe habe ich nicht gefunden 🙁

Ist aber grundsätzlich möglich: http://www.mppsolar.com/manual/PIP-GE/PIP-GE%20manual%20(PF1.0).pdf (nach "maximum charging current" suchen)


   
AntwortZitat
Sebastian
(@syssi)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 99
 

So, habe jetzt mal diesen hier bestellt: https://de.aliexpress.com/item/1005004066049533.html

Der hat sogar schon ein WLAN-Modul, mal sehen wozu das gut ist.

Gute Wahl. Auf das WLAN-Modul solltest du mittelfristig verzichten. Es ist grob gesagt ein ESP, welcher dir einen Display-Ersatz auf eine Webseite malt und freizuegig Messdaten per MQTT in eine schlecht ausgebaute Cloud des Herstellers schaufelt.


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

Guter Hinweis. Vielleicht kann ich es ja umprogrammieren? Steckt das auch in einem seriellen Port oder irgendein Spezial-Port?

Das ESP-Modul funkt jetzt seit 2 Tagen zuverlässig die Werte


   
AntwortZitat
Sebastian
(@syssi)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 99
 

Guter Hinweis. Vielleicht kann ich es ja umprogrammieren? Steckt das auch in einem seriellen Port oder irgendein Spezial-Port?

Ich denke ja. Der Hersteller hat bei deiner Version das Display weg gelassen. Das Display in meinem Inverter setzt sich aus dem Bildschirm und eine Treiberplatine zusammen. Auf der Treiberplatine sitzt ein Mikrocontroller der ueber ein 4 adriges Kabel mit dem STM32-Klon auf dem Mainboard des Inverters verbunden ist. Ich gehe davon aus, dass sich auf dem Kabel Plus, Minus, RX und TX finden laesst. Wenn man sich die Muehe macht zu pruefen, an welchen Beinchen des STMs die Kabel ankommen, laesst sich diese These sicher untermauern, dass es sich um eine serielle Verbindung handelt.

Das es sich bei dem Dongle um einen ESP handelt ist geraten. Ich meine mich aber zu erinnern irgendwo mal ein Foto der Innereien gesehen zu haben. Außerdem vermute ich stark, dass das WLAN-Modul zwar mit einem USB-Stecker daher kommt, du jedoch nicht erwarten solltest, dass hier USB gesprochen wird. Stattdessen werden sich an der USB-Buchse des Inverters wieder Plus, Minus, RX und TX finden lassen. 😉 Ich in auf deinen Bericht gespannt!


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

Die Auflade-Richtung habe ich heute schonmal provisorisch aufgebaut. Ich habe ein Manson Schaltnetzteil mit USB-Schnittstelle, ein paar alte 40Ah LFP Akkus und ein BeagleBone.

Darauf läuft ein simples Python-Skript:

#!/usr/bin/python

import serial, time, requests

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0.2)
lastSolarPower = 0

while True:
try:
ser.flushInput()
ser.write("GETDr")
output = ser.read_until('r')
print (output)
r = requests.get("http://192.168.178.54/cmd?cmd=get%20ptotal")
ptotal = float(r.text)
if len(output) == 10:
voltage = float(output[:4]) / 100
current = float(output[4:-2]) / 100
power = voltage * current
solarpower = power - ptotal
print ("battery power: " + str(power) + "W grid power: " + str(ptotal) + "W solar excess: " + str(solarpower) + "W")
lastSolarPower = (solarpower + lastSolarPower) / 2 #IIR Filter
newcurrent = max(0,lastSolarPower / voltage)
ser.flushInput()
ser.write("CURR%.3dr" % (newcurrent * 10))
print("Setting new current setpoint to " + str(newcurrent))
print (ser.read_until('r'))
except requests.exceptions.ConnectionError:
print ("Connection error, setting current to 0")
ser.write("CURR000r")
continue


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

Auf den Wechselrichter warte ich noch, trotzdem habe ich schonmal ein Video zum aktuellen Stand gemacht.


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

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.


   
AntwortZitat
Sebastian
(@syssi)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 99

   
AntwortZitat
Sebastian
(@syssi)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 99
 

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:


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

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)


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

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)


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

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


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

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.


   
AntwortZitat
(@johuebner)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 60
Themenstarter  

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 :angel:


   
AntwortZitat
Sebastian
(@syssi)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 99
 

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.


   
AntwortZitat
Seite 2 / 14
Nulleinspeisung DIY...
 
Teilen: