NEWS
E3DC Hauskraftwerk steuern
-
Hallo TbsJah,
sorry das ich erst jetzt antworte, aber ich war noch im Urlaub.Gibt es eine Unterscheidung bei dem Laden von Winter unter Sommerzeit?
Ich meine kann im Sommer nur auf 93% und im Winter auf 100% (sofern überhaupt erreichbar)Es gibt bei E3DC-Control keinen eigenen Parameter für so eine Einstellung ist aber auch nicht erforderlich.
E3DC-Control berechnet den Regelzeitraum für Sommer und Winter automatisch und passt diesen an.
Du hast nur die Möglichkeit, ladeende2 = 100 einzustellen und den Regelzeitraum so zu wählen, das die 100% im Sommer nicht erreicht werden. Der Regelzeitraum wird vom Parameter "winterminimum" und „sommermaximum“ bestimmt.
Das nicht bis 100% geladen wird oder bis 0 entladen wird, hat meiner Meinung nach keinen Vorteil, was die Lebensdauer der Batterie angeht, da E3DC das bereits in seiner Steuerung berücksichtigt.Für was steht dieser Wert? "EigenverbrauchTag"
Um im Script berechnen zu können, ob die prognostizierte Leistung der Wetterprognose ausreicht, die Batterie auf 100% zu laden, muss man natürlich den durchschnittlichen Tagesverbrauch berücksichtigen. Da sich dieser ändern kann, habe ich einen eigene State angelegt, so das man das per Script automatisch oder über Vis manuell anpassen kann.
Ich ändere z.B diesen Wert automatisch, wenn bei mir die LW-Pumpe und Poolpumpe eingeschaltet ist.
Man kann aber hier auch einen festen Wert eintragen, der dem Tagesdurchschnitt entspricht.Tatsächlich verstehe ich leider auch nicht die 5 Einstellungen in dem Scipt. Mir erschließt es sich leider nicht wann was ist.
Ob mann wirklich die 5 Einstellungen benötigt muss jeder für sich entscheiden.
Hier kurz erklärt wie ich die Einstellungen verwende:Einstellung 1 wird verwendet, wenn die Prognose abzüglich Eigenverbrauch (EigenverbrauchTag) geringer ist als die benötigte Leistung, um die Batterie auf 100% zu laden.
Bedeutet also das alles in die Batterie und nichts ins Netz eingespeist werden soll, das erreiche ich durch den Parameter sLadeschwelle. Dabei aber darauf achten das sLadeende nicht kleiner sLadeschwelle sein darf.
sLadeschwelle = 95
sLadeende = 95
sLadeende2 = 100Einstellung 2 wird verwendet, wenn die Prognose abzüglich Eigenverbrauch (EigenverbrauchTag) höher ist als die benötigte Leistung, um die Batterie auf 100% zu laden und die Wetterdaten auch keine Bewölkung größer 90% vorhersagen.
Bedeutet also Sonniger Tag, Batterie über den Tag schonend laden und bis 18:30 Uhr 90% SoC erreichen.
sLadeschwelle = 0
sLadeende = 80
sLadeende2 = 90
sSommerladeende = 16.50;Einstellung 3 wird verwendet, wenn die Prognose abzüglich Eigenverbrauch (EigenverbrauchTag) höher ist als die benötigte Leistung, um die Batterie auf 100% zu laden und die Wetterdaten von 12:00 bis 18:00 Uhr Bewölkung größer 90% vorhersagen.
Bedeutet also Vormittag Sonne, Nachmittag bewölkt.
Hier speise ich alles in die Batterie bis diese 70% SoC erreicht hat und beginne erst dann mit der Regelung bis 15:00 Uhr wo ich eine SoC von 95% erreichen will.
sLadeschwelle = 70;
sLadeende = 85;
sLadeende2 = 95;
sSommerladeende = 13.00;Einstellung 4 wird verwendet, wenn die Prognose abzüglich Eigenverbrauch (EigenverbrauchTag) höher ist als die benötigte Leistung, um die Batterie auf 100% zu laden und die Wetterdaten von 12:00 bis 15:00 Uhr Bewölkung größer 90% vorhersagen.
Bedeutet also Vormittag Sonne, Mittag bewölkt und Nachmittag Sonne, Batterie über den Tag schonend laden aber bereits am Vormittag Batterie auf min. 50% SoC Laden und bis 17:00 Uhr 95% SoC erreichen.
sLadeschwelle = 50;
sLadeende = 86;
sLadeende2 = 95;
sSommerladeende = 15.00;Einstellung 5 wird verwendet, wenn die Prognose abzüglich Eigenverbrauch (EigenverbrauchTag) höher ist als die benötigte Leistung, um die Batterie auf 100% zu laden und die Wetterdaten von 15:00 bis 18:00 Uhr Bewölkung größer 90% vorhersagen.
Bedeutet also Vormittag Sonne, spät Nachmittag bewölkt, Batterie über den Tag schonend laden und bis 17:00 Uhr 95% SoC erreichen.
sLadeschwelle = 0;
sLadeende = 80;
sLadeende2 = 95;
sSommerladeende = 15.00;Ist MQTT möglich?
Diese Frage verstehe ich nicht ganz. Für was willst du MQTT verwenden ?
@arnod Danke für die Erläuterung - Ich hoffe du konntest dich gut erholen im Urlaub
Macht für mich einiges verständlicher aber leider immer noch nicht schlüssig :(
So sieht aktuell meine Config aus
Regelbeginn und Ende wäre extrem spät und sehr kurz
Habe ich da einen Eingabefehler?Prognose Prop 53kwh / Forcast 25kwh
Jedoch steht bei Automatik auf Stufe 1
Voll laden
Regelbeginn laut Ebas Tool

-
@arnod Danke für die Erläuterung - Ich hoffe du konntest dich gut erholen im Urlaub
Macht für mich einiges verständlicher aber leider immer noch nicht schlüssig :(
So sieht aktuell meine Config aus
Regelbeginn und Ende wäre extrem spät und sehr kurz
Habe ich da einen Eingabefehler?Prognose Prop 53kwh / Forcast 25kwh
Jedoch steht bei Automatik auf Stufe 1
Voll laden
Regelbeginn laut Ebas Tool

Die Zeiten Regelbeginn und Ende vom Script bitte ignorieren, da ist noch ein Rechenfehler enthalten von der Übersetzung aus dem C++ Programm in Javascript.
Da bin ich gerade dabei diesen zu finden.
Wenn jemand C++ kann, könnte er mir helfen :-)Was den Wert PrognoseBerechnung_kWh_heute betrifft, vermute ich das du das Script unter dem Tag noch mal gestartet hast. Dann wird vom Script der Speicherinhalt von der Prognose abgezogen und auf dieser Basis eine Einstellung gewählt.
Lass mal das Script Morgen durchlaufen und ändere den Parameter LogAusgabe= true, dann sollte Morgen im LOG erkennbar sein mit welchen Werten welche Einstellung gewählt wurde.
Sollte dann so aussehen:
2021-06-05 06:10:05.003 - info: javascript.1 (614) script.js.common.E3DC_Control: *************************** Es wurde Dach 2 abgerufen **********************************
2021-06-05 06:10:06.848 - info: javascript.1 (614) script.js.common.E3DC_Control: Rueckmeldung :{"result":{"2021-06-05":36864,"2021-06-06":17762},"message":{"code":0,"type":"success","text":"","info":{"place":"xxxx xxxxxxxxxx, xxxxxxxxxx, xxxxxxxxx, DE","timezone":"Europe/Berlin","distance":1.05},"ratelimit":{"period":3600,"limit":12,"remaining":7}}}
2021-06-05 06:10:06.849 - info: javascript.1 (614) script.js.common.E3DC_Control: Gespeichert wurde Dachfläche =2/2 : 36864 :17762
2021-06-05 06:10:08.119 - info: host.iobroker instance system.adapter.dwd.0 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION)
2021-06-05 06:10:10.002 - info: javascript.1 (614) script.js.common.E3DC_Control: *************************** Es wurde Dach 1 abgerufen **********************************
2021-06-05 06:10:10.718 - info: javascript.1 (614) script.js.common.E3DC_Control: Rueckmeldung :{"result":{"2021-06-05":38766,"2021-06-06":18626},"message":{"code":0,"type":"success","text":"","info":{"place":"xxxx xxxxxxxxxx, xxxxxxxxxx, xxxxxxxxx, DE","timezone":"Europe/Berlin","distance":1.05},"ratelimit":{"period":3600,"limit":12,"remaining":7}}}
2021-06-05 06:10:10.719 - info: javascript.1 (614) script.js.common.E3DC_Control: Gespeichert wurde Dachfläche =1/2 : 38766 :18626
2021-06-05 06:10:15.008 - info: javascript.1 (614) script.js.common.E3DC_Control: RB = 7:1
2021-06-05 06:10:15.008 - info: javascript.1 (614) script.js.common.E3DC_Control: RE = 7:9
2021-06-05 06:10:15.008 - info: javascript.1 (614) script.js.common.E3DC_Control: LE = 7:42
2021-06-05 06:10:15.010 - info: javascript.1 (614) script.js.common.E3DC_Control: Prognose Forecast in kWh = 75.63
2021-06-05 06:10:15.010 - info: javascript.1 (614) script.js.common.E3DC_Control: Prognose Proplanta in kWh = 94.024
2021-06-05 06:10:15.010 - info: javascript.1 (614) script.js.common.E3DC_Control: Prognose_kWh nach Abzug Korrekturfaktor = 94.024
2021-06-05 06:10:15.011 - info: javascript.1 (614) script.js.common.E3DC_Control: Bereits produzierte PV-Leistung = 0.1425238046967266
2021-06-05 06:10:15.011 - info: javascript.1 (614) script.js.common.E3DC_Control: Prognose_kWh_heute für Berechnung = 93.88147619530328
2021-06-05 06:10:15.012 - info: javascript.1 (614) script.js.common.E3DC_Control: BatterieProzent(wert)=52.814
2021-06-05 06:10:15.012 - info: javascript.1 (614) script.js.common.E3DC_Control: Berechneter Eigenverbrauch = 26
2021-06-05 06:10:15.012 - info: javascript.1 (614) script.js.common.E3DC_Control: AktSpeicherSoC in % = 61
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: FreieKapBatterie_kWh = 15.21
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: Ueberschuss in kWh = 52.814
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: Ueberschuss in Prozent = 100
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: Bewölkungsgrad 12 Uhr Proplanta 12.5
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: Bewölkungsgrad 15 Uhr Proplanta 87.5
2021-06-05 06:10:15.014 - info: javascript.1 (614) script.js.common.E3DC_Control: Berechneter Unload SoC ist = -39 -
Die Zeiten Regelbeginn und Ende vom Script bitte ignorieren, da ist noch ein Rechenfehler enthalten von der Übersetzung aus dem C++ Programm in Javascript.
Da bin ich gerade dabei diesen zu finden.
Wenn jemand C++ kann, könnte er mir helfen :-)Was den Wert PrognoseBerechnung_kWh_heute betrifft, vermute ich das du das Script unter dem Tag noch mal gestartet hast. Dann wird vom Script der Speicherinhalt von der Prognose abgezogen und auf dieser Basis eine Einstellung gewählt.
Lass mal das Script Morgen durchlaufen und ändere den Parameter LogAusgabe= true, dann sollte Morgen im LOG erkennbar sein mit welchen Werten welche Einstellung gewählt wurde.
Sollte dann so aussehen:
2021-06-05 06:10:05.003 - info: javascript.1 (614) script.js.common.E3DC_Control: *************************** Es wurde Dach 2 abgerufen **********************************
2021-06-05 06:10:06.848 - info: javascript.1 (614) script.js.common.E3DC_Control: Rueckmeldung :{"result":{"2021-06-05":36864,"2021-06-06":17762},"message":{"code":0,"type":"success","text":"","info":{"place":"xxxx xxxxxxxxxx, xxxxxxxxxx, xxxxxxxxx, DE","timezone":"Europe/Berlin","distance":1.05},"ratelimit":{"period":3600,"limit":12,"remaining":7}}}
2021-06-05 06:10:06.849 - info: javascript.1 (614) script.js.common.E3DC_Control: Gespeichert wurde Dachfläche =2/2 : 36864 :17762
2021-06-05 06:10:08.119 - info: host.iobroker instance system.adapter.dwd.0 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION)
2021-06-05 06:10:10.002 - info: javascript.1 (614) script.js.common.E3DC_Control: *************************** Es wurde Dach 1 abgerufen **********************************
2021-06-05 06:10:10.718 - info: javascript.1 (614) script.js.common.E3DC_Control: Rueckmeldung :{"result":{"2021-06-05":38766,"2021-06-06":18626},"message":{"code":0,"type":"success","text":"","info":{"place":"xxxx xxxxxxxxxx, xxxxxxxxxx, xxxxxxxxx, DE","timezone":"Europe/Berlin","distance":1.05},"ratelimit":{"period":3600,"limit":12,"remaining":7}}}
2021-06-05 06:10:10.719 - info: javascript.1 (614) script.js.common.E3DC_Control: Gespeichert wurde Dachfläche =1/2 : 38766 :18626
2021-06-05 06:10:15.008 - info: javascript.1 (614) script.js.common.E3DC_Control: RB = 7:1
2021-06-05 06:10:15.008 - info: javascript.1 (614) script.js.common.E3DC_Control: RE = 7:9
2021-06-05 06:10:15.008 - info: javascript.1 (614) script.js.common.E3DC_Control: LE = 7:42
2021-06-05 06:10:15.010 - info: javascript.1 (614) script.js.common.E3DC_Control: Prognose Forecast in kWh = 75.63
2021-06-05 06:10:15.010 - info: javascript.1 (614) script.js.common.E3DC_Control: Prognose Proplanta in kWh = 94.024
2021-06-05 06:10:15.010 - info: javascript.1 (614) script.js.common.E3DC_Control: Prognose_kWh nach Abzug Korrekturfaktor = 94.024
2021-06-05 06:10:15.011 - info: javascript.1 (614) script.js.common.E3DC_Control: Bereits produzierte PV-Leistung = 0.1425238046967266
2021-06-05 06:10:15.011 - info: javascript.1 (614) script.js.common.E3DC_Control: Prognose_kWh_heute für Berechnung = 93.88147619530328
2021-06-05 06:10:15.012 - info: javascript.1 (614) script.js.common.E3DC_Control: BatterieProzent(wert)=52.814
2021-06-05 06:10:15.012 - info: javascript.1 (614) script.js.common.E3DC_Control: Berechneter Eigenverbrauch = 26
2021-06-05 06:10:15.012 - info: javascript.1 (614) script.js.common.E3DC_Control: AktSpeicherSoC in % = 61
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: FreieKapBatterie_kWh = 15.21
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: Ueberschuss in kWh = 52.814
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: Ueberschuss in Prozent = 100
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: Bewölkungsgrad 12 Uhr Proplanta 12.5
2021-06-05 06:10:15.013 - info: javascript.1 (614) script.js.common.E3DC_Control: Bewölkungsgrad 15 Uhr Proplanta 87.5
2021-06-05 06:10:15.014 - info: javascript.1 (614) script.js.common.E3DC_Control: Berechneter Unload SoC ist = -39 -
Neue Version 0.2.24 hochgeladen.
Version: 0.2.24 Änderungen:
Regelzeitraum Start, Ende und Ladezeitende werden jetzt nach der Formel von Eberhard richtig berechnet.Für alle die nicht das original Script verwenden, es muss nur die Funktion "MEZ_Regelzeiten()" komplett kopiert werden, alles andere ist gleich geblieben.
Ich habe es mit der aktuellen E3DC-Control Version 2021.05.24.1 getestet, da Eberhard anscheinend an der Zeitberechnung immer wieder mal was optimiert.
-
Neue Version 0.2.24 hochgeladen.
Version: 0.2.24 Änderungen:
Regelzeitraum Start, Ende und Ladezeitende werden jetzt nach der Formel von Eberhard richtig berechnet.Für alle die nicht das original Script verwenden, es muss nur die Funktion "MEZ_Regelzeiten()" komplett kopiert werden, alles andere ist gleich geblieben.
Ich habe es mit der aktuellen E3DC-Control Version 2021.05.24.1 getestet, da Eberhard anscheinend an der Zeitberechnung immer wieder mal was optimiert.
-
@smartboart bezüglich RSCPGui auf Raspi
Hattest du auch den Fehler?unable to access the x display is $display set properly@tbsjah
Hallo,
benutzt du eine desktop oder lite version ? Wenn du die gui auf deinem Linux system öfnnen willst, musst du die consolen eingabe um die gui zu öffnen innerhalb der desktop instanz ausführen. ohne desktop kannst du mit voreingestellter config mittels -c und -e den consolen betrieb und den export in mqtt ohne desktop starten. wenn du dann aber das ssh Fenster schließt wird auch die sitzung beendet. Das hatte ich zwischenzeitlich mit einem Terminal im Terminal gelöst , wie z.B tmux oder screen. -
Neue Version 0.2.24 hochgeladen.
Version: 0.2.24 Änderungen:
Regelzeitraum Start, Ende und Ladezeitende werden jetzt nach der Formel von Eberhard richtig berechnet.Für alle die nicht das original Script verwenden, es muss nur die Funktion "MEZ_Regelzeiten()" komplett kopiert werden, alles andere ist gleich geblieben.
Ich habe es mit der aktuellen E3DC-Control Version 2021.05.24.1 getestet, da Eberhard anscheinend an der Zeitberechnung immer wieder mal was optimiert.
Gelöscht
-
@tbsjah
Hallo,
benutzt du eine desktop oder lite version ? Wenn du die gui auf deinem Linux system öfnnen willst, musst du die consolen eingabe um die gui zu öffnen innerhalb der desktop instanz ausführen. ohne desktop kannst du mit voreingestellter config mittels -c und -e den consolen betrieb und den export in mqtt ohne desktop starten. wenn du dann aber das ssh Fenster schließt wird auch die sitzung beendet. Das hatte ich zwischenzeitlich mit einem Terminal im Terminal gelöst , wie z.B tmux oder screen.@smartboart danke
Funktioniert nur wenn ich direkt per HDMI verbunden bin
Über Remote session bekomme ich es nicht zum laufen
da habe ich immer einen screen x Fehler -
Neue Version 0.2.24 hochgeladen.
Version: 0.2.24 Änderungen:
Regelzeitraum Start, Ende und Ladezeitende werden jetzt nach der Formel von Eberhard richtig berechnet.Für alle die nicht das original Script verwenden, es muss nur die Funktion "MEZ_Regelzeiten()" komplett kopiert werden, alles andere ist gleich geblieben.
Ich habe es mit der aktuellen E3DC-Control Version 2021.05.24.1 getestet, da Eberhard anscheinend an der Zeitberechnung immer wieder mal was optimiert.
@arnod Frage wegen der Regelung
Bis 15 Uhr ist es das Ziel 95% geladen zu haben. Sehe ich das richtig?
Bei mir wird das in den letzten Tag nicht erreicht. Es wird bei aktiven Script immer nur mit 500Watt geladenFragen zur Berechnungsgrundlage --> 24kWh
Prognose - Eigenverbrauch - Wirkungsgrad?Log


-
@arnod Frage wegen der Regelung
Bis 15 Uhr ist es das Ziel 95% geladen zu haben. Sehe ich das richtig?
Bei mir wird das in den letzten Tag nicht erreicht. Es wird bei aktiven Script immer nur mit 500Watt geladenFragen zur Berechnungsgrundlage --> 24kWh
Prognose - Eigenverbrauch - Wirkungsgrad?Log


@tbsjah
Mit deiner Einstellung sollte so geregelt werden das bis 15 Uhr UTC 17Uhr MESZ der Batteriespeicher zu 95 % geladen ist.
Um zu sehen, warum er das nicht erreicht, müsstest du dein Diagramm ansehen.
Ab wann war es bewölkt? Wie hoch war dein Eigenverbrauch? Wurde Vormittags ins Netz eingespeist?
Für die Einstellung 5 würde ich Parameter "ladeschwelle" auf min. 50 % einstellen, dann wird dein Batteriespeicher mit voller Überschussleistung schon mal bis 50 % sicher geladen, wenn es Nachmittags bewölkt ist.Mit Einstellung 2 hat mein Diagramm heute so ausgesehen:

Da ich mein E-Auto heute Nachmittag geladen habe, konnte der Eingestellte SoC von 95 % bei mir auch nicht erreicht werden.
-
@arnod Frage wegen der Regelung
Bis 15 Uhr ist es das Ziel 95% geladen zu haben. Sehe ich das richtig?
Bei mir wird das in den letzten Tag nicht erreicht. Es wird bei aktiven Script immer nur mit 500Watt geladenFragen zur Berechnungsgrundlage --> 24kWh
Prognose - Eigenverbrauch - Wirkungsgrad?Log


@tbsjah sagte in E3DC Hauskraftwerk steuern:
Fragen zur Berechnungsgrundlage --> 24kWh
Prognose - Eigenverbrauch - Wirkungsgrad?Meinst du Prognose_kWh_heute für Berechnung = 24.49180317992532 ?
Der Wert berechnet sich aus der Prognose Forecast in kWh = 38.483 abzüglich bereits produzierte PV-Leistung = 13.991196820074677
-
Neue Version 0.2.25 hochgeladen.
Version: 0.2.25 Änderungen:
Beim Abrufen der Wetterdaten Forecast wurden die letzten Werte vorher nicht gelöscht.
Wenn aus irgendeinem Grund keine neuen Daten abgerufen werden konnten, wurde mit den alten Werten gerechnet.Für alle die nicht das original Script verwenden, es muss nur ab Zeile 363 bis 367 und die Funktion "SheduleForecast()" komplett kopiert werden, alles andere ist gleich geblieben.
-
Super das du das script auch weiterhin verbesserst, ich wünsche ich könnte auch mehr Java programmieren, muss mich da echt mal hinsetzen.
Ich hätte eine Frage zum Vis und hoffe es kann mir jemand erklären warum es mir den CircleKnob nicht anzeigt.
Hab schon geschaut das ich alles installiert hab; meines Erachtens sollte das auch richtig installiert und im richtigen Datenpunkt sein (hab nix geändert) aber es ist nicht da.


-
Super das du das script auch weiterhin verbesserst, ich wünsche ich könnte auch mehr Java programmieren, muss mich da echt mal hinsetzen.
Ich hätte eine Frage zum Vis und hoffe es kann mir jemand erklären warum es mir den CircleKnob nicht anzeigt.
Hab schon geschaut das ich alles installiert hab; meines Erachtens sollte das auch richtig installiert und im richtigen Datenpunkt sein (hab nix geändert) aber es ist nicht da.


@chilihead
Wenn nichts angewählt ist wird auch nichts angezeigt.
Markiere mal ein Feld und schau ob dann auch nichts angezeigt wird. -
@chilihead
Wenn nichts angewählt ist wird auch nichts angezeigt.
Markiere mal ein Feld und schau ob dann auch nichts angezeigt wird.@arnod ach das kommt wenn ich oben was auswähle, das ist ja geil :clap:
Hab zum Test mal nen Zahlengenerator laufen lassen was da überhaupt alles drin ist; wenn man weiß was sich dahinter verbirgt kommt man auch auf "ach das könnte was mit oben zu tun haben" :face_with_rolling_eyes:Dank dir für die schnelle Antwort
-
Ich habe dieses Topic eröffnet, um gemeinsam an einer Überschusssteuerung des E3DC Hauskraftwerks in ioBroker zu arbeiten.
Dankeschön an dieser Stelle an Eberhard und sein Programm E3DC-Control, ohne ihn wäre das alles nicht möglich gewesen.
Großes Lob und Danke auch an Uli, der den Adapter e3dc-rscp programmiert hat, über den die Steuerung im ioBroker erst möglich wurde.Ziel der Steuerung ist:
Mit der Steuerung soll erreicht werden, dass der Batteriespeicher möglichst schonend geladen wird, um die Lebensdauer zu erhöhen.- Speicher soll nie längere Zeit auf 100 % geladen werden oder auf 0 % entladen werden.
- Möglichst gleichmäßige Ladeleistung beim Laden.
- PV-Überschuss soll gespeichert werden, um nicht in die 70 % Abriegelung zu kommen.
- Bei Überschreitung WR Begrenzung soll Überschuss in die Batterie gespeichert werden.
ioBroker
Es werden folgende Adapter benötigt:- Javascript (NPM-Module: axios, is-it-bst)
- e3dc-rscp
Für die View Beispiele in VIS werden noch folgende Adapter benötigt:
- vis-hqwidgets
- vis-materialdesign
- vis-timeandweather
Beispiel View zum Importieren und das Skript Charge-Control, sowie eine Anleitung findet ihr auf GitHub:
https://github.com/ArnoD15/iobroker_E3DCEinstellbare Parameter:
Unload: Wenn der SoC Wert der Batterie > Wert „Unload“ ist, wird der Batteriespeicher mit Beginn Solarproduktion bis Beginn Regelzeitraum, auf SOC Wert Parameter "Unload" entladen. Ist Unload < Ladeschwelle wird bis Ladeschwelle geladen und Unload ignoriert.Ladeschwelle: Mit Beginn Solarproduktion wird die Batterie mit der maximalen Ladeleistung bis zum Wert Ladeschwelle geladen. Erst wenn der Batterie SOC den Wert Ladeschwelle erreicht, wird mit dem geregelten Laden begonnen. Danach wird bis SOC Wert „Ladeende“ gleichmäßig geladen, mit Ausnahme, wenn die PV-Leistung das Einspeiselimit oder die WR-Maxleistung übersteigt, wird die Ladeleistung um den Wert erhöht, um das Einspeiselimit oder WR-Limit einhalten zu können. Bei unterschreiten von dem Wert Einspeiselimit oder WR-Limit, wird wieder mit neu berechneter Ladeleistung, gleichmäßig bis „Ladeende" geladen. Bei großem Überschuss kann die gleichmäßige Ladeleistung bis auf 0 abgesenkt werden. Parameter "Ladeschwelle" hat Vorrang vor "Unload", d.h. "Unload" wird ignoriert, falls "Ladeschwelle" größer sein sollte als „Unload“.
Ladeende: SoC Wert Speicher, der zum Ende des Regelzeitraums erreicht werden soll.
Ladeende2: SoC Wert Speicher, der zum Ende Sommer Ladeende erreicht werden sollten.
Unterer Ladekorridor: Der „Untere Ladekorridor“ definiert nur den min. Wert, ab dem mit dem Laden der Batterie gestartet wird. Erst wenn die berechnetet Ladeleistung den Wert „unteren Ladekorridor“ übersteigt, wird mit dem Laden der Batterie gestartet.
Offset Regelbeginn Zeit in hh:mm, die von der Astro Zeit "solarNoon" (höchster Sonnenstand) abgezogen wird.
Offset Regelende Zeit in hh:mm, die zu der Astro Zeit "solarNoon" (höchster Sonnenstand) dazu addiert wird.
Offset Ladeende Zeit in hh:mm, die von der Astro Zeit "sunset" (Sonnenuntergang) abgezogen wird.

Eigenverbrauch: Der geschätzte Eigenverbrauch pro Tag in kWh. Wird für die Überschussberechnung der Prognose verwendet.Notstrom min.: Speicherreserve in % bei Wintersonnenwende 21.12
Notstrom Sockel: min. SOC Wert bei Tag-/Nachtgleiche 21.3./21.9.
Berechnung Notstrom: 21.12 (Wintersonnenwende) ist der Bezugs-SoC = Wert „Notstrom min“ und wird bis zum 21.3 (Tag-/Nachtgleiche) auf Wert „Notstrom Sockel“ reduziert und bis zum 20.06 (Sommersonnenwende) um ca. weitere 10% reduziert. Ab dem 20.06 (Sommersonnenwende) steigt der Bezugs-SoC wieder bis zum 21.09 (Tag-/Nachtgleiche) auf den Wert „Notstrom Sockel“ und bis zum 21.12 (Wintersonnenwende) auf den Wert „Notstrom min“. Je Monat ändert sich somit der SoC um ca. +- 3,3%. Mit Notstrom min. und Notstrom Sockel kann man eine Dynamische Notstromreserve vorhalten, Vorteil ist, dass der Speicher nicht alle 3 Wochen entladen wird wie bei der Notstromreserve von E3DC.
Starten wir am 21.12 (Wintersonnenwende) der kürzeste Tag, da wird der Speicher bis auf Notstrom min = 20% entladen.
Ab jetzt werden die Tage immer länger, bis zum 21.3 (Tag-/Nachtgleiche) wo die Tage und Nächte gleich lang sind.
Das bedeutet deine Speicherreserve kann immer geringer werden je länger die Tage sind, da ja mehr PV-Leistung zur Verfügung steht. Es wird somit jeden Monat die Speichergrenze um ca.3,33% reduziert bis zum 21.03 auf den Wert Notstrom Sockel = 10%.Ab dem 21.03 werden die Tage immer länger bis zum 20.06 (Sommersonnenwende) dem längsten Tag im Jahr.
Es wird also die Speichergrenze weiter jeden Monat um ca. 3,33% reduziert bis zum 20.06 auf 0%,
Ab diesem Zeitpunkt werden die Tage wieder kürzer bis zum 21.9 (Tag-/Nachtgleiche) wo die Tage und Nächte wieder gleich lang sind und die Speicherreserve wird jeden Monat um ca. 3,33% erhöht auf Notstrom Sockel = 10%.
Die Tage werden immer kürzer bis zum 21.12 (Wintersonnenwende) und die Speichergrenze wird weiter jeden Monat um ca. 3,33% erhöht auf den Wert Notstrom min = 20%Notstrom Sockel ist somit der min. SOC Wert, wenn die Tage und Nächte gleich lang sind, also am 21.3 und 21.09 und
Notstrom min wenn die Tage am kürzesten sind am 21.12 .Laderegelung:
Mit Beginn Solarproduktion wird die Batterie mit der maximalen Ladeleistung bis zum Wert Ladeschwelle geladen oder bis zum SOC Wert Unload entladen. Erst wenn der Batterie SOC den Wert Ladeschwelle erreicht, wird mit dem geregelten Laden begonnen.Mit Start Regelzeitraum wird die benötigte Ladeleistung berechnet, um den SOC Ladeende bis zum Ende Regelzeitraum zu erreichen.
Bei Überschreitung der Zeit, Ende Regelzeitraum wird die benötigte Ladeleistung neu berechnet, um den SOC Ladeende2 bis zur Zeit Ladeende zu erreichen.
Wenn die Zeit Ladeende erreicht ist und die Batterie noch nicht den SOC Ladeende2 erreicht hat, wird das Laden mit maximal noch zur Verfügung stehender PV-Leistung freigegeben.
Ausnahme: Wenn die PV-Leistung das Einspeiselimit oder die maximale Wechselrichterleistung übersteigt, wird die Ladeleistung um den Wert erhöht, um das Einspeiselimit oder die maximale Wechselrichterleistung einhalten zu können. Bei Unterschreiten von dem Wert Einspeiselimit oder WR-Limit, wird mit neu berechneter Ladeleistung, gleichmäßig geladen.
@arnod Moin. jetzt habe ich auch mal wieder ein Problem. Hatte gestern Nacht das Update 0.2.25 übernommen (alles nach dem User-Abschnitt kopiert) und heute geht das Umschalten der Monate in der Prognose-View manchmal nicht mehr. Kann natürlich auch Zufall sein, habe das zuletzt vermutlich Anfang Juni benutzt. Es passiert dann einfach nichts, keine Aktualisierung des Diagramms und auch kein Fehler im Log (javascript.0 im debug-Modus).
Habt ihr evtl. auch dieses Problem oder/und wie könnte ich das debuggen? Gab es View-Anpassungen, die ich nicht übernommen haben könnte?Ergänzung: Hmmm, die Probleme scheinen (meistens) anzufangen, wenn ich einmal auf Juli schalte und dann wieder zurück auf bereits vergangene Monate oder den aktuellen Monat. Ist aber nicht jedes Mal reproduzierbar, da muss noch irgendwas anderes reinspielen.
Weitere Beobachtung: Ab Mitte Juli sind bei mir die Daten (wohl aus dem letzten Jahr?) vorhanden. Mitte Juli 2020 hatte ich möglicherweise damit angefangen. Jetzt werden im Juli 2021 Daten aus Juli 2020 angezeigt. Werden die gelöscht, wenn der Juli 2021 beginnt, so dass der Monat dann leer angezeigt wird?Allerdings stimmt für Juni auch schon irgendwas nicht, denn für Ende Juni sind auch schon Daten da?! Wie geht das denn? :-)

Noch ne Ergänzung: Ich musste vor 2-3 Tagen ein Backup von einer Woche vorher im Raspi einspielen. Aber das erklärt ja eigentlich auch nicht die bereits vorhandenen Daten für bis Ende Juni...
Hier noch der Juli:
Weitere Ergänzung: Noch ein bisschen rumgespielt - es scheint so, als werden im Juni die noch nicht erreichten Tage zum Monatsende hin mit den Tagen aus Mai angezeigt. Wenn ich zwischen Mai und Juni umschalte, dann bleiben die Balken für 22. bis 30. unverändert.
-
@arnod Moin. jetzt habe ich auch mal wieder ein Problem. Hatte gestern Nacht das Update 0.2.25 übernommen (alles nach dem User-Abschnitt kopiert) und heute geht das Umschalten der Monate in der Prognose-View manchmal nicht mehr. Kann natürlich auch Zufall sein, habe das zuletzt vermutlich Anfang Juni benutzt. Es passiert dann einfach nichts, keine Aktualisierung des Diagramms und auch kein Fehler im Log (javascript.0 im debug-Modus).
Habt ihr evtl. auch dieses Problem oder/und wie könnte ich das debuggen? Gab es View-Anpassungen, die ich nicht übernommen haben könnte?Ergänzung: Hmmm, die Probleme scheinen (meistens) anzufangen, wenn ich einmal auf Juli schalte und dann wieder zurück auf bereits vergangene Monate oder den aktuellen Monat. Ist aber nicht jedes Mal reproduzierbar, da muss noch irgendwas anderes reinspielen.
Weitere Beobachtung: Ab Mitte Juli sind bei mir die Daten (wohl aus dem letzten Jahr?) vorhanden. Mitte Juli 2020 hatte ich möglicherweise damit angefangen. Jetzt werden im Juli 2021 Daten aus Juli 2020 angezeigt. Werden die gelöscht, wenn der Juli 2021 beginnt, so dass der Monat dann leer angezeigt wird?Allerdings stimmt für Juni auch schon irgendwas nicht, denn für Ende Juni sind auch schon Daten da?! Wie geht das denn? :-)

Noch ne Ergänzung: Ich musste vor 2-3 Tagen ein Backup von einer Woche vorher im Raspi einspielen. Aber das erklärt ja eigentlich auch nicht die bereits vorhandenen Daten für bis Ende Juni...
Hier noch der Juli:
Weitere Ergänzung: Noch ein bisschen rumgespielt - es scheint so, als werden im Juni die noch nicht erreichten Tage zum Monatsende hin mit den Tagen aus Mai angezeigt. Wenn ich zwischen Mai und Juni umschalte, dann bleiben die Balken für 22. bis 30. unverändert.
@stevie77 sagte in E3DC Hauskraftwerk steuern:
Habt ihr evtl. auch dieses Problem oder/und wie könnte ich das debuggen? Gab es View-Anpassungen, die ich nicht übernommen haben könnte?
Habe es bei mir gerade getestet und konnte kein Problem feststellen.
Vor der Version 0.2.21 war ein Fehler beim Speichern History JSON enthalten, wo es möglich war das der aktuelle Monat mit falschen Daten überschrieben wurde.Weitere Beobachtung: Ab Mitte Juli sind bei mir die Daten (wohl aus dem letzten Jahr?) vorhanden. Mitte Juli 2020 hatte ich möglicherweise damit angefangen. Jetzt werden im Juli 2021 Daten aus Juli 2020 angezeigt. Werden die gelöscht, wenn der Juli 2021 beginnt, so dass der Monat dann leer angezeigt wird?
Richtig, die alten Daten aus dem letzten Jahr werden immer erst mit Beginn den aktuellen Monat gelöscht.
Allerdings stimmt für Juni auch schon irgendwas nicht, denn für Ende Juni sind auch schon Daten da?! Wie geht das denn? :-)
Könnte noch mit dem Fehler im Skript vor Version 0.2.21 zu tun haben.
Weitere Ergänzung: Noch ein bisschen rumgespielt - es scheint so, als werden im Juni die noch nicht erreichten Tage zum Monatsende hin mit den Tagen aus Mai angezeigt. Wenn ich zwischen Mai und Juni umschalte, dann bleiben die Balken für 22. bis 30. unverändert.
Das ist genau der Fehler vor der Version 0.2.21, wenn in Vis zum Monatswechsel ein anderer Monat angewählt wahr wurde der aktuelle Monat mit dem angewählten Monat überschrieben.
Werde mir das mal anschauen, ob das Löschen der alten Daten funktioniert. Habe erst ab August alte Werte drin so das mir ein Fehler im Script erst da auffallen würde. Werde mal für Juli zum Testen Werte eintragen.
-
@smartboart
Beim State modbus.0.holdingRegisters.40088_WallBox_0_CTRL ist Bit 0 bei mir immer auf 1
@arnod
Servus Arno,
würdest du mir für genau den Datenpunkt zu "zerlegen" den Code posten. Bei mir zeigt er zum Teil sehr merkwürdige Sachen an. z.B: Typ2_gesteckt = 128 u.ä.
Bei mir sieht der Code derzeit so aus:// Wallbox_2_CTRL var id3 = 'modbus.0.holdingRegisters.40088_WallBox_0_CTRL'; createState('0_userdata.0.Solar.WB_vorhanden_verfügbar'); createState('0_userdata.0.Solar.Solarbetrieb1_Mischbetrieb0'); createState('0_userdata.0.Solar.LadenAbgebrochen1_LadenFreigegeben0'); createState('0_userdata.0.Solar.Auto_lädt'); createState('0_userdata.0.Solar.Typ2_verriegelt'); createState('0_userdata.0.Solar.Typ2_gesteckt'); createState('0_userdata.0.Solar.Schuko_an'); createState('0_userdata.0.Solar.Schuko_gesteckt'); createState('0_userdata.0.Solar.Schuko_verriegelt'); createState('0_userdata.0.Solar.Relais_Schuko_an'); createState('0_userdata.0.Solar.Relais_1_Typ2_an'); createState('0_userdata.0.Solar.Relais_2_Typ2_an'); createState('0_userdata.0.Solar.1Phase_1_3Phasen_0'); createState('0_userdata.0.Solar.nicht_belegt'); on(id3, function (obj) { setState('0_userdata.0.Solar.WB_vorhanden_verfügbar', obj.state.val & 0xFF, true); setState('0_userdata.0.Solar.Solarbetrieb1_Mischbetrieb0', (obj.state.val >> 1) & 0xFF, true); setState('0_userdata.0.Solar.LadenAbgebrochen1_LadenFreigegeben0', (obj.state.val >> 2) & 0xFF, true); setState('0_userdata.0.Solar.Auto_lädt', (obj.state.val >> 3) & 0xFF, true); setState('0_userdata.0.Solar.Typ2_verriegelt', (obj.state.val >> 4) & 0xFF, true); setState('0_userdata.0.Solar.Typ2_gesteckt', (obj.state.val >> 5) & 0xFF, true); setState('0_userdata.0.Solar.Schuko_an', (obj.state.val >> 6) & 0xFF, true); setState('0_userdata.0.Solar.Schuko_gesteckt', (obj.state.val >> 7) & 0xFF, true); setState('0_userdata.0.Solar.Schuko_verriegelt', (obj.state.val >> 8) & 0xFF, true); setState('0_userdata.0.Solar.Relais_Schuko_an', (obj.state.val >> 9) & 0xFF, true); setState('0_userdata.0.Solar.Relais_1_Typ2_an', (obj.state.val >> 10) & 0xFF, true); setState('0_userdata.0.Solar.Relais_2_Typ2_an', (obj.state.val >> 11) & 0xFF, true); setState('0_userdata.0.Solar.1Phase_1_3Phasen_0', (obj.state.val >> 12) & 0xFF, true); setState('0_userdata.0.Solar.nicht_belegt', (obj.state.val >> 13) & 0xFF, true); -
@arnod
Servus Arno,
würdest du mir für genau den Datenpunkt zu "zerlegen" den Code posten. Bei mir zeigt er zum Teil sehr merkwürdige Sachen an. z.B: Typ2_gesteckt = 128 u.ä.
Bei mir sieht der Code derzeit so aus:// Wallbox_2_CTRL var id3 = 'modbus.0.holdingRegisters.40088_WallBox_0_CTRL'; createState('0_userdata.0.Solar.WB_vorhanden_verfügbar'); createState('0_userdata.0.Solar.Solarbetrieb1_Mischbetrieb0'); createState('0_userdata.0.Solar.LadenAbgebrochen1_LadenFreigegeben0'); createState('0_userdata.0.Solar.Auto_lädt'); createState('0_userdata.0.Solar.Typ2_verriegelt'); createState('0_userdata.0.Solar.Typ2_gesteckt'); createState('0_userdata.0.Solar.Schuko_an'); createState('0_userdata.0.Solar.Schuko_gesteckt'); createState('0_userdata.0.Solar.Schuko_verriegelt'); createState('0_userdata.0.Solar.Relais_Schuko_an'); createState('0_userdata.0.Solar.Relais_1_Typ2_an'); createState('0_userdata.0.Solar.Relais_2_Typ2_an'); createState('0_userdata.0.Solar.1Phase_1_3Phasen_0'); createState('0_userdata.0.Solar.nicht_belegt'); on(id3, function (obj) { setState('0_userdata.0.Solar.WB_vorhanden_verfügbar', obj.state.val & 0xFF, true); setState('0_userdata.0.Solar.Solarbetrieb1_Mischbetrieb0', (obj.state.val >> 1) & 0xFF, true); setState('0_userdata.0.Solar.LadenAbgebrochen1_LadenFreigegeben0', (obj.state.val >> 2) & 0xFF, true); setState('0_userdata.0.Solar.Auto_lädt', (obj.state.val >> 3) & 0xFF, true); setState('0_userdata.0.Solar.Typ2_verriegelt', (obj.state.val >> 4) & 0xFF, true); setState('0_userdata.0.Solar.Typ2_gesteckt', (obj.state.val >> 5) & 0xFF, true); setState('0_userdata.0.Solar.Schuko_an', (obj.state.val >> 6) & 0xFF, true); setState('0_userdata.0.Solar.Schuko_gesteckt', (obj.state.val >> 7) & 0xFF, true); setState('0_userdata.0.Solar.Schuko_verriegelt', (obj.state.val >> 8) & 0xFF, true); setState('0_userdata.0.Solar.Relais_Schuko_an', (obj.state.val >> 9) & 0xFF, true); setState('0_userdata.0.Solar.Relais_1_Typ2_an', (obj.state.val >> 10) & 0xFF, true); setState('0_userdata.0.Solar.Relais_2_Typ2_an', (obj.state.val >> 11) & 0xFF, true); setState('0_userdata.0.Solar.1Phase_1_3Phasen_0', (obj.state.val >> 12) & 0xFF, true); setState('0_userdata.0.Solar.nicht_belegt', (obj.state.val >> 13) & 0xFF, true);@streit187
Ich habe die Script Sammlung für die Modbus Datenpunkte hier bereits gepostet:
Script Sammlung für E3DCEntweder alles verwenden oder nur die Teile die für dich relevant sind.
-
@stevie77 sagte in E3DC Hauskraftwerk steuern:
Habt ihr evtl. auch dieses Problem oder/und wie könnte ich das debuggen? Gab es View-Anpassungen, die ich nicht übernommen haben könnte?
Habe es bei mir gerade getestet und konnte kein Problem feststellen.
Vor der Version 0.2.21 war ein Fehler beim Speichern History JSON enthalten, wo es möglich war das der aktuelle Monat mit falschen Daten überschrieben wurde.Weitere Beobachtung: Ab Mitte Juli sind bei mir die Daten (wohl aus dem letzten Jahr?) vorhanden. Mitte Juli 2020 hatte ich möglicherweise damit angefangen. Jetzt werden im Juli 2021 Daten aus Juli 2020 angezeigt. Werden die gelöscht, wenn der Juli 2021 beginnt, so dass der Monat dann leer angezeigt wird?
Richtig, die alten Daten aus dem letzten Jahr werden immer erst mit Beginn den aktuellen Monat gelöscht.
Allerdings stimmt für Juni auch schon irgendwas nicht, denn für Ende Juni sind auch schon Daten da?! Wie geht das denn? :-)
Könnte noch mit dem Fehler im Skript vor Version 0.2.21 zu tun haben.
Weitere Ergänzung: Noch ein bisschen rumgespielt - es scheint so, als werden im Juni die noch nicht erreichten Tage zum Monatsende hin mit den Tagen aus Mai angezeigt. Wenn ich zwischen Mai und Juni umschalte, dann bleiben die Balken für 22. bis 30. unverändert.
Das ist genau der Fehler vor der Version 0.2.21, wenn in Vis zum Monatswechsel ein anderer Monat angewählt wahr wurde der aktuelle Monat mit dem angewählten Monat überschrieben.
Werde mir das mal anschauen, ob das Löschen der alten Daten funktioniert. Habe erst ab August alte Werte drin so das mir ein Fehler im Script erst da auffallen würde. Werde mal für Juli zum Testen Werte eintragen.
@ArnoD Jetzt im Juli hat das mit dem Löschen der Monatsdaten geklappt. War dann vielleicht doch ein Problem mit dem Einspielen meines Backups oder warum auch immer. Generell scheint es ja zu funktionieren.
Das Umschaltproblem zwischen mehreren Monaten habe ich weiterhin, ist aber nicht wild, da es erst nach mehrmaligem Umschalten passiert und es scheint so, dass es nur passiert, wenn man mehrmals nacheinander recht flott den Monat ändert. Mit etwas Pausen dazwischen habe ich bis zu 10 Umschaltungen erfolgreich getestet (aktueller Skriptstand). Aber wie gesagt, macht man so in der Realität ja nicht und zur Not wird im Browser halt die Seite aktualisiert, dann geht's wieder.