NEWS
E3DC Hauskraftwerk steuern
-
@arnod said in E3DC Hauskraftwerk steuern:
Da hilft nur mal das ganze zu loggen, um zu sehen, was da passiert.
Ursache ist, dass der Wert -3000W gesetzt wird. Muss aber bei mir +3000W sein
Daher werden dann die "Standard" 65W gesetzt
Bei dem letzten Wert hatte ich über E3DC wieder auf 3000 gesetzt -
@tbsjah
Wo kommt bei dir der Wert -3000 her.
Das Script verwendet zu Einschalten der Lade/Entladeleistunge3dc-rscp.0.EMS.SYS_SPECS.maxBatChargePower
um die Ladeleistung wieder auf den maximal Wert zu setzen unde3dc-rscp.0.EMS.SYS_SPECS.maxBatDischargPower
um die Entladeleistung auf den maximal Wert zu setzen.
Beide sind im e3dc-rscp Adapter positive Werte.Um die Lade und Entladeleistung auszuschalten, wird einfach 0 gesetzt.
Verwendest du das aktuelle Script unverändert oder kopierst du manuell nur die Änderungen?Es gibt nur eine Stelle im Script ab Zeile 291, wo die Lade/Entladeleistung eingestellt wird, bitte prüf mal, ob diese bei dir so aussieht:
if (Notstrom_Status == 1 || Notstrom_Status == 4 || Batterie_SOC_Proz > Notstrom_SOC_Proz || (PV_Leistung_E3DC_W > 100 && new Date() < getAstroDate("sunset")) ){ // Laden/Endladen einschalten if(Akk_max_Discharge_Power_W == 0 || Akk_max_Charge_Power_W == 0){ await setStateAsync(sID_Max_Discharge_Power_W, Bat_Discharge_Limit_W) await setStateAsync(sID_DISCHARGE_START_POWER, startDischargeDefault) await setStateAsync(sID_Max_Charge_Power_W, maximumLadeleistung_W) Notstrom_SOC_Proz = (await getStateAsync(sID_Notstrom_akt)).val log('-==== Laden/Entladen der Batterie ist eingeschaltet ====-') } }else if(Batterie_SOC_Proz <= Notstrom_SOC_Proz && (new Date() > getAstroDate("sunset") || new Date() < getAstroDate("sunrise"))){ // Laden/Endladen ausschalten nur wenn Notstrom SOC erreicht wurde und PV-Leistung = 0 W if((Akk_max_Discharge_Power_W != 0 || Akk_max_Charge_Power_W != 0) && Batterie_SOC_Proz !=0){ await setStateAsync(sID_DISCHARGE_START_POWER, 0) await setStateAsync(sID_Max_Discharge_Power_W, 0) await setStateAsync(sID_Max_Charge_Power_W, 0) // Notstrom SOC um 1% erhöhen, da die Batterieladung nach ausschalten wieder ansteigen kann. ++Notstrom_SOC_Proz log('-==== Notstrom Reserve erreicht, Laden/Entladen der Batterie ist ausgeschaltet ====-') } }
Danach bitte Zeile 140 und 141 prüfen, sollte so aussehen:
let maximumLadeleistung_W = getState(sID_Bat_Charge_Limit).val; // Maximal mögliche Batterie Ladeleistung let Bat_Discharge_Limit_W = getState(sID_Bat_Discharge_Limit).val; // Maximal mögliche Batterie Entladeleistung
und zum Schluss Zeile 46 und 47 prüfen, sollte so aussehen:
const sID_Bat_Discharge_Limit = 'e3dc-rscp.0.EMS.SYS_SPECS.maxBatDischargPower' // Batterie Entladelimit const sID_Bat_Charge_Limit = 'e3dc-rscp.0.EMS.SYS_SPECS.maxBatChargePower' // Batterie Ladelimit
sID_Bat_Discharge_Limit war in einer anderen Version mal ein negativer Wert, ist in der aktuellen Version ein positiver Wert. Vermute, dass du da beim Kopieren nicht alles mitkopiert hast.
-
@zelkin sagte in E3DC Hauskraftwerk steuern:
Idee:
Ich weiß nicht mit was für einem Aufwand das verbunden ist, aber die Idee springt in meinem Hirn schon seit Ich das ding habe herum:
Umstellung der Notstromreserve von einem Statischen Wert, auf einen Dynamischen:
als einstellbare Größe gibt man die gewünschte Ausfallzeit an oder man lässt es auf Automatisch laufen
Bei Anwahl Ausfallzeit:
Perfekte Variante: Ermittlung des Grundverbrauchs in dem man den Durchschnittswert der letzten Woche bei nacht wenn der Verbrauch Konstant liegt ermittelt
nicht so Perfekte Variante: man gibt den Grundverbrauch als feste Größe Vor
Anhand von Sunset, bzw. PVForecast oder Proplanta oder ...... wird ermittelt ab wann wieder mit Strom zu rechnen ist oder es wird bis zur Produktion vom Dach einfach die Reserve vorgehalten
Vorteil gegenüber jetzt: Bezugsgröße realistischer für einen selbst, da man z.B. 1h Notstrom vorhalten möchte, bei der Perfekten Variante wird außerdem dynamisch angepasst was für einen Grundverbrauch man hat
Bei Anwahl Automatik:
Anhand von Sunset, bzw. PVForecast oder Proplanta oder ...... wird ermittelt ab wann wieder mit Strom zu rechnen ist
Die Differenz zwischen jetzt und diesem Zeitpunkt ergibt die Notstrom Reserve vorhalte zeit (z.B. 8h)
Alle 15 oder 30 min wird der Wert neu berechnet unter Einbezug des aktuellen batteriefüllstands
Anhand des Grundverbrauchs (Ermittlung siehe oben hier z.B. 500W) und der Vorhaltezeit ergibt sich z.B. um 23 UHr eine Notstromreserve von 8 * 500W= 4000W (bei einer verwendbaren Kapazität von 10kw also 40%
2h Später sind es noch 6 * 500W = 3000W = 30% .........
Ziel hierbei wäre, dass man Theoretisch die Gesamt Nacht abdecken kann
Wenn der Tatsächliche Batterie Wert unter dem errechneten liegt wird aus dem netz entnommen bis der Wert wieder über dem Sollwert liegtUmso länger ich über deine Idee nachdenke, umso einleuchtender wird sie, gerade jetzt wo nicht immer genug Leistung vom Dach kommt.
Mal schauen wie man das umsetzen kann. -
@zelkin sagte in E3DC Hauskraftwerk steuern:
Aber meinst es wäre ne Idee die eigenen daten am Anfang des Skript mal in 0_userdata.0.XXXXXXX variablen zu packen??
Weniger Übertragungsfehler (ja, iss nur copy&paste) und Updates / Versionswechsel gehen locker easy von der HandUnd das werde ich auch mal testen, ob es einfacher ist
-
@arnod @arnod ich habe nochmal ne Frage...
zu diesem Bereich...
Bei mir kommt es ständig zu Logausgabe Ladesteuerung gestoppt.Muss dann mit der Zahl 500 spielen oder....wo kommt die 500 her...hast du die ermittelt weil es bei dir passt?
Dann gehört die in den User Konfig bereich oder...//Prüfen ob berechnete Ladeleistung M_Power zu Netzbezug führt if(M_Power >= 0){ let PowerGrid = PV_Leistung_Summe_W -(Power_Home_W + M_Power) if(PowerGrid < 500 && M_Power != maximumLadeleistung_W){// Führt zu Netzbezug, Steuerung ausschalten M_Power = maximumLadeleistung_W if(LogAusgabeSteuerung){log(' E3DC-Charge-Control: -==== Ladesteuerung gestoppt ====-','warn');} }
-
@ArnoD
Ok,Es kommt immer -200 raus bei PowerGrid
Habe die loggs mal entsprechend um alle Zahlen erweitert um zu sehen was übergeben wird. Zahlen sehen alle gut aus.Bei mir war den ganzen Tag EMS nicht aktiv... Sieht so aus als würde nur geregelt wenn es zum Netzbezug kommt...
-
@arnod ok eine Sache ist mir nun aufgefallen..
der Wert fürconst sID_Bat_Discharge_Limit = 'e3dc-rscp.0.EMS.SYS_SPECS.maxBatDischargPower' // Batterie Entladelimit (negativer Wert)
gibst du als negativ Wert an. und rechnest auch mit * -1...
Bei mir ist dieser allerdings positiv siehe Foto..
wolltest du vlt. mit diesem arbeiten? ...ist auch der einzige negative unter sys specs....
e3dc-rscp.0.EMS.USED_DISCHARGE_LIMIT
const sID_Bat_Discharge_Limit = 'e3dc-rscp.0.EMS.USED_DISCHARGE_LIMIT'/*Verwendetes Entladelimit*/ // Batterie Entladelimit (negativer Wert)
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
gibst du als negativ Wert an. und rechnest auch mit * -1...
Das soll auch ein positiver Wert sein.
Die Berechnung if (M_Power < Bat_Discharge_Limit_W*-1){M_Power = Bat_Discharge_Limit_W*-1;}
ist eine Abfrage, ob M_Power kleiner als die maximale Entladeleistung ist. Hier musst du beachten, dass M_Power auch ein negativer Wert sein kann, nämlich immer dann, wenn entladen werden soll. Deswegen muss ich das Vorzeichen hier umkehren, um zu prüfen, ob kleiner als z. B. -3000 ist, wenn 3000 W die max. Entladeleistung ist. -
@smartboart sagte in E3DC Hauskraftwerk steuern:
Bei mir war den ganzen Tag EMS nicht aktiv... Sieht so aus als würde nur geregelt wenn es zum Netzbezug kommt...
Es wird nur geregelt, wenn die Ladeleistung der Batterie begrenzt werden muss oder die PV-Leistung die max. WR-Leistung oder die Einspeisebegrenzung übersteigt oder am Tag zu verhindern, dass die Notstromreserve unterschritten wird. Ansonsten wird die Regelung E3DC überlassen.
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
Bei mir kommt es ständig zu Logausgabe Ladesteuerung gestoppt.
Muss dann mit der Zahl 500 spielen oder....wo kommt die 500 her...hast du die ermittelt weil es bei dir passt?
Dann gehört die in den User Konfig bereich oder...Das ist auch richtig, wenn es nichts zu regeln gibt, soll das Script nicht eingreifen.
Die 500W sind durch längere Beobachtung von mir ermittelt worden, um Netzbezug durch die träge Umschaltung von E3DC möglichst zu verhindern. Vom Script wird nur bei PV-Überschuss die Ladeleistung der Batterie auf einen berechneten Wert begrenzt. Wenn es Überschuss gibt, aber nichts begrenzt werden muss, also die Berechnung der Ladeleistung z.B ergibt, dass mit maximaler möglicher Batterieleistung geladen werden kann, dann wird die Regelung auch E3DC überlassen, da dieses Verhalten ja dem Standard entspricht und das Script nichts regeln muss. -
@smartboart sagte in E3DC Hauskraftwerk steuern:
Bei mir war den ganzen Tag EMS nicht aktiv... Sieht so aus als würde nur geregelt wenn es zum Netzbezug kommt...
Dann schauen wir uns mal sein LOG an.
Von der Zeit befindest du dich im Bereich nach Regelbeginn vor Regelende.
Die Berechnung M_Power ergibt -3157W, also müsste deine Batterie mit dieser Leistung entladen werden, um den Ziel SOC zu erreichen.
Der von dir eingestellte SOC bis Ladeende ist 70% und deine Batterie hat aber jetzt bereits 96% das bedeutet das weitere Laden der Batterie muss gestoppt werden und alles an Überschuss in das Netz eingespeist werden.
Dass du bereits 96% Batterie SOC erreicht hast, kann eigentlich nur bedeuten, dass du sehr viel Überschuss hattest und dieser in die Batterie geladen wurde, um die Einspeisegrenze einzuhalten oder die WR-Grenze.Hast du am Script bei dem LOG schon was verändert? Den eigentlich müsste das Laden der Batterie gestoppt werden und die Meldung
Schritt = 2 E3DC_Set_Power_Mode = 1
im LOG auftauchen. -
@arnod Hallo Arno, danke für deine Rückmeldungen.
Das einzige was ich angepasst habe war die modbus instanz...bei mir 1..Ebenfalls die Instanz und Pfadebene 1 habe ich angepasst...Bei den Logausgaben habe ich nur E3DC-Control: vorangestellt..zwecks Filter für den logparser Adapter. Die Schedule starts beim Scriptstart habe ich auskommentiert...//Wh_Leistungsmesser0(); // Leistungsmesser PV Leistung E3DC starten //Wh_Leistungsmesser1(); // Leistungsmesser PV Leistung zusätzliche Einspeiser starten //Wh_Leistungsmesser2(); // Leistungsmesser Überschussleistung starten
Ansosnten habe ich alles belassen. Diese Änderungen sollten allerding keinen Einfluss auf die Funktion des Scripts haben.
-
@smartboart
Kannst du mal deine Einstellungen in VIS und das LOG mit LogAusgabeRegelung = true hier einstellen?
Mich würde mal interessieren, wie das Script sich über den Tag bei dir verhält.
Warum deine Batterie bereits vor Regelende bei 96% ist und warum dann die Ladeleistung nicht auf 0W eingestellt wurde. -
@arnod danke für deine Hilfe... Mache ich natürlich.
Mir ist eben noch aufgefallen dass ich'use strict';
am Anfang des Scripts nicht mitkopiert hatte... Aber ob das zu Problemen führt?
Mir auch aufgefallen, dass der state Allgemein.Saved_PowerLM2_kWh hochgezählt hat obwohl es nix zu saven gab heute...
Die LogAusgabe stelle ich morgen ein, wenn wieder geladen wurde...
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
Mir ist eben noch aufgefallen dass ich
'use strict';
am Anfang des Scripts nicht mitkopiert hatte... Aber ob das zu Problemen führt?
Das erklärt nicht die Probleme.
Deine Einstellungen sehen schon mal gut aus.
Werden Morgen dann mit dem LOG hoffentlich schlauer sein. -
@arnod Mir ist auch aufgefallen, dass der state Allgemein.Saved_PowerLM2_kWh hochgezählt hat obwohl es nix zu saven gab heute...
-
@smartboart
Hast du eine Einspeisebegrenzung?
Der sollte eigentlich nur hochzählen, wenn die PV-Leistung über der Einspeisegrenze liegt oder über der WR-Grenze. -
@arnod ja 70 Prozent... Da kam ich aber heute nicht ran... Muss ich doch mal glatt schauen wo das Script die Info 70 Prozent her holt..
-
@smartboart
vom e3dc-rscp Adaptere3dc-rscp.0.EMS.DERATE_AT_POWER_VALUE
-
@arnod sagte in E3DC Hauskraftwerk steuern:
e3dc-rscp.0.EMS.DERATE_AT_POWER_VALUE
Haben wirs ja schon...
oder wird das tagsüber gefüllt... aktuell steht da 0W.. Wenn das heute so tagsüber war, ist das klar das es neht geht..