NEWS
E3DC Hauskraftwerk steuern
-
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. -
@arnod Eigentlich schwankt sie nur 1 % mehr habe ich noch nicht gesehen-ich will die Bat heute mal vollmachen, habe das Gefühl, dass sie das mal braucht.
-
Ich habe seit einiger Zeit eine Warnmeldung mit der ich nicht viel anfangen kann!
Hat jemand ähnliche Hinweise oder kann mir jemand einen Tipp geben was die Ursache ist?
Ich weiss Warnungen sind nicht unbedingt Fehler, aber die Log-Dateien füllen sich trotzdem. -
@goelectric Version von Github verwenden
https://github.com/git-kick/ioBroker.e3dc-rscp
Mit dieser Version sollte das Problem behoben sein. -
@tbsjah Vielen Dank! Installiert und hat funktioniert
-
@arnod sagte in E3DC Hauskraftwerk steuern:
@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.
Ist das die Stelle zum Ändern? -
Was wird hiermit eigentlich geändert? Also ich meine die letzten beiden Punkte....
-
@jh537
Nein.
Das ist die Zeile 394 im Script:
-
Da kannst du einstellen, wo die ganzen Parameter vom Script gespeichert werden.
Der Pfad baut sich aus instanz.PfadEbene1.PfadEbene2.ObjektID zusammen und wird dann im Script so verwendet:const sID_Saved_Power_W =`${instanz}.${PfadEbene1}.${PfadEbene2[1]}.Saved_Power_W`;
smartboart z.B speichert alles nicht unter "0_userdata.0", sondern im alten Pfad "javascript.0", dann muss er das im Script unter instanz ändern.