NEWS
E3DC Hauskraftwerk steuern
-
Neue Version Charge-Control auf GitHub hochgeladen.
Version: 1.5.2
Änderungen:- Fehler behoben, dass eingestellter Notstrom SOC ignoriert wurde.
-
Kannst du bei einem nächsten Update mal schauen, dass die Notstromreserve nicht kleiner als 0 sein darf. Danke!
-
@arnod
Notstrom hat heut früh erst einmal funktioniert.
Mehr werde ich heut Nacht sehen. -
@malei
Funktioniert das überhaupt, dass man das kleiner einstellt? -
Nein, es geht um die durch die Automatik berechnete Notstromreserve. Eingestellt werden kann 'Notstrom min' und 'Notstrom Sockel'. Bei mir sind 25 % bzw. 5 % eingestellt und die berechnete Notstromreserve beträgt aktuell - 6 % ...
-
@malei
jetzt verstehe ich was du meinst. Ist mir auch mal aufgefallen. -
Hallo Arno Habe auf 1.52 upgedatet
mir fehlen im View Chargecontrol 2 WerteDer Wert Eigenverbrauch ist bei mir 0 und eigenverbrauch durchschnitt gibt es nicht.
habe ich da einen Fehler oder sind die umbenanntGruß Stephan
-
@malei sagte in E3DC Hauskraftwerk steuern:
Kannst du bei einem nächsten Update mal schauen, dass die Notstromreserve nicht kleiner als 0 sein darf. Danke!
Ist in der nächsten Version behoben. Danke für den Hinweis.
-
@stephan61
eingestellter Eigenverbrauch sollte die Objekt ID0_userdata.0.Charge_Control.Allgemein.EigenverbrauchTag
enthalten.
Eigenverbrauch durchschnitt hast du recht, der ist mit der Umstellung abhandengekommen.
Ist mir nicht aufgefallen, da ich das über das Tibber Script noch mal angezeigt bekomme.
Werde ich mit der nächsten Version wieder hinzufügen. Danke für den Hinweis. -
@arnod
Ich habe jetzt mal die Tibber VIS und das Script soweit eingerichtet.
Im Script habe ich das folgende verändert, was evtl. Sinnvoll ist:const TibberID = 'xxx'
und dann überall die Variable statt der ID hinterlegt.
Besser wäre aber das in den "User_Anpassungen" einzupflegen.Das Script läuft soweit ohne Fehler.
Wenn ich über Vis die Steuerung aktiviere, erhalte ich folgendes:javascript.0 21:01:57.482 warn script.js.E3DC_ChargeControl.Charge_Control: ##{"from":"Charge-Control", "message":"-==== User Parameter 10_ScriptTibber wurde in true geändert ====-"}## javascript.0 21:01:57.500 error script.js.E3DC_ChargeControl.Charge_Control: TypeError: Cannot read properties of null (reading 'val') javascript.0 21:01:57.501 error at CheckState (script.js.E3DC_ChargeControl.Charge_Control:363:85) javascript.0 21:01:57.501 error at Object.<anonymous> (script.js.E3DC_ChargeControl.Charge_Control:2251:5) javascript.0 21:03:17.038 warn script.js.E3DC_ChargeControl.Charge_Control: ##{"from":"Charge-Control", "message":"-==== User Parameter 10_ScriptTibber wurde in false geändert ====-"}##
Aus der Bedienung in Vis werde ich noch nicht so ganz schlau.
"Batterie aus Netz laden bis SOC" -> Ist aktuell noch ein fester Wert, bis wohin geladen werden soll, wenn der Preis stimmt
"max. Ladeleistung Batterie" -> Ladeleistung für die Ladung
"min. Strompreis ab dem geladen wird" -> Strompreis, welcher niedriger oder gleich sein muss, um die Ladung zum obigen SOC zu starten -> würde ich eher Maximaler Strompreis nennen
Die Funktion von "Entladesperre", "Batterie Laden" und "E-Auto Laden" ergibt für mich noch keinen Sinn, kommt aber vll. noch.
Die "Prognose Ladezeit Batterie" passt meiner Meinung nach nicht, da ich für ca. 2%, 5 Std. angezeigt bekomme.
"Bester Ladezeitraum innerhalb Reichweite" sieht gut aus.
Die Daten aus Tibber Puls hab ich noch nicht gemacht, da sie ja nicht nötig sind. Wollte jetzt nicht an meiner Bridge herumdoktern.Hier noch die Debug Ausgabe des Tibber Scripts.
javascript.0 21:17:26.477 info script.js.E3DC_ChargeControl.Tibber: ******************* Debug LOG Tibber Skript ******************* javascript.0 21:17:26.477 info script.js.E3DC_ChargeControl.Tibber: timerIds1 = 48794938 timerIds2 = 48795017 javascript.0 21:17:26.478 info script.js.E3DC_ChargeControl.Tibber: timerTarget1 = Thu Aug 22 2024 00:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) timerTarget2 = Fri Aug 23 2024 00:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.0 21:17:26.478 info script.js.E3DC_ChargeControl.Tibber: blockpreisTimer = 0.18402 javascript.0 21:17:26.478 info script.js.E3DC_ChargeControl.Tibber: billigsterEinzelpreisBlock = Infinity javascript.0 21:17:26.478 info script.js.E3DC_ChargeControl.Tibber: minStrompreis_48h = 0.181 javascript.0 21:17:26.478 info script.js.E3DC_ChargeControl.Tibber: minStrompreisUser = 0.45 javascript.0 21:17:26.478 warn script.js.E3DC_ChargeControl.Tibber: ProgrammAblauf = 0,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,4,3,3,1,2,5,1,2,4,3,3,1,2,4,3,3,
-
@psrelax sagte in E3DC Hauskraftwerk steuern:
Im Script habe ich das folgende verändert, was evtl. Sinnvoll ist:
Wofür benötigst du die Konstante TibberID='xxx' ? Das habe ich nicht verstanden.
Wenn ich über Vis die Steuerung aktiviere, erhalte ich folgendes:
javascript.0 21:01:57.500 error script.js.E3DC_ChargeControl.Charge_Control: TypeError: Cannot read properties of null (reading 'val')Das deutet darauf hin, dass versucht wird ein Wert zu lesen, wo der Pfad, also die ID nicht stimmt.
ChargeControl verwendet feste Pfade für die Tibber Skript Schnittstelle, bitte diese nicht ändern oder auch im Skript ChargeControl anpassen.
Für die Ladefreigabe und Ladesperre wird0_userdata.0.Tibber.OutputSignal
verwendet.
Das Objekt BatterieEntladesperre um das entladen zu sperren (im Tibber Skript noch nicht umgesetzt)
BatterieLaden für die Ladefreigabe (im Tibber Skript nur zum Teil umgesetzt)
eAutoLaden für die Freigabe der Wallbox (im Tibber Skript noch nicht umgesetzt)Aus der Bedienung in Vis werde ich noch nicht so ganz schlau.
"Batterie aus Netz laden bis SOC" -> Ist aktuell noch ein fester Wert, bis wohin geladen werden soll, wenn der Preis stimmtRichtig, ist bereits umgesetzt und sollte funktionieren.
"max. Ladeleistung Batterie" -> Ladeleistung für die Ladung
Richtig.
"min. Strompreis ab dem geladen wird" -> Strompreis, welcher niedriger oder gleich sein muss, um die Ladung zum obigen SOC zu starten -> würde ich eher Maximaler Strompreis nennen
Richtig, war erst anders geplant und wird umbenannt.
Die "Prognose Ladezeit Batterie" passt meiner Meinung nach nicht, da ich für ca. 2%, 5 Std. angezeigt bekomme.
Die Prognose Ladezeit berechnet den Batterie SOC anhand dem Durchschnittsverbrauch Tag/Nacht bei Erreichen der Ladezeit und zeigt an, wie lange es dann dauern würde, die Batterie auf den eingestellten max. SOC zu laden.
Wird benötigt, um dann den entsprechend günstigsten zusammenhängenden Stundenblock zu finden. -
@arnod sagte in E3DC Hauskraftwerk steuern:
@psrelax sagte in E3DC Hauskraftwerk steuern:
Im Script habe ich das folgende verändert, was evtl. Sinnvoll ist:
Wofür benötigst du die Konstante TibberID='xxx' ? Das habe ich nicht verstanden.
Im Tibber Script ist deine Tibberlink-ID. Diese musste ich ersetzen. Da sie an mehreren Stellen enthalten ist, sollte sie als Variable definiert werden, bzw. bei User Anpassungen.Wenn ich über Vis die Steuerung aktiviere, erhalte ich folgendes:
javascript.0 21:01:57.500 error script.js.E3DC_ChargeControl.Charge_Control: TypeError: Cannot read properties of null (reading 'val')Das deutet darauf hin, dass versucht wird ein Wert zu lesen, wo der Pfad, also die ID nicht stimmt.
ChargeControl verwendet feste Pfade für die Tibber Skript Schnittstelle, bitte diese nicht ändern oder auch im Skript ChargeControl anpassen.
Da ich den Teilbaum "Tibber" bereits anderweitig verwenden, habe ich ihn im Tibber-Script abgeändert.. Nachdem ich es auch im ChargeControl-Script geändert hatte, hat es funktioniert.
Für die Ladefreigabe und Ladesperre wird0_userdata.0.Tibber.OutputSignal
verwendet.
Ok, das bezieht sich auf die Wallbox Funktion. Da ich keine E3DC Wallbox habe, kann ich das nicht testen.
Das Objekt BatterieEntladesperre um das entladen zu sperren (im Tibber Skript noch nicht umgesetzt)
BatterieLaden für die Ladefreigabe (im Tibber Skript nur zum Teil umgesetzt)
eAutoLaden für die Freigabe der Wallbox (im Tibber Skript noch nicht umgesetzt)Aus der Bedienung in Vis werde ich noch nicht so ganz schlau.
"Batterie aus Netz laden bis SOC" -> Ist aktuell noch ein fester Wert, bis wohin geladen werden soll, wenn der Preis stimmtRichtig, ist bereits umgesetzt und sollte funktionieren.
"max. Ladeleistung Batterie" -> Ladeleistung für die Ladung
Richtig.
"min. Strompreis ab dem geladen wird" -> Strompreis, welcher niedriger oder gleich sein muss, um die Ladung zum obigen SOC zu starten -> würde ich eher Maximaler Strompreis nennen
Richtig, war erst anders geplant und wird umbenannt.
Die "Prognose Ladezeit Batterie" passt meiner Meinung nach nicht, da ich für ca. 2%, 5 Std. angezeigt bekomme.
Die Prognose Ladezeit berechnet den Batterie SOC anhand dem Durchschnittsverbrauch Tag/Nacht bei Erreichen der Ladezeit und zeigt an, wie lange es dann dauern würde, die Batterie auf den eingestellten max. SOC zu laden.
Wird benötigt, um dann den entsprechend günstigsten zusammenhängenden Stundenblock zu finden.Ich denke der Programmablauf stimmt noch nicht so ganz, oder?
javascript.0 19:44:16.628 warn script.js.E3DC_ChargeControl.Tibber: ProgrammAblauf = 0,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,4,3,3,1,2,5,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,6,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5, javascript.0 19:44:54.299 warn script.js.E3DC_ChargeControl.Tibber: -==== User Parameter minStrompreis wurde in 0.71 geändert ====- javascript.0 19:44:54.341 warn script.js.E3DC_ChargeControl.Tibber: Timer gelöscht javascript.0 19:44:54.341 info script.js.E3DC_ChargeControl.Tibber: ******************* Debug LOG Tibber Skript ******************* javascript.0 19:44:54.341 info script.js.E3DC_ChargeControl.Tibber: timerIds1 = undefined timerIds2 = undefined javascript.0 19:44:54.341 info script.js.E3DC_ChargeControl.Tibber: timerTarget1 = undefined timerTarget2 = undefined javascript.0 19:44:54.341 info script.js.E3DC_ChargeControl.Tibber: blockpreisTimer = 0.18712857142857145 javascript.0 19:44:54.341 info script.js.E3DC_ChargeControl.Tibber: billigsterEinzelpreisBlock = Infinity javascript.0 19:44:54.341 info script.js.E3DC_ChargeControl.Tibber: minStrompreis_48h = 0.181 javascript.0 19:44:54.341 info script.js.E3DC_ChargeControl.Tibber: minStrompreisUser = 0.71 javascript.0 19:44:54.342 warn script.js.E3DC_ChargeControl.Tibber: ProgrammAblauf = 0,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,4,3,3,1,2,5,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,6,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,4,3,3,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,1,2,5,
Mit der folgenden Einstellung startet die Ladung des Akkus nicht:
-
@psrelax
Ich habe eine neue Version hochgeladen, wo einige Fehler bereits korrigiert sind.
Ich habe die Objekt-ID jetzt vonTibber
inTibberSkript
geändert, sonst musst du jedes Mal die Änderungen aufs neue machen und werde das auch in ChargeControl und in der VIS anpassen. -
Neue Version Charge-Control auf GitHub hochgeladen.
Version: 1.5.3
Änderungen:- Kleinere Optimierungen und Fehler behoben für das Tibber Skript.
- Neues Objekt
0_userdata.0.Charge_Control.Allgemein.EigenverbrauchDurchschnitt
erstellt, für die Anzeige vom Durchschnittsverbrauch Tag / Nacht in VIS. - Fehler behoben, dass die Berechnung Notstromreserve <0 sein konnte. (Danke an @MaLei für den Hinweis)
-
Habe nach Update auf 1.5.3 wieder den Fehler
javascript.0 17:45:31.220 info script.js.common.E3DC.Charge_Control: Fehler bei der Berechnung des reinen Hausverbrauchs: Cannot read properties of null (reading 'val')
-
@arnod
Danke für die VereinfachungenHab beide Scripte und auch Vis übernommen.
Soweit läuft alles.
Die Ladung startet allerdings nicht von alleine.
Wenn ich manuell "0_userdata.0.TibberSkript.OutputSignal.BatterieLaden" auf true setze, startet die Ladung.
Bei welcher Bedingung wird es normalerweise auf true gesetzt?Ich habe jetzt auch mal den Schedule auf "jede Minute" gestellt, damit ich nicht so lange warten muss, wenn ich was ändere.
-
@malei sagte in E3DC Hauskraftwerk steuern:
Fehler bei der Berechnung des reinen Hausverbrauchs: Cannot read properties of null (reading 'val')
Vermutlich auch hier eine Objekt-ID eingetragen, die ins Leere führt.
Prüfe mal bitte alle ID's im Script unter USER ANPASSUNGEN, ob die bei dir auch vorhanden sind. -
@psrelax
Wenn nach Wetterprognose, ausreichend PV-Leistung am Tag vorhanden ist, um die Batterie zu laden wird der Timer gelöscht.
Setze mal die Option "PV Module schneebedeckt." dann wir die Prognose ignoriert und 'BatterieLaden' sollte auf true gesetzt werden. -
Schneebedekt hat keine Auswirkung.
In der Debug Ausgabe wird trotz Schneebedekt=true folgendes ausgegeben (false):javascript.0 01:00:00.271 info script.js.E3DC_ChargeControl.Tibber: ******************* Debug LOG Tibber Skript ******************* javascript.0 01:00:00.271 info script.js.E3DC_ChargeControl.Tibber: timerIds1 = 158107952 timerIds2 = 158107971 javascript.0 01:00:00.271 info script.js.E3DC_ChargeControl.Tibber: timerTarget1 = Sat Aug 24 2024 14:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) timerTarget2 = Sat Aug 24 2024 15:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.0 01:00:00.271 info script.js.E3DC_ChargeControl.Tibber: blockpreisTimer = Infinity javascript.0 01:00:00.272 info script.js.E3DC_ChargeControl.Tibber: billigsterEinzelpreisBlock = Infinity javascript.0 01:00:00.272 info script.js.E3DC_ChargeControl.Tibber: minStrompreis_48h = 0.1336 javascript.0 01:00:00.272 info script.js.E3DC_ChargeControl.Tibber: minStrompreisUser = 0.33 javascript.0 01:00:00.272 info script.js.E3DC_ChargeControl.Tibber: schneeBedeckt = false javascript.0 01:00:00.272 warn script.js.E3DC_ChargeControl.Tibber: ProgrammAblauf = 1,4,3,3,
"minStrompreisUser " hab ich mal ganz hoch und mal ganz niedrig gesetzt.
-
@psrelax
Ok habe vergessen die ID anzupassen in Zeile 575, bitte bei 'id: /\Tibber' TibberSkript eintragen.
Werde das noch ändern, dass die Variable PfadEbene1 verwendet wird.
Sollte so aussehen:on({id: /\TibberSkript.USER_ANPASSUNGEN/, change: "ne"}, async function (obj){ if (bLock) return; bLock = true; setTimeout(() => bLock = false, 100); log(`-==== User Parameter ${obj.id.split('.')[4]} wurde in ${obj.state.val} geändert ====-`,'warn') if (obj.id.split('.')[4] == 'maxSOC_Batterie' ){maxBatterieSoC = obj.state.val} if (obj.id.split('.')[4] == 'maxLadeleistung' ){maxLadeleistungUser_W = obj.state.val} if (obj.id.split('.')[4] == 'minStrompreis' ){maxStrompreisUser = obj.state.val} if (obj.id.split('.')[4] == 'pvSchneebedeckt' ){schneeBedeckt = obj.state.val} await tibberSteuerungHauskraftwerk(); await createDiagramm(); });
Nachtrag:
bitte so abändern:
// Wird aufgerufen wenn sich an den States Tibber.User_Anpassungen was ändert const regexPatternTibber = new RegExp(`${PfadEbene1}.${PfadEbene2[3]}`); on({id: regexPatternTibber, change: "ne"}, async function (obj){ if (bLock) return; bLock = true; setTimeout(() => bLock = false, 100); log(`-==== User Parameter ${obj.id.split('.')[4]} wurde in ${obj.state.val} geändert ====-`,'warn') if (obj.id.split('.')[4] == 'maxSOC_Batterie' ){maxBatterieSoC = obj.state.val} if (obj.id.split('.')[4] == 'maxLadeleistung' ){maxLadeleistungUser_W = obj.state.val} if (obj.id.split('.')[4] == 'minStrompreis' ){maxStrompreisUser = obj.state.val} if (obj.id.split('.')[4] == 'pvSchneebedeckt' ){schneeBedeckt = obj.state.val} await tibberSteuerungHauskraftwerk(); await createDiagramm(); });