NEWS
E3DC Hauskraftwerk steuern
-
@arnod
Ok, stimmt dann mit einer Einstellung bei mir etwas nicht ganz für die Berechnung?
Der SOC hätte noch locker gereicht.
-
@psrelax sagte in E3DC Hauskraftwerk steuern:
@arnod
Ok, stimmt dann mit einer Einstellung bei mir etwas nicht ganz für die Berechnung?
Der SOC hätte noch locker gereicht.Das ist nichts was du einstellen kannst. Das Skript verwendet den berechneten Durchschnittsverbrauch von dem Tag um die Reichweite abzuschätzen und da ist bei dir 1 h und 53 min. rausgekommen.
-
@arnod
Kann man da noch irgendwie etwas machen, da ich eigentlich fast immer die selbe Ausgangssituation habe.
Hiermit würde jede Nacht nachgeladen werden, obwohl ich normalerweise mit der Restkapazität hin komme.
Eventuell einen "Korrekturfaktor"? -
@psrelax
Ein Korrekturfaktor würde nicht helfen, da es sich um eine Prognose handelt, die aus deinen täglichen Verbrauchswerten erstellt wird.
Das bedeutet z. B. du müsstest vorhersagen, an welchem Tag der Durchschnittsverbrauch vom Montag nicht dem Durchschnittsverbrauch vom Montag letzter Woche entspricht und das mit einem Faktor korrigieren.
Es wird nur der reine Hausverbrauch pro Tag zur Berechnung herangezogen, damit große Verbraucher wie Wallbox oder LW-Pumpe das Ergebnis nicht beeinflussen.
Solche Berechnungen können nie genau sein, aber treffen annähernd zu, um eine Abschätzung machen zu können.Man kann nur noch eine weitere Logik verknüpfen, z. B. wenn innerhalb der nächsten 3 h der Preis nur sinkt, dann nicht laden und warten bis der Tiefpunkt erreicht ist.
Bedeutet aber auch wenn in dem Zeitraum von 3h auch nur ein Anstieg ist, wird trotzdem sofort geladen.
Um bei deinem Tibber Diagramm zu bleiben, hätte diese Logik ab 5:00 Uhr funktioniert, aber wenn die Entscheidung um 4:00 Uhr getroffen wird, nicht mehr.
Das, was wir einfach entscheiden können, ab wann es sich rechnet zu warten und ab wann nicht, ist nicht einfach in einem Script nachzubilden. -
@arnod Hi Arno, habe heute mal dein Scrip Chargecontrol upgedatet. Von 1.4.0 auf 1.5.5
Hat sich erledigt...Danke
-
@arnod
Ich hatte gestern ein Problem mit meinem E3DC RSCP Adapter und habe ihn daraufhin neu installiert.
Seitdem bekomme ich ChargeControl nicht mehr korrekt zum Laufen. Die Fehler sagen mir nicht wirklich was, da die Zeilennummern nicht übereinstimmen.
Vielleich kannst du mir sagen, welche Werte fehlen, die dringend benötigt werden.
Danke schonmal.Das Debug Log sagt folgendes:
.0 2024-09-12 00:30:06.043 error at Ladesteuerung (script.js.E3DC_ChargeControl.Charge_Control:440:105) javascript.0 2024-09-12 00:30:06.043 error at script.js.E3DC_ChargeControl.Charge_Control:446:30 javascript.0 2024-09-12 00:30:06.043 error at Array.map (<anonymous>) javascript.0 2024-09-12 00:30:06.043 error at script.js.E3DC_ChargeControl.Charge_Control:446:49 javascript.0 2024-09-12 00:30:06.043 error script.js.E3DC_ChargeControl.Charge_Control: TypeError: Cannot read properties of null (reading 'val') javascript.0 2024-09-12 00:30:03.042 error at Object.<anonymous> (script.js.E3DC_ChargeControl.Charge_Control:2395:63) javascript.0 2024-09-12 00:30:03.042 error at Ladesteuerung (script.js.E3DC_ChargeControl.Charge_Control:440:105) javascript.0 2024-09-12 00:30:03.042 error at script.js.E3DC_ChargeControl.Charge_Control:446:30 javascript.0 2024-09-12 00:30:03.042 error at Array.map (<anonymous>) javascript.0 2024-09-12 00:30:03.042 error at script.js.E3DC_ChargeControl.Charge_Control:446:49 javascript.0 2024-09-12 00:30:03.042 error script.js.E3DC_ChargeControl.Charge_Control: TypeError: Cannot read properties of null (reading 'val') javascript.0 2024-09-12 00:30:00.031 error at Object.<anonymous> (script.js.E3DC_ChargeControl.Charge_Control:2395:63) javascript.0 2024-09-12 00:30:00.031 error at Ladesteuerung (script.js.E3DC_ChargeControl.Charge_Control:440:105) javascript.0 2024-09-12 00:30:00.031 error at processImmediate (node:internal/timers:454:9) javascript.0 2024-09-12 00:30:00.031 error at runNextTicks (node:internal/process/task_queues:60:5) javascript.0 2024-09-12 00:30:00.031 error at script.js.E3DC_ChargeControl.Charge_Control:446:30 javascript.0 2024-09-12 00:30:00.031 error at Array.map (<anonymous>) javascript.0 2024-09-12 00:30:00.030 error at script.js.E3DC_ChargeControl.Charge_Control:446:49 javascript.0 2024-09-12 00:30:00.030 error script.js.E3DC_ChargeControl.Charge_Control: TypeError: Cannot read properties of null (reading 'val')
-
Fehler gefunden.
e3dc-rscp.0.EMS.SET_POWER_MODE war leer.
Sollte das nicht der Adapter setzen oder macht das ChargeControl?
Nachdem ich 0 eingetragen habe, hat ChargeControl selbstständig Idle gesetzt und läuft automatisch.Ich weiß nicht, ob das sinnvoll ist aber kann ChargeControl bei einem leeren Feld, nicht einfach beim Start etwas setzen (0)?
-
@psrelax
Ist bei mir auch aufgetretene und ich schaue mir das an, wie diesen Fehler abfangen kann. -
Neue Version Charge-Control auf GitHub hochgeladen.
Version: 1.5.6
Änderungen:- Wenn SET_POWER_MODE = null ist, wird jetzt 0 eingetragen und nicht mehr mit einem Fehler beendet.
- Fehler bei der Erstellung Diagramm PrognoseAuto_kWh korrigiert.
- Script aufgeräumt und optimiert
-
hat sich ne Kleinigkeit eingeschlichen...
bei Autonomiezeit in h und m
istawait setStateAsync(sID_Autonomiezeit, `${currentHours}:${currentMinutes.toString().padStart(2,"0")} h / ${totalHours}:${totalMinutes.toString().padStart(2,"0")} h` );
soll:
await setStateAsync(sID_Autonomiezeit, `${currentHours}:${currentMinutes.toString().padStart(2,"0")} h / ${totalHours}:${totalMinutes.toString().padStart(2,"0")} m` );
Das Format ist auch noch nicht so ganz passend.. siehe Bild... 16 h / 32 m würde mir besser gefallen..
-
Beides sind h und m also so wäre es richtig, um bei deinem Beispiel zu bleiben:
16 h 05 m / 32 h 00 m
Links ist die Reichweite beim aktuellen Verbrauch und recht mit dem Durchschnittsverbrauch berechnet.
Da ich diesen auch in einem anderen Script verwende und der String sonst so lang wird, habe ich es mir einfach gemacht undh
angefügt und mit:
Stunden und Minuten getrennt.Vorteil ist, dass man es einfach wieder trennen kann und in jedem Script verwenden kann mit:
(await getStateAsync(sID_Autonomiezeit)).val.split(' / ')[1].split(' ')[0].split(':').map(Number);Ich weiß, das würde anders auch gehen
-
@arnod
Ich komme mit der Ladelogik noch nicht ganz klar.
Heute Nachmittag wurde der Speicher geladen, was für mich so in Ordnung war.
Jetzt in der Nacht fängt er wieder das Laden an, verstehe das bei dem Preis nicht.Wird der Strompreis der Batterie zu den 0,20€ der max. Strompreis-Freigabe hinzugerechnet?
Normalerweise müsste der aktuelle Strompreis minus Speicherstrompreis, unterhalb vom eingestellten max. Strompreis liegen, damit geladen wird.
Auch der beste Ladezeitraum sagt, dass erst morgen geladen werden soll.
Ich werd noch ned ganz schlau draus.
2024-09-14 23:00:00.337 warn script.js.E3DC_ChargeControl.Tibber: ProgrammAblauf = 1,5,9,4,3,12, javascript.0 2024-09-14 23:00:00.337 info script.js.E3DC_ChargeControl.Tibber: eAutoLaden = false javascript.0 2024-09-14 23:00:00.337 info script.js.E3DC_ChargeControl.Tibber: Power_Grid = -17 javascript.0 2024-09-14 23:00:00.337 info script.js.E3DC_ChargeControl.Tibber: Power_Bat_W = -1284 javascript.0 2024-09-14 23:00:00.337 info script.js.E3DC_ChargeControl.Tibber: BatterieLaden = true javascript.0 2024-09-14 23:00:00.337 info script.js.E3DC_ChargeControl.Tibber: bEntladenSperren = false javascript.0 2024-09-14 23:00:00.337 info script.js.E3DC_ChargeControl.Tibber: aktuellerPreisTibber = 0.287 javascript.0 2024-09-14 23:00:00.337 info script.js.E3DC_ChargeControl.Tibber: bruttoPreisBatterie = 0.1057 javascript.0 2024-09-14 23:00:00.337 info script.js.E3DC_ChargeControl.Tibber: strompreisBatterie = 0.1057 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: batteriepreisAktiv = true javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: reichweiteBatterie = 3:45 h / 5:11 m javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: prognoseLadezeitBatterie = 2 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: Batterie_SOC = 41 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: batterieKapazitaet_kWh = 15 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: PrognoseBerechnung_kWh_heute = 4.377600000000001 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: schneeBedeckt = false javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: maxStrompreisUser = 0.2 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: minStrompreis_48h = 0.1856 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: billigsterBlockPreis = 0.26305 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: billigsterEinzelpreisBlock = 0.2619 javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: besteLadezeit = 15.09. / 4:00 - 6:00 Uhr javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: timerTarget2 = Sun Sep 15 2024 11:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: timerTarget1 = Sat Sep 14 2024 23:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.0 2024-09-14 23:00:00.336 info script.js.E3DC_ChargeControl.Tibber: timerIds2 = 135567787 javascript.0 2024-09-14 23:00:00.335 info script.js.E3DC_ChargeControl.Tibber: timerIds1 = 135567773 javascript.0 2024-09-14 23:00:00.335 info script.js.E3DC_ChargeControl.Tibber: ******************* Debug LOG Tibber Skript Version 1.0.6 ******************* javascript.0 2024-09-14 23:00:00.000 warn script.js.E3DC_ChargeControl.Tibber: State 0_userdata.0.TibberSkript.OutputSignal.BatterieLaden wurde um 23:00:00 auf true gesetzt. javascript.0 2024-09-14 22:00:00.250 warn script.js.E3DC_ChargeControl.Tibber: ProgrammAblauf = 1,5,9,4,3,12, javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: eAutoLaden = false javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: Power_Grid = -27 javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: Power_Bat_W = -960 javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: BatterieLaden = false javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: bEntladenSperren = false javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: aktuellerPreisTibber = 0.2977 javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: bruttoPreisBatterie = 0.1057 javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: strompreisBatterie = 0.1057 javascript.0 2024-09-14 22:00:00.250 info script.js.E3DC_ChargeControl.Tibber: batteriepreisAktiv = true javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: reichweiteBatterie = 6:32 h / 6:35 m javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: prognoseLadezeitBatterie = 2 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: Batterie_SOC = 49 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: batterieKapazitaet_kWh = 15 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: PrognoseBerechnung_kWh_heute = 4.377600000000001 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: schneeBedeckt = false javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: maxStrompreisUser = 0.2 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: minStrompreis_48h = 0.1856 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: billigsterBlockPreis = 0.26305 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: billigsterEinzelpreisBlock = 0.2619 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: besteLadezeit = 15.09. / 4:00 - 6:00 Uhr javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: timerTarget2 = Sun Sep 15 2024 11:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: timerTarget1 = Sat Sep 14 2024 23:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: timerIds2 = 135567787 javascript.0 2024-09-14 22:00:00.249 info script.js.E3DC_ChargeControl.Tibber: timerIds1 = 135567773 javascript.0 2024-09-14 22:00:00.248 info script.js.E3DC_ChargeControl.Tibber: ******************* Debug LOG Tibber Skript Version 1.0.6 *******************
-
@psrelax sagte in E3DC Hauskraftwerk steuern:
Ich komme mit der Ladelogik noch nicht ganz klar.
Ich auch nicht
Ich habe jetzt die Logik komplett geändert.
Es gibt zwei Schwellwerte „hoher Strompreis“ und "niedriger Strompreis" die von dir nach deinen Bedürfnissen eingestellt werden können.Somit gibt es drei Bereiche, hoch zwischen hoch und niedrig und niedriger Preis.
Logik, wenn Tibber Preis über Schwellwert hoher Preis liegt:
- Entladen wird zugelassen, wenn der Tibberpreis über den Batteriepreis + Ladeverluste steigt.
- Laden wird gesperrt.
- E-Auto Laden wird gesperrt
Logik, wenn Tibber Preis unter Schwellwert hoher und über Schwellwert niedriger Preis liegt:
- Entladen wird zugelassen, wenn der Tibber Preis über den Batteriepreis + Ladeverluste steigt.
- Entladen wird gesperrt, wenn als Nächstes eine hohe Preisphase kommt und die Batterieladung dann ausreicht, um diese zu überbrücken.
- Laden wird nur zugelassen, wenn als Nächstes eine hohe Preisphase kommt, wo der Tibber Preis über den Schwellwert hoher Preis + Ladeverluste steigt und die Batterieladung nicht ausreicht, um diese Phase zu überbrücken.
- E-Auto Laden wird freigegeben
Logik, wenn Tibber Preis unter Schwellwert niedriger Preis liegt:
- Entladen wird gesperrt
- Laden wird freigegeben, wenn E-Auto nicht geladen wird.
- E-Auto Laden wird freigegeben
So kann jeder selber entscheiden, wie er die einzelnen Bereiche einteilt, sodass es für ihn passt.
Habe es jetzt aber erst zwei Tage getestet und es können immer noch Fehler enthalten sein.Neue Version 1.1.0
Bitte folgende Objekt ID's löschen:
0_userdata.0.TibberSkript.Anzeige_VIS.energieAusNetzBatterie
0_userdata.0.TibberSkript.USER_ANPASSUNGEN.maxStrompreis
Neue VIS View zum Importieren ist auch auf Github.
-
@arnod sagte in E3DC Hauskraftwerk steuern:
Danke für deine Bemühungen. Macht bestimmt nen Haufen Arbeit.
Hab dazu noch Fragen.Logik, wenn Tibber Preis über Schwellwert hoher Preis liegt:
Entladen wird zugelassen, wenn der Tibberpreis über den Batteriepreis + Ladeverluste steigt.
Wird der Batteriepreis vom Schwellwert hoher Preis abgezogen, damit schon vorher der hohe Preis anliegt?
Logik, wenn Tibber Preis unter Schwellwert hoher und über Schwellwert niedriger Preis liegt:
Entladen wird zugelassen, wenn der Tibber Preis über den Batteriepreis + Ladeverluste steigt.
Wird hier ab 10cent laden freigegeben? Verstehe das nicht ganz.
Logik, wenn Tibber Preis unter Schwellwert niedriger Preis liegt:
Entladen wird gesperrt
Laden wird freigegeben, wenn E-Auto nicht geladen wird.Wird hier nie pauschal der Speicher verwendet? Wenn genug SOC vorhanden ist, kann doch auch bei niedrigen Stromkosten aus dem Speicher gezogen werden.
Wieso wird das Laden freigegeben wenn das E-Auto nicht geladen wird? Ist hier der Speicher gemeint oder das E-Auto? Was ist wenn das E-Auto gerade geladen wird?Anmerkung zu Vis: beide Schwellwerte werden bei mir weiß angezeigt und sind somit nicht lesbar. Hab "Ohne JQuery Stil" angehakt und schon sieht man die Werte. Ich denke das hat keine Auswirkung auf die Funktion.
-
@psrelax
Warte noch mit dem Testen.
Habe heute wieder mehrere Fehler gefunden.
Ich werde das ganze erstmal bei mir ausgiebig testen und dann eine korrigierte Version hochladen.Ich denke, es macht auch Sinn eine Anleitung mit Bildern zu erstellen, damit das Ganze besser verständlich ist.
-
@arnod
Ok, habs schon bei mir eingerichtet. Ich warte -
@psrelax
Ich habe die Version 1.1.1 vom Tibber Script hochgeladen.
Ich denke, es sind sicher noch ein paar Fehler enthalten, aber die meisten sollten jetzt bereinigt sein.Wird der Batteriepreis vom Schwellwert hoher Preis abgezogen, damit schon vorher der hohe Preis anliegt?
Vom Schwellwert wird nichts abgezogen.
Beim hohen Schwellwert den Preis eintragen, ab dem du deine Batterie nicht mehr laden willst (bei mir 0,26€)
Als niedrigen Schwellwert den Preis eintragen, ab dem du sofort laden willst (bei mir 0,20€).
Zwischen hohen und niedrigen Schwellwert wird nur die Batterie geladen, wenn als Nächstes der Preis ansteigt und die aktuelle Batterieladung nicht ausreicht, um diese Hochpreisphase zu überbrücken.
Der Batteriepreis wird nur verwendet das Entladen der Batterie zu sperren, wenn der Tibber Preis günstiger ist.Wird hier nie pauschal der Speicher verwendet? Wenn genug SOC vorhanden ist, kann doch auch bei niedrigen Stromkosten aus dem Speicher gezogen werden.
Wenn der Tibber Preis unter dem niedrigen Schwellwert ist, wird die Batterie immer auf den Eingestellten SOC geladen, wenn dieser erreicht ist, wird nur dann entladen, wenn der Tibber Preis höher als der Batteriepreis ist.
Anmerkung zu Vis: beide Schwellwerte werden bei mir weiß angezeigt und sind somit nicht lesbar. Hab "Ohne JQuery Stil" angehakt und schon sieht man die Werte. Ich denke das hat keine Auswirkung auf die Funktion.
Ist bei mir nicht ausgewählt und wird trotzdem angezeigt. Hat aber keine Auswirkung auf die Funktion.
Bitte auch prüfen ob beim e3dc-rscp Adapter der TAG
TAG_EMS_REQ_BAT_SOC
das Abfrageintervall auf S eingestellt ist. -
Neue Version 1.1.2 vom Tibber Script hochgeladen.
Fehler Cannot read properties of null (reading 'getTime') behoben. -
Hi Arno,
hatte heute ein seltsames Phänomen, die Ladeleistung am Akku ist immer wieder geschwankt zwischen 3000W und ~1200W. Mir kam es so vor, als ob die Ladeleistung immer auf 3000 Watt gesetzt wurde, wenn Strom aus dem Akku entnommen wurde.
Aber Lade- bzw. Entladeleistung sind doch eigentlich getrennt (dachte ich).Anbei das Log.
Danke
StefanLog E3DC Control.txt -
@stiwy18
Das ist das Problem mit der Trägheit der Steuerung.
Deine PV-Leistung von ca. 5000 W deckt gerade so deinen Eigenverbrauch von ca. 3200 W.
5000 W - 3000 W = 2000 W - 500 W um rechtzeitig umschalten zu können und Netzbezug zu vermeiden = 1500 W Spielraum.
Immer wenn die PV-Leistung sinkt oder der Eigenverbrauch steig, kann es sein das die Regelgrenze -500 W überschritten wird und die Regelung E3DC überlassen wird.
Bis aber E3DC die Regelung wieder übernimmt dauert es bis zu 3 sek. und wenn in der Zeit aber die PV-Leistung wieder steigt oder der Hausverbrauch wieder sinkt übernimmt das Skript wieder die Regelung.
Beispiel aus deinem LOG
13:51:09
PV Leistung (5072 W) - Power_Home_W (3256W) - M_Power (3000) = - 1184 W Netzbezug Regelung wird E3DC überlassen um entladen aus der Batterie zu ermöglichen.13:51:27
PV Leistung (5236 W) - Power_Home_W (3312W) - M_Power (1355) = 569 W gerade noch über 500 W und Regelung wird wieder vom Skript übernommen.Ich kann das noch etwas optimieren indem ich M_Power reduziere , aber damit wird das gleiche Problem nur in einen anderen Bereich verschoben. Dann würde es bei dir nicht bei 5000 W PV-Leistung auftreten sondern bei 3000 W.