Sign inSign up

stehada/e3dc-control

By stehada

•Updated about 2 years ago

E3DC-Control zur Regelung von E3/DC-Hauskraftwerken im Docker-Container

Image
Internet of things
3

10K+

stehada/e3dc-control repository overview

E3DC-Control zur Steuerung eines E3/DC-Hauskraftwerks

Dieses Docker-Image enthält das von Eberhard Mayer entwickelte Programm E3DC-Control (vielen Dank an den Autor!), welches eine schonende Ladung der Batterie und Umgehung der Abregelung zur Mittagszeit ermöglicht. Das Original als Source-Code samt einer Anleitung lässt sich hier finden: https://github.com/Eba-M/E3DC-Control⁠.
Im Photovoltaikforum gibt es einen langen Thread mit vielen Infos: https://www.photovoltaikforum.com/thread/125497-e3dc-%C3%BCberschusssteuerung-per-rscp-und-raspberry-pi⁠
Der Benutzer ArnoD aus dem Photovoltaikforum hat hier eine besser lesbare Beschreibung der zahlreichen Einstellungsparameter hinterlegt: https://forum.iobroker.net/topic/32976/e3dc-hauskraftwerk-steuern⁠.

Schnellstart-Anleitung für das Docker-Image

Voraussetzung: Am E3/DC-Hauskraftwerk muss RSCP aktiviert und ein RSCP-Passwort (1. Feld) gesetzt sein! Das Gerät muss im Netzwerk erreichbar sein.

  1. Verzeichnis anlegen. Der Dateipfad ist frei wählbar, beispielsweise so:
  • Windows: D:\public\docker-data\e3dc-control
  • Linux: /home/pi/docker-data/e3dc-control
2) Unterverzeichnisse config und logs erstellen.

3) Im Unterverzeichnis config die Konfigurationsdatei e3dc.config.txt anlegen, Vorlage siehe weiter unten (zu ergänzen sind IP des Hauskraftwerks, Zugangsdaten Portal-Benutzer und aes_password). Ohne vorhandene Konfigurationsdatei startet E3DC-Control im Container nicht.

4) Image ziehen und Container starten. Dabei in nachfolgendem Aufruf jeweils die Pfade direkt nach Parameter -v anpassen (Pfad nach dem Doppelpunkt nicht verändern):
  • Windows: docker run -td -v /d/public/docker-data/e3dc-control/config:/srv/git/E3DC-Control/program/config -v /d/public/docker-data/e3dc-control/logs:/srv/git/E3DC-Control/program/logs --restart=always --name e3dc-control stehada/e3dc-control
  • Linux (ohne HDD-Mount): docker run -td -v /home/pi/docker-data/e3dc-control/config:/srv/git/E3DC-Control/program/config -v /home/pi/docker-data/e3dc-control/logs:/srv/git/E3DC-Control/program/logs --restart=always --name e3dc-control stehada/e3dc-control
  • Linux mit HDD-Mount (für Raspberry Pi): docker run -td -v /home/pi/docker-data/e3dc-control/config:/srv/git/E3DC-Control/program/config -v /mnt/hdd01/e3dc-control-logs:/srv/git/E3DC-Control/program/logs --restart=always --name e3dc-control stehada/e3dc-control

Nun sollte der Container laufen und sich das darin befindliche E3DC-Control mit dem Hauskraftwerk verbinden. Am Gerät selbst kann man dies am im Display unten eingeblendeten gelben Hinweisbalken erkennen.

Hinweis: Wenn der Container auf einem Raspberry Pi mit SD-Karte läuft, so sollte das Logging zur Schonung der SD-Karte entweder abgeschaltet sein (debug = false, enthält sowieso nur eher uninteressante Debug-Infos) oder auf eine zuvor gemountete externe Festplatte gemappt werden.

Dazu vor Container-Start Festplatte mounten und Verzeichnis anlegen:
- sudo lsblk -o UUID,NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL,MODEL
- sudo blkid
- sudo mkdir /mnt/hdd01
- sudo mount /dev/sda1 /mnt/hdd01
- mkdir /mnt/hdd01/e3dc-control-logs

Logausgaben von E3DC-Control im Container ansehen

In Container verbinden: docker exec -it e3dc-control bash
In den laufenden Screen für E3DC-Control verbinden: screen -r
Screen wieder verlassen (bei weiterer Ausführung von E3DC-Control): Strg + A, D
Docker-Container verlassen: exit

Beispiel-Konfigurationsdatei e3dc.config.txt
Hinweis: Es ist zu empfehlen die Datei selbst direkt auf dem Raspberry Pi o.ä. unter Linux zu erstellen (z.B. mit nano) und keinesfalls dies hier als konkrete Dateivorlage zu kopieren, denn E3DC-Control ist etwas empfindlich was Dateikodierung und Zeichensätze etc. angeht. Auch Leerzeichen sollten (nur) an den richtigen Stellen stehen. Sonst startet das Programm gerne mal nicht und gibt nur kryptische Hinweise aus.

// Uhrzeiten sind in UTC anzugeben, d.h. im Sommer ist es zur angegebenen Uhrzeit tatsächlich 2 Stunden und im Winter eine Stunde später.
// Dezimalwerte sind mit . als Trennzeichen anzugeben. Uhrzeiten sind dezimal anzugeben (11:30 Uhr wird als 11.5 angegeben).

server_ip =
server_port = 5033
// Zugangsdaten Portal-Benutzer
e3dc_user =
e3dc_password =
// RSCP-Passwort am Gerät gesetzt (1. Feld)
aes_password =

wallbox = false
// Externe 2. PV-Anlage
ext1 = true
ext2 = false
// Leistungsmesser intern
wurzelzaehler = 0
// Netto-Speichergröße (90%)
speichergroesse = 11.7
wrleistung = 12000
// 16,65 * 0,7 = 11,655 - Sicherheit von 155 W
einspeiselimit = 11.5

// Ladekorridor definiert das Zuladen nach Erreichen des Morgensockels bis Wert ladeende
untererLadekorridor = 500
obererLadekorridor = 4500
// Ladeleistung wird innerhalb dieser Werte geregelt falls Abregelung wegen Überschreitung der 70%-Grenze droht.
minimumLadeleistung = 300
maximumLadeleistung = 6000
// Wert ladeschwelle muss immer < unload sein!
// Auf diesen Wert wird der Speicher morgens ab PV-Überschuss mit maximaler Ladeleistung geladen (vorausgesetzt der SoC ist niedriger).
ladeschwelle = 50
// Bei Erreichen der Uhrzeit winterminimum - (sommermaximum - winterminimum) beginnt der Regelzeitraum. Bis dahin wird der Speicher auf den
// Wert unload entladen um Speicherplatz zur Abregelungsverhinderung freizugeben (falls der SoC höher als unload ist).
unload = 50
// Wert ladeende2 sollte gleich oder höher sein als Wert ladeende.
// Der Batteriestand ladeende in Prozent soll zur Uhrzeit sommermaximum erreicht werden.
ladeende = 90
// Der Batteriestand ladeende2 in Prozent soll zur Uhrzeit sommerladeende erreicht werden.
ladeende2 = 95
// Fixe Uhrzeit, zu der in Dahlenburg die Sonne zum 21.12 eines Jahres direkt im Süden steht (11:15 Uhr UTC, 12:15 MEZ)
// Der Wert definiert zusammen mit sommermaximum die sich dynamisch ändernden Uhrzeiten von Ladestart und -ende im Laufe des Jahres. (UTC+1)
winterminimum = 11.25
// Zur Uhrzeit sommermaximum (definiert für 21.06., sonst dynamisch angepasst) soll der Ladestand den Wert ladeende erreicht haben. (UTC+2)
sommermaximum = 15.5
// Zur Uhrzeit sommerladeende soll der Ladestand den Wert ladeende2 erreicht haben. (UTC+2)
sommerladeende = 17

// An Wochenarbeitstagen von Uhrzeit hton bis Uhrzeit htoff gilt der Stromhochtarif, von htoff bis hton der Nachttarif (UTC-Angaben).
// Die Regelung greift erst für Speicher-SoC < htmin --> Sicherstellung, dass der Speicher möglichst im Hochtarif ausspeichert.
htmin = 50
htsockel = 10
hton = 5
htoff = 21
// Tarifsteuerung auch Samstags aktivieren oder nicht.
htsat = true
// Tarifsteuerung auch Sonntags aktivieren oder nicht.
htsun = true

// Logfile anlegen oder nicht. Loginhalt z.B.: U:0.6000 td:0.3500 yd:0.2000 WB0.0000
// Geretteter Überschuss bei angenommener Abregelung: U = 70% hart, td = aktuell 70% weich, yd = gestern 70% weich, WB = durch Wallbox
debug = false
// Dateien mit Namensbeginn log im Unterverzeichnis logs anlegen.
// Dieses Verzeichnis außerhalb des Docker-Containers sollte zur Schonung der SD-Karte auf eine USB-Festplatte des Raspis gemountet werden.
logfile = ./logs/log

Hinweis zur Version 2020.5.16.6: Da ist ein Tippfehler unterlaufen, eigentlich handelt es sich dabei um die E3DC-Control-Version 2020.5.16.0!

Tag summary

Content type

Image

Digest

sha256:870e7488a…

Size

228.2 MB

Last updated

about 2 years ago

docker pull stehada/e3dc-control