Selbstbau-PV/Selbstbau-PV-Hoymiles-nulleinspeisung-mit-OpenDTU-und-Shelly3EM

Code-Anpassung für dynamische WR-Leistung bei Verwendung mit Akkuspeicher

Opened this issue · 2 comments

St31l commented

Hallo zusammen,

ich habe für die Nulleinspeisung in Verbindung mit einem Akku nachstehende Anpassung eingebaut.

Durch die Anpassung wird die maximale WR-Leistung abhängig von der Akkuspannung in 3 Bereichen eingestellt um bei
vollem Akku eine hohe WR-Leistung zuzulassen und bei leerem Akku eine tiefenentladung zu vermeiden:

  1. Bereich: Viel Solarleistung bzw. Akku ist quasi voll, die WR Leistung darf sehr hoch sein.
  2. Bereich: Der Akku ist nicht sehr voll, jedoch noch oberhalb der Abschaltspannung (Die max. WR-Leistung wird etwas reduziert)
  3. Bereich: Der Akku hat seine Abschaltspannung erreicht, die max WR-Leistung wird auf den minimal möglichen Leistungswert von 10 W gesetzt, damit der Akku nicht tiefen entladen wird.

Dafür benötigen wir zwei Variablen im Bereich "# Diese Daten müssen angepasst werden" die die beiden Spannungsgrenzen bilden:

voltage_borderhigh = 26 # Spannungsgrenze für Erhöhung der WR-Leistung
voltage_borderlow = 24 # Spannungsgrenze für Setzen der WR-Leistung auf 10 W

ebenfalls benötigen wir eine Auslesung der DC Spannung am Eingang des Wechselrichters:
Im Bereich "# Selektiert spezifische Daten aus der json response":

voltage_dc = int(r['inverters'][0]['DC']['0']['Voltage']['v']) # DC-Spannung am WR Eingang auslesen

Und zuguter letzte die Anpassung der WR-Maximalleistung im Bereich "# Werte setzen"
if reachable:
#Abhängig von Akkuspannung wird die maximale WR-Leistung gesetzt

    if (voltage_dc >= voltage_borderhigh):      #Setze maximale Leistung für Spannung über 26 V
        maximum_wr = 540 
        print('WR-Leistung auf',maximum_wr,'gesetzt, da Akkuspannung:',voltage_dc, 'V', flush=True)
        
    if (voltage_borderlow < voltage_dc < voltage_borderhigh): # Setze maximale Leistung für Spannung von 24-26 V
        maximum_wr = 337
        print('WR-Leistung auf',maximum_wr,'gesetzt, da Akkuspannung:',voltage_dc, 'V', flush=True)
        
    if (voltage_dc < voltage_borderlow):#Setze maximale Leistung für Spannung unter 24 V
        maximum_wr = 10

Ab hier folgt der Code mit "# Setzen Sie den Grenzwert auf den höchsten Wert, wenn er über dem zulässigen Höchstwert liegt."

Die print-Befehle können natürlich noch entfernt werden wenn der Code bei euch läuft
Würde mich über Feedback freuen

Ist spannend, wie schließt du welchen Akku an?