Giter VIP home page Giter VIP logo

gen24_ladesteuerung's Introduction

☀️ GEN24_Ladesteuerung 🔋

(getestet unter Python 3.8 und 3.9)

  • Prognosebasierte Ladesteuerung für Fronius Symo GEN24 Plus um eine Einspeisebegrenzung (bei mir 70%) zu umgehen, und eine Produktion über der AC-Ausgangsleistungsgrenze des WR als DC in die Batterie zu laden.
    Über die Tabelle Ladesteuerung können große, geplante Verbräuche bei der Ladeplanung berücksichtigt werden.
  • Entladesteuerung, um die Entladung der Batterie bei großen Verbräuchen zu steuern.
  • Logging und grafische Darstellung von Produktion und Verbrauch.
  • Akkuschonung: Um eine LFP-Akku zu schonen, wird die Ladeleistung ab 80% auf 0,2C und ab 90% auf 0,1C beschränkt.

Die Ladung des Hausakkus erfolgt prognosebasiert und kann mit der Variablen „BatSparFaktor“ in der „config.ini“ gesteuert werden.
Hier zwei Grafiken um die Auswirkung des „BatSparFaktor“ zu verdeutlichen:
Auswirkung des BatSparFaktor

💾 Installationshinweise: (siehe auch Wikibeitrag)

Voraussetzung ist, dass "Slave als Modbus TCP" am GEN24 aktiv
und auf "int + SF" gestellt ist, sonst passen die Register nicht.

Folgende Installationen sind nötig, damit die Pythonskripte funktionieren
(getestet auf einem Ubuntu/Mint und auf einem Raspberry Pi mit Debian GNU/Linux 11)

sudo apt install python3
sudo apt install python3-pip
sudo pip install pyModbusTCP==v0.1.10   # mit Version 0.2.x nicht lauffähig
sudo pip install pickledb
sudo pip install pytz
sudo pip install xmltodict
sudo pip install NumPy==v1.23.1
sudo pip install requests
sudo pip install ping3

Mit start_PythonScript.sh können Pythonskripte per Cronjobs oder auf der Shell gestartet werden, die Ausgabe erfolgt dann in die Datei "Crontab.log".
Als Erstes muss ein Prognoseskript aufgerufen werden, damit neue Prognosedaten in der Datei weatherData.json vorhanden sind!

Beispiele für Crontabeinträge ("DIR" durch dein Installationverzeichnis ersetzen)
Ausführrechte für das start_PythonScript.sh Skript setzen nicht vergessen (chmod +x start_PythonScript.sh)
SymoGen24Controller2.py durchgehend alle 5 Minuten starten wegen Logging.
(Häufigerer Aufruf nicht sinnvoll, da der Gen24 die Zähler nur alle 5 Minuten aktualisiert!)

1-56/5 * * * * /DIR/start_PythonScript.sh SymoGen24Controller2.py schreiben
33 5,8,10,12,14,19 * * * /DIR/start_PythonScript.sh WeatherDataProvider2.py
8 5,7,9,11,13,15,17 * * * /DIR/start_PythonScript.sh Solarprognose_WeatherData.py
1 6,8,11,13,15 * * * /DIR/start_PythonScript.sh Solcast_WeatherData.py
#Crontab.log jeden Montag abräumen
0 5 * * 1 mv /DIR/Crontab.log /DIR/Crontab.log_weg

🌦️ WeatherDataProvider2.py

holt die Leistungsprognose von forecast.solar und schreibt sie in weatherData.json
Damit die Wetterdaten aktuell bleiben ist es besser sie öfters am Tag abzurufen (bei mir alle 2-3 Std)

🌦️ Solarprognose_WeatherData.py

Kann alternativ zu WeatherDataProvider2.py benutzt werden, ist etwas genauer, es ist aber ein Account erforderlich, hier wird eine genauer Zeitpunkt für die Anforderung vorgegeben.
Holt die Leistungsprognose von solarprognose.de und schreibt sie in weatherData.json. Damit die Wetterdaten aktuell bleiben ist es besser sie öfter abzufragen (bei mir alle 2-3 Std)

🌦️ Solcast_WeatherData.py

Kann auch alternativ zu WeatherDataProvider2.py benutzt werden, es ist ein "Home User" Account auf solcast.com erforderlich.
Holt die Leistungsprognose von toolkit.solcast.com.au und schreibt sie in weatherData.json. Leider kann Solcast_WeatherData.py nur 5x am Tag aufgerufen werden, da pro Lauf zwei Zugriffe erforderlich sind (10 pro Tag).

📈 SymoGen24Controller2.py

berechnet den aktuell besten Ladewert aufgrund der Werte in weatherData.json, den Akkustand und der tatsächlichen Einspeisung bzw Produktion und gibt sie aus. Ist die Einspeisung über der Einspeisebegrenzung bzw. die Produktion über der AC-Kapazität der Wechselrichters, wird dies in der Ladewerteberechnung berücksichtigt.
Mit dem Parameter "schreiben" aufgerufen (start_PythonScript.sh SymoGen24Controller2.py schreiben) schreibt er die Ladewerte auf den Wechselrichter
falls Änderungen außerhalb der gesetzten Grenzen sind.

SymoGen24Connector.py

Wird von SymoGen24Controller2.py aufgerufen und stellt die Verbindung zum Wechselrichter (GEN24 Plus) her.

📊 Logging (optional)

Wenn in der "config.ini" Logging_ein = 1 gesetzt ist, werden die Werte im "Logging_file" im sqlite-Format gespeichert.
Beim Aufruf von SymoGen24Controller2.py schreiben wird die Ladesteuerung und das Logging ausgeführt.
Beim Aufruf von SymoGen24Controller2.py logging wird nur das Logging ausgeführt, es erfolgt keine Ladesteuerung.
Aus der SQLite-Datei werden dann in html/7_tab_Diagram.php Diagramme erzeugt.
Hier z.B. das Liniendiagramm zur Tagesproduktion:
Grafik zur Tagesproduktion oder das Balkendiagramm zum Tagesverbrauch:
Grafik zur Tagesproduktion

html/8_tab_Diagram.php erzeugt ein Diagramm nach Quelle (wo kommt die Energie her) und Ziel (wo geht die Energie hin).
Dadurch soll z.B. ein Laden der Batterie aus dem Netz ersichtlich bzw. gezählt werden.
Grafik zur Tagesproduktion

#####################################################################

Modul zur Reservierung von größeren Mengen PV-Leistung, manuelle Ladesteuerung bzw. Entladesteuerung

(z.B. E-Autos)

Das Modul ist in PHP programmiert und setzt einen entsprechend konfigurierten Webserver (z.B. Apache, ) voraus.
Konfiguration muss eventuell in der "config.php" angepasst werden.

Nur zum testen kann der PHPeigene Webserver benutzt werden. Einfach unter /DIR/html/ folgendes starten:
php -S 0.0.0.0:7777
Und im Browser localhost:7777 aufrufen.

Webserver Apache z.B.:

💾 Installationshinweise: (siehe auch Wikibeitrag)

sudo apt install apache2 php
sudo apt install php-sqlite3

In /etc/apache2/apache2.conf
<Directory /srv/> durch <Directory /DIR/html/> ersetzen!

In /etc/apache2/sites-available/000-default.conf
DocumentRoot /var/www/html durch DocumentRoot /DIR/html/ ersetzen

Apache neu starten
sudo systemctl restart apache2
Reservierung im Browser aufrufen (= IP oder localen Namen des RasberryPi).

ACHTUNG!! /DIR/ und /DIR/html/ muss Schreibrechte für den Webserver Apache haben!!
Vorschlag:
Den Apachewebserver unter demselben USER laufen lassen, unter dem man arbeitet bzw.auch die Crojobs laufen. In der Datei /etc/apache2/envvars die Variablen APACHE_RUN_USER und APACHE_RUN_GROUP anpassen.

Vorhandene Skripts:
1_tab_LadeSteuerung.php ==>> Reservierung von großen PV-Mengen und feste manuelle Ladesteuerung
2_tab_EntladeSteuerung.php ==>> EntladeSteuerung durch Eintrag in Tabelle und feste manuelle Entladesteuerung
3_tab_Hilfe.html ==>> Hile zu Reservierung von großen PV-Mengen
4_tab_config_ini.php ==>> Anzeigen und Editieren der config.ini
5_tab_Crontab_log.php ==>> Anzeigen der Logdatei Crontab.log
6_tab_GEN24.php ==>> lokaler Aufruf des GEN24
7_tab_Diagram.php ==>> Diagramme über Produktion und Verbrauch

Mit der Namenskonvention [1-9]_tab_xxxxxxx.[php|html] können eigene Skripts als "Tab" eingebunden werden.

Batterieladesteuerung ( TAB--> LadeSteuerung )

Tabelle zur Ladesteuerung

Alle eingetragenen Reservierungen werden in die Datei /DIR/Watt_Reservierung.json geschrieben.
In der html/config.php können die Variablen angepasst werden (z.B. $PV_Leistung_KWp) .

Ist das Modul eingeschaltet (in /DIR/config.ini -->> PV_Reservierung_steuern = 1) wird die Reservierung
beim nächsten Aufruf von SymoGen24Controller2.py in der Ladeberechnung berücksichtigt.

Mit einer gewählten Ladestufe (AUS, HALB, VOLL) unter Hausakkuladung wird die entsprechende Batterieladeleistung, beim nächsten Aufruf von SymoGen24Controller2.py auf den Wechselrichter geschrieben.
Die prognosebasierte Ladesteuerung ist dadurch deaktivieren, und kann mit der Option "AUTO" wieder aktiviert werden.

Weitere Erklärungen stehen im Hilfetab 3_tab_Hilfe.html Vorschau hier

BatterieENTladesteuerung ( TAB--> EntladeSteuerung )

Tabelle zur Entladesteuerung

Unter "Feste Entladegrenze " kann die maximale Entladeleistung in den Schritten 0, 20, 40, 60, 80 oder 100 Prozent fest eingestellt werden.

In der Entladetabelle können Leistungen in KW zur Steuerung der Akkuentladung eingetragen werden.

Weitere Erklärungen stehen im Hilfetab 3_tab_Hilfe.html Vorschau hier

=======================================================
Das Programm wurde auf Grundlage von https://github.com/godfuture/SymoGen24Weather erstellt.
Herzlichen Dank an "godfuture"

gen24_ladesteuerung's People

Contributors

wiggal avatar zellneralex avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.