NEWS
E3DC Hauskraftwerk steuern
-
Hi, vielen Dank fĂŒr den coolen Adapter!
Ich habe bisher die Notstromreserve meines S10E ĂŒber e3dc-rscp.0.EP.PARAM_EP_RESERVE setzen können. Das funktioniert seit dem Update auf 1.4.1 leider nicht mehr. Offenbar ist ist das jetzt read only. Ich habe versucht, das im Objekt zu Ă€ndern und den write Zugriff wieder herzustellen, aber auch das geht nicht.
Im iobroker Fehlerlog steht bei Versuch die Einstellung zu Àndern:
Read-only state "e3dc-rscp.0.EP.PARAM_EP_RESERVE" has been written without ack-flag with value "4"
wobei der Value 4 das ist, was ich testweise eingegeben habe.
Gibt es eine Möglichkeit die Notstromreserve wieder setzen zu können? Das hat zuvor bei den Àlteren Versionen problemlos funktioniert.
LG
StephanIch verwende den Adapter e3dc-rscp Ver 1.4.1 und hbe der Installation die entsprechenden Objekte und die Instanz gelöscht.
Nach Neuinstallation entsprechende Parameter gesetzt und im Objektbaum werden die beiden Wallboxen angezeigt, ABER jeweils als leerer Baum.
In der App von e3dc sind beide Wallboxen aktiv und lassen sich auch ansteuern.Was mache ich falsch?
-
Ich verwende den Adapter e3dc-rscp Ver 1.4.1 und hbe der Installation die entsprechenden Objekte und die Instanz gelöscht.
Nach Neuinstallation entsprechende Parameter gesetzt und im Objektbaum werden die beiden Wallboxen angezeigt, ABER jeweils als leerer Baum.
In der App von e3dc sind beide Wallboxen aktiv und lassen sich auch ansteuern.Was mache ich falsch?
Das Forum hier hat nichts mit dem e3dc-rscp Adapter zu tun.
Ich verwende den Adapter nur fĂŒr mein Skript.Wenn ihr Fragen zum Adapter habt, dann bitte auf Github e3dc-rscp Adapter schreiben.
-
@stef99 Die Anfrage hatte ich ausgelöst!
Ebenfalls sorry fĂŒr den Beitrag. -
BezĂŒglich der angezeigten verbleibenden Speicherladung wollte ich noch kurz die RĂŒckmeldung geben, dass es nun wieder nicht ârichtigâ angezeigt wird. Mir wird ein Wert von 19,8 kWh bei vollem Akku angezeigt, bei 100% RSoC und 90% Systemeffizienz sowie 22344 Wh KapazitĂ€t.
Ein Problem habe ich noch dazu:
Der Kampf zwischen Charge Control und dem Heizstab.Da E3DC den Ăberschuss ja immer erst bei vollem Akku freigibt, habe ich fĂŒr den Ăberschuss Heizstab ein Kostal Energy Meter direkt hinter dem StromzĂ€hler der den AC-Thor steuert (4KW Heizstab).
Wenn nun E3DC die Laderegelung ĂŒbernimmt, funktioniert alles einwandfrei. (z.B. bei der Ladung von 0-60% oder bei deaktiviertem ChargeControl)
Wenn Charge Control am Steuer ist, streiten sich der AC Thor und Charge Control plötzlich um den Strom. Wenn z.B. nur 3 KW Ăberschuss da ist, und der Strom nicht fĂŒr beide gleichzeitig ausreicht, springt das im Sekundentakt hin und her zwischen Akku laden und Heizstab. Genau sowas wollen wir ja nicht. Wo liegt also der Unterschied ob e3dc selbst lĂ€dt oder Charge Control? Scheinbar ist die PrioritĂ€t der Stromverteilung hier anders. Wie kriege ich das Problem hier gelöst? -
BezĂŒglich der angezeigten verbleibenden Speicherladung wollte ich noch kurz die RĂŒckmeldung geben, dass es nun wieder nicht ârichtigâ angezeigt wird. Mir wird ein Wert von 19,8 kWh bei vollem Akku angezeigt, bei 100% RSoC und 90% Systemeffizienz sowie 22344 Wh KapazitĂ€t.
Ein Problem habe ich noch dazu:
Der Kampf zwischen Charge Control und dem Heizstab.Da E3DC den Ăberschuss ja immer erst bei vollem Akku freigibt, habe ich fĂŒr den Ăberschuss Heizstab ein Kostal Energy Meter direkt hinter dem StromzĂ€hler der den AC-Thor steuert (4KW Heizstab).
Wenn nun E3DC die Laderegelung ĂŒbernimmt, funktioniert alles einwandfrei. (z.B. bei der Ladung von 0-60% oder bei deaktiviertem ChargeControl)
Wenn Charge Control am Steuer ist, streiten sich der AC Thor und Charge Control plötzlich um den Strom. Wenn z.B. nur 3 KW Ăberschuss da ist, und der Strom nicht fĂŒr beide gleichzeitig ausreicht, springt das im Sekundentakt hin und her zwischen Akku laden und Heizstab. Genau sowas wollen wir ja nicht. Wo liegt also der Unterschied ob e3dc selbst lĂ€dt oder Charge Control? Scheinbar ist die PrioritĂ€t der Stromverteilung hier anders. Wie kriege ich das Problem hier gelöst?@da_hood sagte in E3DC Hauskraftwerk steuern:
Wo liegt also der Unterschied ob e3dc selbst lÀdt oder Charge Control?
Wie du ja selber bemerkt hast, wir bei der Regelung E3DC alles an Ăberschuss in die Batterie geladen, somit bleibt fĂŒr deinen Heizstab nichts mehr ĂŒbrig. Bei ChargeControl wird berechnet, wie viel fĂŒr die Batterieladung benötigt wird und der Rest wird eingespeist oder eben fĂŒr deinen Heizstab freigegeben. Wenn der Heizstab jetzt aber seine Leistung nicht anpasst, streiten sich zwei um den Ăberschuss.
Es gibt auf Github deswegen ein eigenes Script "my_pv Heizstab" fĂŒr den E3DC Heizstab, wo die Ladeleistung vom Heizstab an ChargeControl angepasst wird. Eventuell kannst du da was verwenden.
Zu dem Thema Heizstab kann ich dir aber nicht helfen, da ich keinen habe.
-
BezĂŒglich der angezeigten verbleibenden Speicherladung wollte ich noch kurz die RĂŒckmeldung geben, dass es nun wieder nicht ârichtigâ angezeigt wird. Mir wird ein Wert von 19,8 kWh bei vollem Akku angezeigt, bei 100% RSoC und 90% Systemeffizienz sowie 22344 Wh KapazitĂ€t.
Ein Problem habe ich noch dazu:
Der Kampf zwischen Charge Control und dem Heizstab.Da E3DC den Ăberschuss ja immer erst bei vollem Akku freigibt, habe ich fĂŒr den Ăberschuss Heizstab ein Kostal Energy Meter direkt hinter dem StromzĂ€hler der den AC-Thor steuert (4KW Heizstab).
Wenn nun E3DC die Laderegelung ĂŒbernimmt, funktioniert alles einwandfrei. (z.B. bei der Ladung von 0-60% oder bei deaktiviertem ChargeControl)
Wenn Charge Control am Steuer ist, streiten sich der AC Thor und Charge Control plötzlich um den Strom. Wenn z.B. nur 3 KW Ăberschuss da ist, und der Strom nicht fĂŒr beide gleichzeitig ausreicht, springt das im Sekundentakt hin und her zwischen Akku laden und Heizstab. Genau sowas wollen wir ja nicht. Wo liegt also der Unterschied ob e3dc selbst lĂ€dt oder Charge Control? Scheinbar ist die PrioritĂ€t der Stromverteilung hier anders. Wie kriege ich das Problem hier gelöst?@da_hood sagte in E3DC Hauskraftwerk steuern:
BezĂŒglich der angezeigten verbleibenden Speicherladung wollte ich noch kurz die RĂŒckmeldung geben, dass es nun wieder nicht ârichtigâ angezeigt wird. Mir wird ein Wert von 19,8 kWh bei vollem Akku angezeigt, bei 100% RSoC und 90% Systemeffizienz sowie 22344 Wh KapazitĂ€t.
Um den Wert
0_userdata.0.Charge_Control.Allgemein.BatteriekapazitÀt_kWhzu berechnen, werden folgende Objekt ID verwendet:
ASOC_Bat_Pro =e3dc-rscp.0.BAT.BAT_0.ASOC
Kapa_Bat_Wh =e3dc-rscp.0.BAT.BAT_0.SPECIFIED_CAPACITY(Wenn es Bat_1 gibt, dann wird hier noche3dc-rscp.0.BAT.BAT_1.SPECIFIED_CAPACITYaddiert.)
Entladetiefe_Pro =0_userdata.0.Charge_Control.USER_ANPASSUNGEN.10_maxEntladetiefeBatterie
Systemwirkungsgrad_Pro =0_userdata.0.Charge_Control.USER_ANPASSUNGEN.10_SystemwirkungsgradEs werden folgende Formeln verwendet:
Kapa_Bat_Wh = Kapa_Bat_Wh * (Entladetiefe_Pro/100);
Speichergroesse_kWh = round(((Kapa_Bat_Wh/100)ASOC_Bat_Pro)/1000,0);
Math.round((Speichergroesse_kWh(Systemwirkungsgrad_Pro/100) * BatSoc))/100 -
@da_hood sagte in E3DC Hauskraftwerk steuern:
BezĂŒglich der angezeigten verbleibenden Speicherladung wollte ich noch kurz die RĂŒckmeldung geben, dass es nun wieder nicht ârichtigâ angezeigt wird. Mir wird ein Wert von 19,8 kWh bei vollem Akku angezeigt, bei 100% RSoC und 90% Systemeffizienz sowie 22344 Wh KapazitĂ€t.
Um den Wert
0_userdata.0.Charge_Control.Allgemein.BatteriekapazitÀt_kWhzu berechnen, werden folgende Objekt ID verwendet:
ASOC_Bat_Pro =e3dc-rscp.0.BAT.BAT_0.ASOC
Kapa_Bat_Wh =e3dc-rscp.0.BAT.BAT_0.SPECIFIED_CAPACITY(Wenn es Bat_1 gibt, dann wird hier noche3dc-rscp.0.BAT.BAT_1.SPECIFIED_CAPACITYaddiert.)
Entladetiefe_Pro =0_userdata.0.Charge_Control.USER_ANPASSUNGEN.10_maxEntladetiefeBatterie
Systemwirkungsgrad_Pro =0_userdata.0.Charge_Control.USER_ANPASSUNGEN.10_SystemwirkungsgradEs werden folgende Formeln verwendet:
Kapa_Bat_Wh = Kapa_Bat_Wh * (Entladetiefe_Pro/100);
Speichergroesse_kWh = round(((Kapa_Bat_Wh/100)ASOC_Bat_Pro)/1000,0);
Math.round((Speichergroesse_kWh(Systemwirkungsgrad_Pro/100) * BatSoc))/100Hast du einen Link zu dem Heizstab Script? Ich finde es leider nicht, nur die generelle Einbindung des AC- Thor in den Iobroker.
Warum bei dir da ein anderer Wert herauskommt als bei mir weis ich nicht. Ich hab dir Variablen jetzt auch alle via Blockly berechnen lassen, und da kommt was anderes heraus đ
-
Hast du einen Link zu dem Heizstab Script? Ich finde es leider nicht, nur die generelle Einbindung des AC- Thor in den Iobroker.
Warum bei dir da ein anderer Wert herauskommt als bei mir weis ich nicht. Ich hab dir Variablen jetzt auch alle via Blockly berechnen lassen, und da kommt was anderes heraus đ
@da_hood sagte in E3DC Hauskraftwerk steuern:
Hast du einen Link zu dem Heizstab Script?
-
@da_hood sagte in E3DC Hauskraftwerk steuern:
Hast du einen Link zu dem Heizstab Script?
-
@ArnoD
Das Script funktioniert bisher einwandfrei. :-)Ich wĂŒrde gerne auch einmal manuell die Speicherladung anstoĂen, schaffe es manchmal mit der VerĂ€nderung der Konfiguration aber nicht.
Ist es möglich einen Haken (Batterie manuell laden) einzubauen, der mir die Möglichkeit gibt, unabhÀngig vom Preis einfach zu laden?
Aktuell ist es ja so, dass der Haken "Batterie laden ein" automatisch wieder vom Script zurĂŒck gestellt wird, auĂer ich beende das Script komplett.
Danke dir schonmal. -
@ArnoD
Das Script funktioniert bisher einwandfrei. :-)Ich wĂŒrde gerne auch einmal manuell die Speicherladung anstoĂen, schaffe es manchmal mit der VerĂ€nderung der Konfiguration aber nicht.
Ist es möglich einen Haken (Batterie manuell laden) einzubauen, der mir die Möglichkeit gibt, unabhÀngig vom Preis einfach zu laden?
Aktuell ist es ja so, dass der Haken "Batterie laden ein" automatisch wieder vom Script zurĂŒck gestellt wird, auĂer ich beende das Script komplett.
Danke dir schonmal.@psrelax
Möglich ist alles :-)
Ich schaue mir das mal an.Nachtrag:
Ich kann dir eine neue Objekt ID anlegen "Tibber_manuell" oder so Àhnlich und damit die Funktion tibberSteuerungHauskraftwerk() nicht mehr aufrufen.
Das wĂŒrde aber bedeuten, dass vom Skript nichts mehr gesteuert wird und du verantwortlich bist die Ladefreigabe zu setzen und wieder zu entfernen, wenn nicht mehr geladen werden soll.
Wenn dir das reicht, kann ich es schnell umsetzen. -
@psrelax
Möglich ist alles :-)
Ich schaue mir das mal an.Nachtrag:
Ich kann dir eine neue Objekt ID anlegen "Tibber_manuell" oder so Àhnlich und damit die Funktion tibberSteuerungHauskraftwerk() nicht mehr aufrufen.
Das wĂŒrde aber bedeuten, dass vom Skript nichts mehr gesteuert wird und du verantwortlich bist die Ladefreigabe zu setzen und wieder zu entfernen, wenn nicht mehr geladen werden soll.
Wenn dir das reicht, kann ich es schnell umsetzen.@arnod
Ich denke das mĂŒsste passen. :-)Nachtrag:
Ich will nochmal kurz auf den Grund meiner Anfrage eingehen.
Ich hatte es jetzt schon 2 mal, dass am Stromnetz in der nĂ€he gearbeitet wurde und das Haus vom Strom getrennt wurde (angekĂŒndigt). Darum wĂŒrde ich gerne vorher den Speicher voll laden, um die Zeit auch bei wenig PV-Ertrag ĂŒberbrĂŒcken zu können. -
@da_hood sagte in E3DC Hauskraftwerk steuern:
Hast du einen Link zu dem Heizstab Script?
Ich bin jetzt immer noch verwirrt, das Script fĂŒr den Heizstab hast aber schon du geschrieben oder?
Ich habe da leider viele Fehler:
javascript.0 18:43:45.243 error script.js.common.Heizstab: State Wallbox_Leistung is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State LeistungHeizstab is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State IstTempHeizstab is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State MaxTempHeizstab is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State SollLeistungHeizstab is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State LeistungWP is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: Fehler bei der Aktualisierung der Heizstab-Leistung:
javascript.0 18:43:45.244 error script.js.common.Heizstab: Error: One or more states are null or undefined at fetchAndUpdateHeizstabLeistung (script.js.common.Heizstab:82:19) at runNextTicks (node:internal/process/task_queues:65:5) at processImmediate (node:internal/timers:479:9)

Ich komme nicht drauf wo der Fehler liegt. Der Adapter ist modbus1 wie im Script ja hinterlegt, und die Werte sind eigentlich da ...
-
Ich bin jetzt immer noch verwirrt, das Script fĂŒr den Heizstab hast aber schon du geschrieben oder?
Ich habe da leider viele Fehler:
javascript.0 18:43:45.243 error script.js.common.Heizstab: State Wallbox_Leistung is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State LeistungHeizstab is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State IstTempHeizstab is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State MaxTempHeizstab is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State SollLeistungHeizstab is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: State LeistungWP is null or undefined
javascript.0 18:43:45.244 error script.js.common.Heizstab: Fehler bei der Aktualisierung der Heizstab-Leistung:
javascript.0 18:43:45.244 error script.js.common.Heizstab: Error: One or more states are null or undefined at fetchAndUpdateHeizstabLeistung (script.js.common.Heizstab:82:19) at runNextTicks (node:internal/process/task_queues:65:5) at processImmediate (node:internal/timers:479:9)

Ich komme nicht drauf wo der Fehler liegt. Der Adapter ist modbus1 wie im Script ja hinterlegt, und die Werte sind eigentlich da ...
Das Script ist nicht von mir, ich habe es aber angepasst, wenn Fehler aufgezeigt wurden.
Deine Fehlermeldungen kommen einfach daher, dass du die ganzen Pfade im Script nicht an dein System angepasst hast.
In dem Script musst du die Anpassungen direkt im Script machen.
Also nicht nur "modbus.1" sondern auch den Rest vom Pfad prĂŒfen.
const sID_LeistungHeizstab_W =${instanzHeizstab_Modbus}.holdingRegisters.1000_Power; // Current power consumption of heating element in WmĂŒsste bei dir so aussehen:
const sID_LeistungHeizstab_W =${instanzHeizstab_Modbus}.holdingRegisters.1.1000_Power; // Current power consumption of heating element in WDa fehlt z.B ".1" im Pfad.
-
Neue Version Charge-Control auf GitHub hochgeladen.
Version: 1.5.16
Ănderungen:- (Issues #17) Die Objekt ID 0_userdata.0.Charge_Control.Allgemein.Autonomiezeit wurde aufgeteilt in Autonomiezeit und AutonomiezeitDurchschnitt und dafĂŒr eine neue Objekt ID 0_userdata.0.Charge_Control.Allgemein.AutonomiezeitDurchschnitt angelegt.
Bitte erst nach dem Update vom e3dc-rscp Adapter auf Version 1.4.1 verwenden.
In VIS muss die View "E3DC_Uebersicht" angepasst werden, wenn man wie bis jetzt beide Werte angezeigt haben will. Auf Github gibt es dafĂŒr die Importdatei iobroker_VIS_View_E3DC_Uebersicht.js
-
Tibber Skript,
Version: 1.3.16 auf Github hochgeladen.Ănderungen:
- Neue Objekt ID
0_userdata.0.TibberSkript.USER_ANPASSUNGEN.ScriptAktivum das Script in VIS zu stoppen und wieder zu aktivieren. Damit ist es möglich manuell die Batterie zu laden, ohne dass vom Script die Anwahl "BatterieLaden" wieder geÀndert wird.
- Neue Objekt ID
-
Das Script ist nicht von mir, ich habe es aber angepasst, wenn Fehler aufgezeigt wurden.
Deine Fehlermeldungen kommen einfach daher, dass du die ganzen Pfade im Script nicht an dein System angepasst hast.
In dem Script musst du die Anpassungen direkt im Script machen.
Also nicht nur "modbus.1" sondern auch den Rest vom Pfad prĂŒfen.
const sID_LeistungHeizstab_W =${instanzHeizstab_Modbus}.holdingRegisters.1000_Power; // Current power consumption of heating element in WmĂŒsste bei dir so aussehen:
const sID_LeistungHeizstab_W =${instanzHeizstab_Modbus}.holdingRegisters.1.1000_Power; // Current power consumption of heating element in WDa fehlt z.B ".1" im Pfad.
@arnod said in E3DC Hauskraftwerk steuern:
Das Script ist nicht von mir, ich habe es aber angepasst, wenn Fehler aufgezeigt wurden.
Deine Fehlermeldungen kommen einfach daher, dass du die ganzen Pfade im Script nicht an dein System angepasst hast.
In dem Script musst du die Anpassungen direkt im Script machen.
Also nicht nur "modbus.1" sondern auch den Rest vom Pfad prĂŒfen.
const sID_LeistungHeizstab_W =${instanzHeizstab_Modbus}.holdingRegisters.1000_Power; // Current power consumption of heating element in WmĂŒsste bei dir so aussehen:
const sID_LeistungHeizstab_W =${instanzHeizstab_Modbus}.holdingRegisters.1.1000_Power; // Current power consumption of heating element in WDa fehlt z.B ".1" im Pfad.
Vielen Dank, das wusste ich nicht bin davon ausgegangen dass es passt weil ja weiter oben bereits modbus1 definiert wurde. Leider geht es aber immer noch nicht wegen der Wallbox. Ich habe keine Wallbox und er will da unbedingt einen Wert. Leer lassen geht nicht. Ein "Fake" Objekt mit Wert "0" funktioniert auch nicht. Und mir ist aufgefallen dass Charge Control bei aktuell berechneter Ladeleistung immer ĂŒber 12000 Watt meldet obwohl der Akku bereits voll ist. Das wird auch zu Fehlberechnungen fĂŒhren da dies ja mitgerechnet wird?
Was kann ich da machen?
const sID_Wallbox_Leistung =
modbus.1.inputRegisters.120_Leistung_aktuell; // Wallbox power@arnod said in E3DC Hauskraftwerk steuern:
Neue Version Charge-Control auf GitHub hochgeladen.
Version: 1.5.16
Ănderungen:- (Issues #17) Die Objekt ID 0_userdata.0.Charge_Control.Allgemein.Autonomiezeit wurde aufgeteilt in Autonomiezeit und AutonomiezeitDurchschnitt und dafĂŒr eine neue Objekt ID 0_userdata.0.Charge_Control.Allgemein.AutonomiezeitDurchschnitt angelegt.
Bitte erst nach dem Update vom e3dc-rscp Adapter auf Version 1.4.1 verwenden.
In VIS muss die View "E3DC_Uebersicht" angepasst werden, wenn man wie bis jetzt beide Werte angezeigt haben will. Auf Github gibt es dafĂŒr die Importdatei iobroker_VIS_View_E3DC_Uebersicht.js
Mega, danke dir fĂŒrs umsetzen!! :)
-
Neue Version Charge-Control auf GitHub hochgeladen.
Version: 1.5.16
Ănderungen:- (Issues #17) Die Objekt ID 0_userdata.0.Charge_Control.Allgemein.Autonomiezeit wurde aufgeteilt in Autonomiezeit und AutonomiezeitDurchschnitt und dafĂŒr eine neue Objekt ID 0_userdata.0.Charge_Control.Allgemein.AutonomiezeitDurchschnitt angelegt.
Bitte erst nach dem Update vom e3dc-rscp Adapter auf Version 1.4.1 verwenden.
In VIS muss die View "E3DC_Uebersicht" angepasst werden, wenn man wie bis jetzt beide Werte angezeigt haben will. Auf Github gibt es dafĂŒr die Importdatei iobroker_VIS_View_E3DC_Uebersicht.js
@arnod sagte in E3DC Hauskraftwerk steuern:
Danke fĂŒrs schnelle umsetzen :-)
iobroker_VIS_View_E3DC_Uebersicht.js
Ist aber nicht aktuell vorhanden.
Noch eine Bitte habe ich.
Kannst du bitte z.B. den Programmablauf als "Info" ausgeben, damit in den Logs nicht immer "Fehler" gekennzeichnet werden?Nachtrag:
Ich habe das Script jetzt einmal getestet. Funktioniert soweit einwandfrei.
Kann es sein, dass die maximale Ladeleistung, die man einstellen kann mittlerweile generell ignoriert wird?
Auch wenn ich die Script Steuerung an lasse und kurz die Ladung starte (hÀlt ja ca. 1 Minute), startet die Ladung immer mit voller Leistung. -
@arnod said in E3DC Hauskraftwerk steuern:
Das Script ist nicht von mir, ich habe es aber angepasst, wenn Fehler aufgezeigt wurden.
Deine Fehlermeldungen kommen einfach daher, dass du die ganzen Pfade im Script nicht an dein System angepasst hast.
In dem Script musst du die Anpassungen direkt im Script machen.
Also nicht nur "modbus.1" sondern auch den Rest vom Pfad prĂŒfen.
const sID_LeistungHeizstab_W =${instanzHeizstab_Modbus}.holdingRegisters.1000_Power; // Current power consumption of heating element in WmĂŒsste bei dir so aussehen:
const sID_LeistungHeizstab_W =${instanzHeizstab_Modbus}.holdingRegisters.1.1000_Power; // Current power consumption of heating element in WDa fehlt z.B ".1" im Pfad.
Vielen Dank, das wusste ich nicht bin davon ausgegangen dass es passt weil ja weiter oben bereits modbus1 definiert wurde. Leider geht es aber immer noch nicht wegen der Wallbox. Ich habe keine Wallbox und er will da unbedingt einen Wert. Leer lassen geht nicht. Ein "Fake" Objekt mit Wert "0" funktioniert auch nicht. Und mir ist aufgefallen dass Charge Control bei aktuell berechneter Ladeleistung immer ĂŒber 12000 Watt meldet obwohl der Akku bereits voll ist. Das wird auch zu Fehlberechnungen fĂŒhren da dies ja mitgerechnet wird?
Was kann ich da machen?
const sID_Wallbox_Leistung =
modbus.1.inputRegisters.120_Leistung_aktuell; // Wallbox power@arnod said in E3DC Hauskraftwerk steuern:
Neue Version Charge-Control auf GitHub hochgeladen.
Version: 1.5.16
Ănderungen:- (Issues #17) Die Objekt ID 0_userdata.0.Charge_Control.Allgemein.Autonomiezeit wurde aufgeteilt in Autonomiezeit und AutonomiezeitDurchschnitt und dafĂŒr eine neue Objekt ID 0_userdata.0.Charge_Control.Allgemein.AutonomiezeitDurchschnitt angelegt.
Bitte erst nach dem Update vom e3dc-rscp Adapter auf Version 1.4.1 verwenden.
In VIS muss die View "E3DC_Uebersicht" angepasst werden, wenn man wie bis jetzt beide Werte angezeigt haben will. Auf Github gibt es dafĂŒr die Importdatei iobroker_VIS_View_E3DC_Uebersicht.js
Mega, danke dir fĂŒrs umsetzen!! :)
@da_hood
Da musst du das Script an deine BedĂŒrfnisse anpassen :-)Hier mal ohne Wallbox:
// Script my-pv Heizstab Version 1.0.2 // defintion which instances has to be used const instanzE3DC_RSCP = 'e3dc-rscp.0' const instanzHeizstab_Modbus = 'modbus.1' // E3DC Komponenten Definition const sID_PV_Leistung = `${instanzE3DC_RSCP}.EMS.POWER_PV`; // PV power const sID_Netz_Leistung = `${instanzE3DC_RSCP}.EMS.POWER_GRID`; // Grid power const sID_Batterie_Leistung = `${instanzE3DC_RSCP}.EMS.POWER_BAT`; // Battery power const sID_Power_Mode = `${instanzE3DC_RSCP}.EMS.MODE`; // Power mode state const sID_Batterie_Status = `${instanzE3DC_RSCP}.EMS.BAT_SOC`; // Battery status state const sID_Bat_Charge_Limit = `${instanzE3DC_RSCP}.EMS.SYS_SPECS.maxBatChargePower`;// Batterie Ladelimit // selbst definierte Variablen const sID_Eigenverbrauch = '0_userdata.0.Charge_Control.Allgemein.Hausverbrauch'; // Household consumption power const sID_M_Power_W = '0_userdata.0.Charge_Control.Allgemein.Akt_Berechnete_Ladeleistung_W'; // Calculated required charging power const sID_LeistungLW_Pumpe_W = 'modbus.2.holdingRegisters.40104_Leistung_aller_WP'; // Pfad zu den Leistungswerte WĂ€rmepumpe eintragen ansonsten leer lassen // Heistab Modbus Variablen const sID_LeistungHeizstab_W = `${instanzHeizstab_Modbus}.holdingRegisters.1000_Power`; // Current power consumption of heating element in W const sID_Soll_LeistungHeizstab_W = `${instanzHeizstab_Modbus}.holdingRegisters.1000_Power`; // Target heating element power const sID_IstTempHeizstab = `${instanzHeizstab_Modbus}.holdingRegisters.1001_Temp1`; // Current temperature at the heating element const sID_MaxTempHeizstab = `${instanzHeizstab_Modbus}.holdingRegisters.1002_WW1_Temp_max`; // Maximum temperature // Heistab states manuell zu erstellen fĂŒr Statistikwerte const sID_previousHeizstabLeistung_W = '0_userdata.0.Heizung.E3DC.previousHeizstabLeistung'; // Previous heating element load power const sID_Heizstab_Gesamtenergie = '0_userdata.0.Heizung.E3DC.Heizstab_Gesamtenergie'; // Cumulative energy const sID_Heizstab_LetzteAktualisierung = '0_userdata.0.Heizung.E3DC.Heizstab_LetzteAktualisierung'; // Last update // Defintion von Heizstabparametern und Sicherheitsmechanismen const debounceInterval = 3000; // Minimum interval between updates in milliseconds const temperatureBuffer = 3; // Buffer in degrees Celsius to prevent frequent on/off cycling const minimumHeizstabLeistung = 300; // Minimum power for heating element const sicherheitspuffer = 300; // Safety buffer to avoid frequent switching const MaximalLeistungHeizstab_W = 3000; // Maximum power in watt of the heating element let debounceTimer; async function fetchAndUpdateHeizstabLeistung() { try { // ZustĂ€nde abfragen const states = await Promise.all([ getStateAsync(sID_Netz_Leistung), getStateAsync(sID_LeistungHeizstab_W), getStateAsync(sID_Eigenverbrauch), getStateAsync(sID_M_Power_W), getStateAsync(sID_Batterie_Leistung), getStateAsync(sID_IstTempHeizstab), getStateAsync(sID_MaxTempHeizstab), getStateAsync(sID_PV_Leistung), getStateAsync(sID_Soll_LeistungHeizstab_W), getStateAsync(sID_Power_Mode), getStateAsync(sID_Batterie_Status), getStateAsync(sID_Bat_Charge_Limit), sID_LeistungLW_Pumpe_W ? getStateAsync(sID_LeistungLW_Pumpe_W) : Promise.resolve({ val: 0 }) ]); const [ Netz_Leistung, LeistungHeizstab, Eigenverbrauch, M_Power, Batterie_Leistung, IstTempHeizstab, MaxTempHeizstab, PV_Leistung, SollLeistungHeizstab, Power_Mode, Batterie_Status, Bat_Charge_Limit, LeistungWP ] = states; // Ensure all states are fetched correctly const stateNames = [ 'Netz_Leistung', 'LeistungHeizstab', 'Eigenverbrauch', 'M_Power', 'Batterie_Leistung', 'IstTempHeizstab', 'MaxTempHeizstab', 'PV_Leistung', 'SollLeistungHeizstab', 'Power_Mode', 'Batterie_Status', 'Bat_Charge_Limit', 'LeistungWP' ]; stateNames.forEach((name, index) => { if (states[index] === null || states[index] === undefined) { console.error(`State ${name} is null or undefined`); } }); if (states.some(state => state === null || state === undefined)) { throw new Error('One or more states are null or undefined'); } // Werte extrahieren let [ NetzLeistung_W, LeistungHeizstab_W, Hausverbrauch_W, M_Power_W, BatterieLeistung_W, IstTemp, MaxTemp, PV_Leistung_W, SollLeistungHeizstab_W, PowerMode, BatterieStatus, Charge_Limit, LeistungWP_W ] = states.map(state => state.val); console.log(`ZustĂ€nde abgefragt: Netz=${NetzLeistung_W}W, PV=${PV_Leistung_W}W, Hausverbrauch=${Hausverbrauch_W}W, LeistungHeizstab=${LeistungHeizstab_W}W, Batterie=${BatterieLeistung_W}W, IstTemp=${IstTemp}°C, MaxTemp=${MaxTemp}°C, SollLeistungHeizstab=${SollLeistungHeizstab_W}W, PowerMode=${PowerMode}, BatterieStatus=${BatterieStatus}, Charge_Limit=${Charge_Limit}, M_Power_W=${M_Power_W}W, LeistungWP = ${LeistungWP}W`); // Bedingungen prĂŒfen if (PowerMode === 2) { if (Charge_Limit === M_Power_W && NetzLeistung_W < -Math.abs(minimumHeizstabLeistung + 500)) { M_Power_W = BatterieLeistung_W; } } else { M_Power_W = 0; } // VerfĂŒgbaren Ăberschuss berechnen let verfuegbarerUeberschuss_W = PV_Leistung_W - Hausverbrauch_W - M_Power_W- LeistungWP_W - sicherheitspuffer; // VerfĂŒgbarer Ăberschuss unter BerĂŒcksichtigung von PV-Leistung, Hausverbrauch, WĂ€rmepumpe, Soll-Ladeleistung und Sicherheitspuffer verfuegbarerUeberschuss_W = Math.max(verfuegbarerUeberschuss_W, 0); // Stellen Sie sicher, dass der Wert nicht negativ wird if (M_Power_W !== 0) { verfuegbarerUeberschuss_W -= sicherheitspuffer; } // Heizstab-Leistung bestimmen let HeizstabLadeleistung_W = 0; if (IstTemp < MaxTemp - temperatureBuffer && verfuegbarerUeberschuss_W >= minimumHeizstabLeistung) { // Stellen Sie sicher, dass die Temperaturbedingung mit Puffer erfĂŒllt ist und die Mindestleistung verfĂŒgbar ist HeizstabLadeleistung_W = Math.min(verfuegbarerUeberschuss_W, MaximalLeistungHeizstab_W); // Begrenzen Sie auf 3000W oder verfĂŒgbare Energie } else { HeizstabLadeleistung_W = 0; // Heizstab ausschalten, wenn die Bedingungen nicht erfĂŒllt sind } await setStateAsync(sID_Soll_LeistungHeizstab_W, HeizstabLadeleistung_W); // Aktualisiere den vorherigen Wert der Heizstabladeleistung await setStateAsync(sID_previousHeizstabLeistung_W, HeizstabLadeleistung_W); // Kumulierte Energieberechnung, Aktualisierung und Logging const jetzt = Date.now(); const letzteAktualisierung = await getStateAsync(sID_Heizstab_LetzteAktualisierung); const vergangeneZeitInStunden = (jetzt - (letzteAktualisierung.val || 0)) / (1000 * 60 * 60); const verbrauchteEnergie = (LeistungHeizstab_W * vergangeneZeitInStunden) / 1000; // In kWh umrechnen const aktuelleGesamtenergie = (await getStateAsync(sID_Heizstab_Gesamtenergie)).val || 0; const neueGesamtenergie = aktuelleGesamtenergie + verbrauchteEnergie; await setStateAsync(sID_Heizstab_Gesamtenergie, neueGesamtenergie); await setStateAsync(sID_Heizstab_LetzteAktualisierung, jetzt); console.log(`Update: Netz=${NetzLeistung_W}W, PV=${PV_Leistung_W}W, Heizstab=${HeizstabLadeleistung_W}W, Ăberschuss=${verfuegbarerUeberschuss_W}W`); } catch (error) { // @ts-ignore console.error('Fehler bei der Aktualisierung der Heizstab-Leistung:', error.message); console.error(error.stack); } } function debounceUpdate() { if (debounceTimer) return; fetchAndUpdateHeizstabLeistung(); debounceTimer = setTimeout(() => { debounceTimer = null; }, debounceInterval); } // Register listeners for relevant state changes const ids = [ sID_PV_Leistung, sID_Netz_Leistung, sID_Eigenverbrauch, sID_Batterie_Leistung, sID_LeistungHeizstab_W, sID_M_Power_W, sID_Power_Mode, sID_Batterie_Status ]; ids.forEach(id => { on({ id, change: "ne" }, debounceUpdate); console.log(`Listener registered for ${id}`); }); // Initial call fetchAndUpdateHeizstabLeistung();
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden