NEWS
E3DC Hauskraftwerk steuern
-
@arnod
Funktioniert das so einfach? Was, wenn der Parameter "e3dc-rscp.0.EMS.POWER_GRID" negativ ist, also Netzbezug vorliegt? Muss man das nicht irgendwie abfangen?
Außerdem: Kann man dem Wert einen Max-Wert mitgeben? Mein Heizstab kann bspw. max. 3000W ab. Ich habe noch nicht getestet, was er mit einem höheren Wert macht, aber in meinem Blockly-Skript fange ich das ab.
Mein Blockly sieht aber sehr sehr viel komplizierter aus Daher würde ich gerne auf diesen sehr übersichtlichen Ansatz wechseln...
-
Funktioniert das so einfach? Was, wenn der Parameter "e3dc-rscp.0.EMS.POWER_GRID" negativ ist, also Netzbezug vorliegt? Muss man das nicht irgendwie abfangen?
Bei meiner WB kann ich einstellen, ob bei positiven oder negativen Werten in das Netz eingespeist wird. Wenn der Wert dann negativ ist, weiß die WP somit das ich in das Netz einspeise und schaltet sich ein. Die Leistung der WP wird dann so geregelt, dass die Einspeiseleistung nicht überstiegen wird. Der Wert wird somit nur als max. Leistung für die WP verwendet und die WP regelt den Rest.
Wenn du das beim Heizstab nicht einstellen kannst, musst du das natürlich im Script berücksichtigen.
Das könnte dann so aussehen (e3dc-rscp.0.EMS.POWER_GRID = negativ, wenn eingespeist wird) :// Adapter e3dc-rscp const sID_Netzleistung_W = 'e3dc-rscp.0.EMS.POWER_GRID' // Modbus Eingang der Wärmepumpe const sID_WP_Aktuelle_Leistung = `modbus.2.holdingRegisters.40103_Aktuelle_Leistung` // Netzleistung an Modbus Schnittstelle LW-Pumpe Schreiben um über PV-Leistung zu regeln. on({id: sID_Netzleistung_W, change: "ne"}, async function (obj) { let n_Einspeiseleistung=0; // obj.state.val in einen positiven Wert ändern, wenn dieser negativ ist ansonsten ist n_Einspeiseleistung=0 if (obj.state.val < 0) {n_Einspeiseleistung =Math.abs(obj.state.val)}; // Prüfen ob n_Einspeiseleistung > 3000W ist if (n_Einspeiseleistung > 3000){n_Einspeiseleistung = 3000} await setStateAsync(sID_WP_Aktuelle_Leistung,n_Einspeiseleistung); });
-
Ich habe heute versucht, die Wallbox über den e3dc-rscp Adapter zu steuern.
Das Ergebnis ist, dass es nicht funktioniert und wahrscheinlich auch nie möglich sein wird, außer E3DC ändert noch mal die Schnittstelle.Mit
e3dc-rscp.0.WB.WB_0.Control.PowerLimitation
kann man zwar die Ladeleistung begrenzen, aber ich befürchte das jede Änderung auf die SSD geschrieben wird, um die Einstellung zu sichern.
Damit hätte man das gleiche Problem wie mite3dc-rscp.0.EMS.MAX_CHARGE_POWER
wo E3DC davon abgeraten hat diesen Wert ständig zu ändern, da es die Lebensdauer der SSD verkürzt.Zweites Problem ist, dass man das Laden nicht stoppen kann, wenn es mal gestartet wurde. Wenn man
e3dc-rscp.0.WB.WB_0.Control.PowerLimitation
auf 0 setzt, wird das ignoriert und eine andere Möglichkeit habe ich nicht gefunden.Ich werde somit erstmal beim Modbus Adapter bleiben, was die Wallbox betrifft.
-
@jans_ios sagte in E3DC Hauskraftwerk steuern:
@arnod
Wenn die Wallbox nicht am HKW angemeldet ist und wie bei Dir per Modbus gesteuert wird, dann landet der Wallbox-Verbrauch im Hausverbrauch. Wird die Wallbox vom HKW gesteuert, taucht der Verbrauch nicht im Hausverbrauch auf, sondern wird separat erfasst.Ja, da war was
@Georg-Hermann
Da das Script Charge_Control der Master ist, berücksichtige ich die Ladeleistung der Wallbox nicht.
Das Script E3DC_Wallbox passt die Ladeleistung Wallbox der Einspeiseleistung an, deswegen muss ich das bei Charge_Control nicht berücksichtigen. -
@arnod
Hallo Arno!Cool, das geht in die richtige Richtung Der Heizstab selbst regelt gar nichts, der würde jetzt stumpf die übermittelte Wattzahl einsetzen und Warmwasser bereiten - das wiederum erhöht jedoch dann den Hausverbrauch und verringert logischerweise die Einspeisung. Das wiederum kommt zu einem geringeren Wert, der jetzt an den Heizstab übermittelt wird und den Hausverbrauch sinken und die Einspeisung erhöhen würde - dann ginge es wieder hoch mit dem Wert für den Heizstab.
Irgendwie müsste man also den aktuell bereits am Heizstab anliegenden Wert berücksichtigen, also quasi einen um die Heizleistung des Heizstabs korrigierten Überschuss berechnen, verstehst Du?
Danke!
Viele Grüße, Jan
-
@jans_ios sagte in E3DC Hauskraftwerk steuern:
Irgendwie müsste man also den aktuell bereits am Heizstab anliegenden Wert berücksichtigen, also quasi einen um die Heizleistung des Heizstabs korrigierten Überschuss berechnen, verstehst Du?
Müsste so funktionieren, aber nicht getestet:
const sID_LeistungHeizstab_W = `` // Aktueller Verbrauch Heizstab in W const sID_PV_Leistung = 'e3dc-rscp.0.EMS.POWER_PV'; // PV_Leistung const sID_Eigenverbrauch = 'e3dc-rscp.0.EMS.POWER_HOME'; // Hausverbrauch_Leistung const sID_Netz_Leistung = 'e3dc-rscp.0.EMS.POWER_GRID'; // Einspeiseleistung const sID_Batterie_Leistung = 'e3dc-rscp.0.EMS.POWER_BAT'; // Batterie_Leistung const sID_Soll_LeistungHeizstab_W = `` // Soll Leistung Heizstab an Schnittstelle on({id: sID_PV_Leistung, change: "ne"}, async function (obj) { let BatterieLeistung_W = (await getStateAsync(sID_Batterie_Leistung)).val; let PV_Leistung_W = (await getStateAsync(sID_PV_Leistung)).val; let LeistungHeizstab_W = (await getStateAsync(sID_LeistungHeizstab_W)).val; let Hausverbrauch_W = (await getStateAsync(sID_Eigenverbrauch)).val let HeizstabLadeleistung_W= 0; let NetzLeistung_W = (await getStateAsync(sID_Netz_Leistung)).val; Hausverbrauch_W =Hausverbrauch_W - LeistungHeizstab_W; //Hausverbrauch ohne Leistung Heizstab // Prüfen ob Werte Netz oder Batterie negativ sind if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){ HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W-NetzLeistung_W); }else if (NetzLeistung_W > -500 && BatterieLeistung_W <= 0) { HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W); }else if (NetzLeistung_W > -500 && BatterieLeistung_W > 0) { HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W); }else if (NetzLeistung_W <= -500 && BatterieLeistung_W > 0){ HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W-NetzLeistung_W); } // Prüfen ob HeizstabLadeleistung_W > 3000W ist if (HeizstabLadeleistung_W > 3000){HeizstabLadeleistung_W = 3000} // Vorgabe Heizleistung an Schnittstelle übermitteln await setStateAsync(sID_Soll_LeistungHeizstab_W,HeizstabLadeleistung_W); });
-
@ArnoD
Erstmal: Danke Dir mal wieder für den Einsatz. Eine Kiste Bier ging per Paypal an Dich Dein Ansatz hilft mir sehr weiter, mich auch mal in Richtung JS weiter zu entwickeln!Ich habe das Skript minimal um die Höchsttemperatur ergänzt, die am Heizstab über einen Drehregler einzustellen ist und natürlich die Parameter für die Wattzahl ergänzt:
const sID_LeistungHeizstab_W = 'modbus.2.holdingRegisters.1000_Power' // Aktueller Verbrauch Heizstab in W const sID_PV_Leistung = 'e3dc-rscp.0.EMS.POWER_PV'; // PV_Leistung const sID_Eigenverbrauch = 'e3dc-rscp.0.EMS.POWER_HOME'; // Hausverbrauch_Leistung const sID_Netz_Leistung = 'e3dc-rscp.0.EMS.POWER_GRID'; // Einspeiseleistung const sID_Batterie_Leistung = 'e3dc-rscp.0.EMS.POWER_BAT'; // Batterie_Leistung const sID_Soll_LeistungHeizstab_W = 'modbus.2.holdingRegisters.1000_Power' // Soll Leistung Heizstab an Schnittstelle const sID_IstTempHeizstab = 'modbus.2.holdingRegisters.1001_Temp1' // Aktuelle Temperatur am Heizstab const sID_MaxTempHeizstab = 'modbus.2.holdingRegisters.1002_WW1_Temp_max' // Maximal-Temperatur lt. Drehregler am Heizstab, Skript peil 5 Grad weniger an, da Heizstab sonst selbst abregelt und sich Skript und Heizstab streiten on({id: sID_PV_Leistung, change: "ne"}, async function (obj) { let BatterieLeistung_W = (await getStateAsync(sID_Batterie_Leistung)).val; let PV_Leistung_W = (await getStateAsync(sID_PV_Leistung)).val; let LeistungHeizstab_W = (await getStateAsync(sID_LeistungHeizstab_W)).val; let Hausverbrauch_W = (await getStateAsync(sID_Eigenverbrauch)).val let HeizstabLadeleistung_W= 0; let NetzLeistung_W = (await getStateAsync(sID_Netz_Leistung)).val; let MaxTempHeizstab = (await getStateAsync(sID_MaxTempHeizstab)).val; let IstTempHeizstab = (await getStateAsync(sID_IstTempHeizstab)).val; Hausverbrauch_W =Hausverbrauch_W - LeistungHeizstab_W; //Hausverbrauch ohne Leistung Heizstab // Prüfen ob Werte Netz oder Batterie negativ sind if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){ HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W-NetzLeistung_W); }else if (NetzLeistung_W > -500 && BatterieLeistung_W <= 0) { HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W); }else if (NetzLeistung_W > -500 && BatterieLeistung_W > 0) { HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W); }else if (NetzLeistung_W <= -500 && BatterieLeistung_W > 0){ HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W-NetzLeistung_W); } // Prüfen ob HeizstabLadeleistung_W > 3000W ist if (HeizstabLadeleistung_W > 3000){HeizstabLadeleistung_W = 3000} // Prüfen ob MaxTempHeizstab - 5 Grad Reserve erreicht sind if (IstTempHeizstab >= MaxTempHeizstab-5){HeizstabLadeleistung_W = 0} // Vorgabe Heizleistung an Schnittstelle übermitteln await setStateAsync(sID_Soll_LeistungHeizstab_W,HeizstabLadeleistung_W); });
Jedoch führt das jetzt dazu, dass ChargeControl quasi "die Macht" verliert. Den Effekt habe ich auch mit meiner Blockly-Lösung. Der Heizstab bekommt dann ordentlich Strom und die Ladesteuerung von CC wird unterbrochen, sobald der dann noch verfügbare Überschuss unter der geplanten Ladeleistung für das HKW liegt. Sobald das Temp-Limit des Heizstabs erreicht wird und er auf 0 geht, lädt CC den Akku wieder geplant weiter. Der Akku wird nicht priorisiert geladen, anbei das Log dazu:
28.6.2023, 16:00:45.008 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960845001)) ====- "}## 28.6.2023, 16:00:45.052 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}## 28.6.2023, 16:00:48.007 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960848000)) ====- "}## 28.6.2023, 16:00:48.052 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}## 28.6.2023, 16:00:51.006 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960851001)) ====- "}## 28.6.2023, 16:00:51.051 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}## 28.6.2023, 16:00:54.008 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960854001)) ====- "}## 28.6.2023, 16:00:54.054 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}## 28.6.2023, 16:00:57.007 [info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960857000)) ====- "}## 28.6.2023, 16:00:57.062 [warn ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie laden. Schritt = 3 LadenStoppen = false Set_Power_Mode = 3 laden Set_Power_Value_W = 677 M_Power = 677 ====-"}## 28.6.2023, 16:01:03.111 [warn ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie laden. Schritt = 3 LadenStoppen = false Set_Power_Mode = 3 laden Set_Power_Value_W = 677 M_Power = 677 ====-"}## 28.6.2023, 16:01:09.160 [warn ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie laden. Schritt = 3 LadenStoppen = false Set_Power_Mode = 3 laden Set_Power_Value_W = 677 M_Power = 677 ====-"}## 28.6.2023, 16:01:15.190 [warn ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie laden. Schritt = 3 LadenStoppen = false Set_Power_Mode = 3 laden Set_Power_Value_W = 677 M_Power = 677 ====-"}##
Hast Du da eine Idee, wie man die Prio klar auf den Akku legen kann? Ich möchte ja wirklich ausschließlich das, was ich sonst einspeisen würde, in den Heizstab jagen...
Danke!
Gruß, Jan
-
@arnod sagte in E3DC Hauskraftwerk steuern:
Ich habe heute versucht, die Wallbox über den e3dc-rscp Adapter zu steuern.
Das Ergebnis ist, dass es nicht funktioniert und wahrscheinlich auch nie möglich sein wird, außer E3DC ändert noch mal die Schnittstelle.Mit
e3dc-rscp.0.WB.WB_0.Control.PowerLimitation
kann man zwar die Ladeleistung begrenzen, aber ich befürchte das jede Änderung auf die SSD geschrieben wird, um die Einstellung zu sichern.
Damit hätte man das gleiche Problem wie mite3dc-rscp.0.EMS.MAX_CHARGE_POWER
wo E3DC davon abgeraten hat diesen Wert ständig zu ändern, da es die Lebensdauer der SSD verkürzt.Zweites Problem ist, dass man das Laden nicht stoppen kann, wenn es mal gestartet wurde. Wenn man
e3dc-rscp.0.WB.WB_0.Control.PowerLimitation
auf 0 setzt, wird das ignoriert und eine andere Möglichkeit habe ich nicht gefunden.Ich werde somit erstmal beim Modbus Adapter bleiben, was die Wallbox betrifft.
Über den Datenpunkt "e3dc-rscp.0.WB.WB_0.Control.ToggleChargingType2" kann man umschalten zwischen Laden und nicht-Laden. Einmal auf YES umstellen ändert den Zustand von Laden auf Entladen oder andersherum, das geht.
Das mit dem Schreiben auf die SSD kann ich nicht beurteilen - wo könnte man die Info herbekommen?
Danke!
Gruß, Jan
-
Danke für die Feierabend-Halbe oder bayrisch Feierabend-Hoibe
Die einfachste Möglichkeit ist, immer wenn die Batterie entladen wird, also BatterieLeistung_W <= 0, die berechnete LeistungHeizstab_W um 3000W zu reduzieren.
Dann wird im Grenzbereich, wo die PV-Leistung gerade noch für den Heizstab reichen würde, die Leistung für die Batterie reserviert.Das würde dann so aussehen:
const sID_LeistungHeizstab_W = 'modbus.2.holdingRegisters.1000_Power' // Aktueller Verbrauch Heizstab in W const sID_PV_Leistung = 'e3dc-rscp.0.EMS.POWER_PV'; // PV_Leistung const sID_Eigenverbrauch = 'e3dc-rscp.0.EMS.POWER_HOME'; // Hausverbrauch_Leistung const sID_Netz_Leistung = 'e3dc-rscp.0.EMS.POWER_GRID'; // Einspeiseleistung const sID_Batterie_Leistung = 'e3dc-rscp.0.EMS.POWER_BAT'; // Batterie_Leistung const sID_Soll_LeistungHeizstab_W = 'modbus.2.holdingRegisters.1000_Power' // Soll Leistung Heizstab an Schnittstelle const sID_IstTempHeizstab = 'modbus.2.holdingRegisters.1001_Temp1' // Aktuelle Temperatur am Heizstab const sID_MaxTempHeizstab = 'modbus.2.holdingRegisters.1002_WW1_Temp_max' // Maximal-Temperatur lt. Drehregler am Heizstab, Skript peil 5 Grad weniger an, da Heizstab sonst selbst abregelt und sich Skript und Heizstab streiten on({id: sID_PV_Leistung, change: "ne"}, async function (obj) { let BatterieLeistung_W = (await getStateAsync(sID_Batterie_Leistung)).val; let PV_Leistung_W = (await getStateAsync(sID_PV_Leistung)).val; let LeistungHeizstab_W = (await getStateAsync(sID_LeistungHeizstab_W)).val; let Hausverbrauch_W = (await getStateAsync(sID_Eigenverbrauch)).val let HeizstabLadeleistung_W= 0; let NetzLeistung_W = (await getStateAsync(sID_Netz_Leistung)).val; let MaxTempHeizstab = (await getStateAsync(sID_MaxTempHeizstab)).val; let IstTempHeizstab = (await getStateAsync(sID_IstTempHeizstab)).val; Hausverbrauch_W =Hausverbrauch_W - LeistungHeizstab_W; //Hausverbrauch ohne Leistung Heizstab // Prüfen ob Werte Netz oder Batterie negativ sind if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){ HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W-NetzLeistung_W) - 3000; }else if (NetzLeistung_W > -500 && BatterieLeistung_W <= 0) { HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W) - 3000; }else if (NetzLeistung_W > -500 && BatterieLeistung_W > 0) { HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W); }else if (NetzLeistung_W <= -500 && BatterieLeistung_W > 0){ HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W-NetzLeistung_W); } // Prüfen ob HeizstabLadeleistung_W > 3000W ist if (HeizstabLadeleistung_W > 3000){HeizstabLadeleistung_W = 3000} // Prüfen ob MaxTempHeizstab - 5 Grad Reserve erreicht sind if (IstTempHeizstab >= MaxTempHeizstab-5){HeizstabLadeleistung_W = 0} // Vorgabe Heizleistung an Schnittstelle übermitteln await setStateAsync(sID_Soll_LeistungHeizstab_W,HeizstabLadeleistung_W); });
-
@jans_ios sagte in E3DC Hauskraftwerk steuern:
Das mit dem Schreiben auf die SSD kann ich nicht beurteilen - wo könnte man die Info herbekommen?
Mit Sicherheit von E3DC.
Bin mir aber ziemlich sicher, dass es so ist, denn sonst würde beim Ausschalten der eingestellte Wert verloren gehen. -
@arnod
Tatsächlich wird sich das Schalten auf YES nicht gemerkt - der Wert ist sofort wieder NO. Das ist wie das Drücken eines Tasters, nicht wie das Schalten eines klassischen Schalters.Danke für die Skripterei, das sehe ich mir morgen näher an!
Gruß, Jan
-
@jans_ios sagte in E3DC Hauskraftwerk steuern:
@arnod
Tatsächlich wird sich das Schalten auf YES nicht gemerkt - der Wert ist sofort wieder NO. Das ist wie das Drücken eines Tasters, nicht wie das Schalten eines klassischen Schalters.Meinte auch 'e3dc-rscp.0.WB.WB_0.Control.PowerLimitation' der Wert wird bei E3DC auf SSD gespeichert.
Da er eigentlich dafür gedacht ist, die Ladeleistung zu begrenzen und nicht ständig zu regeln. -
@arnod @jans_ios
Hm, das verhalten ist hier nach dem Update des HKWs anders. Mit laufendem CC wird in der Zeit zwischen erreichen der Ladeschwelle und Regelbeginn der Akku nicht zur Unterstützung (z.B. Haltezeit) dazu geschaltet/freigegeben.
Die WB ist wg. RFID/Abrechnung natürlich am HKW angemeldet und wird nicht per Modbus gesteuert. -
@georg-hermann
Kannst du mal bitte prüfen, ob deine Ladeleistung der WB untere3dc-rscp.0.EMS.POWER_WB_ALL
noch richtig angezeigt wird.
Habe das Update immer noch nicht, um das zu testen. -
Hi,
an meiner E3DC S10 (3000W Lade/-Entladeleistung) war der Ladewechselrichter defekt.
Da dieser wohl nicht mehr hergestellt wird hat mir der freundliche Servicemitarbeiter einen Ladewechselrichter von einem Pro Gerät mit einer Leistung von 4500W (hat er mir so gesagt, was das Foto auch bestätigt) eingebaut.Ich hab natürlich sofort versucht mithilfe von den Werten MAX_CHARGE_POWER und MAX_DISCHARGE_POWER die 4500W einzustellen leider erfolglos.
Bei Return Code hieß es dann "Value out of Range -1".
-
@timmerx
Warum soll deine Batterie auf einmal mehr Lade/Entladeleistung schaffen?
Da wurde doch nichts geändert.
Der Wechselrichter mag mehr können, aber deine Batterie nicht. -
@arnod
Klar, mache ich, wenn ich aus dem Urlaub zurück bin… -
Hallo, leider heute morgen starkes Takten der Regelung: Habe dann den E3DC-Adapter neu gestartet und dann lief es wieder-habe leider nur den kleinen Log-Auszug, aber man sieht da eine sonst nicht zu sehende Meldung:
javascript.0 2023-07-05 08:36:12.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538972001- ZeitE3DC_SetPowerAlt_ms = 1688538966001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
javascript.0 2023-07-05 08:37:06.013 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:37:00.030 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:54.013 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:48.015 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:42.014 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:36.013 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:30.014 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:24.013 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:18.055 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:18.045 info script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Vor Regelbeginn ====- "}## javascript.0 2023-07-05 08:36:18.003 warn script.js.common.Charge_Control: Ladesteuerung: Notstrom_SOC_erreicht= false NotstromVerwenden= false Batterie_SOC_Proz= 69 Notstrom_SOC_Proz= 5 javascript.0 2023-07-05 08:36:15.007 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538975001- ZeitE3DC_SetPowerAlt_ms = 1688538972001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:36:12.009 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:12.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538972001- ZeitE3DC_SetPowerAlt_ms = 1688538966001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:36:09.005 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538969000- ZeitE3DC_SetPowerAlt_ms = 1688538966001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:36:06.007 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:06.004 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538966001- ZeitE3DC_SetPowerAlt_ms = 1688538960000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:36:03.007 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538963001- ZeitE3DC_SetPowerAlt_ms = 1688538960000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:36:00.058 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:36:00.055 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538960000- ZeitE3DC_SetPowerAlt_ms = 1688538954001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:57.007 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538957001- ZeitE3DC_SetPowerAlt_ms = 1688538954001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:54.032 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:35:54.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538954001- ZeitE3DC_SetPowerAlt_ms = 1688538948000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:51.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538951001- ZeitE3DC_SetPowerAlt_ms = 1688538948000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:48.005 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:35:48.002 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538948000- ZeitE3DC_SetPowerAlt_ms = 1688538942000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:45.007 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538945001- ZeitE3DC_SetPowerAlt_ms = 1688538942000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:42.005 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:35:42.002 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538942000- ZeitE3DC_SetPowerAlt_ms = 1688538936001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:39.007 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538939001- ZeitE3DC_SetPowerAlt_ms = 1688538936001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:36.009 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:35:36.005 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538936001- ZeitE3DC_SetPowerAlt_ms = 1688538930001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:33.009 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538933002- ZeitE3DC_SetPowerAlt_ms = 1688538930001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:30.011 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:35:30.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538930001- ZeitE3DC_SetPowerAlt_ms = 1688538924002 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:27.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538927000- ZeitE3DC_SetPowerAlt_ms = 1688538924002 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:24.013 warn script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}## javascript.0 2023-07-05 08:35:24.008 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538924002- ZeitE3DC_SetPowerAlt_ms = 1688538918002 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true javascript.0 2023-07-05 08:35:21.007 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538921000- ZeitE3DC_SetPowerAlt_ms = 1688538918002 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
-
Wenn ich das richtig beobachte: Unterer Ladekorridor bspw. 500W, Wenn erreicht lädt die Regelung. Wenn die Kapa schneller steigt als berechnet bricht das Laden ab, da die Ladeleistung wieder unter den Korridor fällt. Kann man das nicht besser machen? Habe aber auch grad keine Idee... Festgestellt zb. heute beim Profil 4
-
@jh537 sagte in E3DC Hauskraftwerk steuern:
javascript.0 2023-07-05 08:36:12.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538972001- ZeitE3DC_SetPowerAlt_ms = 1688538966001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
Diese Meldung kommt wenn der Notstrom SOC erreicht wurde und dann das entladen der Batterie verhindert wird.
Das pulsen sollte eigentlich nicht mehr vorkommen.
Kannst du mal testen wie weit dein Batterie SOC schwankt wenn das entladen gestoppt wird. Hatte bei mir das Problem, das dann der Batterie SOC um 1 % wieder ansteigt und dann vom Script das entladen wieder freigegeben wurde.
Daraufhin habe ich das im Script geändert so das der Batterie SOC um min. 2% ansteigen muss, bevor das entladen freigegeben wird.