NEWS
E3DC Hauskraftwerk steuern
-
@arnod
Das ist richtig - wenn ich die jedoch "aufsauge" und in Heizstab, Wärmepumpe o.ä. schicke, so dass die Einspeisung so gering wie möglich ist, bricht Charge-Control ab, weil zu wenig Strom zum Verwalten da ist. Daher dachte ich, Charge-Control könnte bspw. einen Strom per ioBroker-Objekt "zur Verfügung stellen", in einen weiteren Datenpunkt sollten dann die Abnehmer genau diesen Teils des Stroms reinschreiben, was sie nutzen. Daraus könnte Charge-Control dann errechnen, was wirklich verfügbar ist etc.Quasi eine kleine Schnittstelle, über die sonst eingespeister Strom kontrolliert zur Verfügung gestellt wird.
Ich hoffe, ich konnte es einigermaßen erklären.
@jans_ios sagte in E3DC Hauskraftwerk steuern:
Das ist richtig - wenn ich die jedoch "aufsauge" und in Heizstab, Wärmepumpe o.ä. schicke, so dass die Einspeisung so gering wie möglich ist, bricht Charge-Control ab, weil zu wenig Strom zum Verwalten da ist. Daher dachte ich, Charge-Control könnte bspw. einen Strom per ioBroker-Objekt "zur Verfügung stellen", in einen weiteren Datenpunkt sollten dann die Abnehmer genau diesen Teils des Stroms reinschreiben, was sie nutzen. Daraus könnte Charge-Control dann errechnen, was wirklich verfügbar ist etc.
Das ist dann aber das gleiche wie, wenn gleich die Einspeiseleistung verwendet wird.
Das Script Charge-Control regelt die Batterieladung natürlich nur so lange, wie auch was zum Regeln da ist.
Wenn jetzt mit 1000W in das Netz eingespeist wird, kann jeder Verbraucher 900W verwenden, ohne dass es Charge-Control beeinflusst. Wenn allerdings mehr verbraucht wird, dann wird Charge-Control nicht mehr regeln, weil ja nicht ausreichend Leistung vorhanden ist. Daran ändert aber ein eigenes Objekt auch nichts, sondern nur eine intelligente Steuerung (Script) was dafür sorg das eben nur 900W verbraucht werden oder wenn das nicht ausreicht, der Verbraucher nicht eingeschalten wird. -
Ich habe noch ein anderes "Problem": Der Energieverbrauch des Wallbox-Skripts wird lt. Log um 23:58 Uhr erfolgreich gespeichert:
2022-09-22 23:58:00.017 - [32minfo[39m: javascript.0 (475) script.js.Eigene_Skripte.Energie.E3DC_Wallbox: Tagesertragswert gespeichertAn dem Tag habe ich ca. 12kWh in meinen Hybrid geladen. Ich würde jetzt erwarten, dass im Objekt
0_userdata.0.E3DC_Wallbox.Stromverbrauch.Verbrauch_E-Auto_kWh_Tag22
genau diese ca. 12kWh auftauchen, dort steht aber eine glatte 0, zuletzt geändert am 13.09., allerdings mit Zeitstempel passend zum obigen Log 22.09. 28:58 Uhr:

Auch das Objekt "History.JSON" scheint nicht befüllt zu werden, hier ist sogar der Zeitstempel der 13.09.:

Am 13.09. habe ich das Skript übrigens in Betrieb genommen, da wurden dann die Objekte erstellt, daher dieses Datum.
Im View ist dadurch logischerweise auch alles leer:

Was läuft hier wo falsch?Danke!
Einen Download-Link zum kompletten Log des 22.09. schicke ich Dir per Chat, @ArnoD
@jans_ios sagte in E3DC Hauskraftwerk steuern:
An dem Tag habe ich ca. 12kWh in meinen Hybrid geladen. Ich würde jetzt erwarten, dass im Objekt
0_userdata.0.E3DC_Wallbox.Stromverbrauch.Verbrauch_E-Auto_kWh_Tag22
genau diese ca. 12kWh auftauchen, dort steht aber eine glatte 0, zuletzt geändert am 13.09., allerdings mit Zeitstempel passend zum obigen Log 22.09. 28:58Das Script verwendet den Zähler
modbus.1.inputRegisters.128_total_kwhund speichert den Wert in0_userdata.0.E3DC_Wallbox.Stromverbrauch.ZaehlerstandTagAlt.
Jeden Tag vergleicht es den aktuellen Zählerstand mit dem alten gespeicherten Zählerstand und speichert die Differenz in0_userdata.0.E3DC_Wallbox.Stromverbrauch.Verbrauch_E-Auto_kWh_Tagxx.
Wenn bei dir immer 0 eingetragen wird, dann prüfe mal, ob über Modbus der Zählerstand richtig übertragen wird. -
@jans_ios sagte in E3DC Hauskraftwerk steuern:
An dem Tag habe ich ca. 12kWh in meinen Hybrid geladen. Ich würde jetzt erwarten, dass im Objekt
0_userdata.0.E3DC_Wallbox.Stromverbrauch.Verbrauch_E-Auto_kWh_Tag22
genau diese ca. 12kWh auftauchen, dort steht aber eine glatte 0, zuletzt geändert am 13.09., allerdings mit Zeitstempel passend zum obigen Log 22.09. 28:58Das Script verwendet den Zähler
modbus.1.inputRegisters.128_total_kwhund speichert den Wert in0_userdata.0.E3DC_Wallbox.Stromverbrauch.ZaehlerstandTagAlt.
Jeden Tag vergleicht es den aktuellen Zählerstand mit dem alten gespeicherten Zählerstand und speichert die Differenz in0_userdata.0.E3DC_Wallbox.Stromverbrauch.Verbrauch_E-Auto_kWh_Tagxx.
Wenn bei dir immer 0 eingetragen wird, dann prüfe mal, ob über Modbus der Zählerstand richtig übertragen wird. -
@arnod
Tatsächlich steht hier eine aktuell eine 0, obwohl heute schon ca. 5kWh in mein Auto geladen wurden - woran kann das liegen? Der Ladevorgang läuft aktuell noch.

-
@arnod
Tatsächlich steht hier eine aktuell eine 0, obwohl heute schon ca. 5kWh in mein Auto geladen wurden - woran kann das liegen? Der Ladevorgang läuft aktuell noch.

-
@arnod
Tatsächlich steht hier eine aktuell eine 0, obwohl heute schon ca. 5kWh in mein Auto geladen wurden - woran kann das liegen? Der Ladevorgang läuft aktuell noch.

-
@jans_ios
Was steht bei dir inmodbus.1.holdingRegisters.904_Energiezähler_Totaldrin ? Zählt der bei dir richtig ?
Dann könnte ich das im Script umstellen. -
@arnod
Beim Wallbox-Skript habe ich einen Fehler entdeckt. Wenn das Hauskraftwerk sein Ladeziel erreicht hat und die Ladeleistung auf 0 geht, wird im Lademodus 1 nicht die Wallbox mit Strom versorgt, sondern eingespeist. Dies kommt aus folgendem Skript-Teil zustande, da die 0 irgendwie nicht als Option angenommen wird:// Prüfen ob Werte Netz oder Batterie negativ sind if (NetzLeistung_W <= -500 && BatterieLeistung_W < 0){ AutoLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W-NetzLeistung_W)-2070; }else if (NetzLeistung_W > -500 && BatterieLeistung_W < 0) { AutoLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W)-2070; // 2070 W Trägheitsreserve bei Netzbezug }else if (NetzLeistung_W > -500 && BatterieLeistung_W > 0) { AutoLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W); // 2070 W Trägheitsreserve bei Netzbezug }else if (NetzLeistung_W <= -500 && BatterieLeistung_W > 0){ AutoLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W-NetzLeistung_W); }Ergänze ich in der ersten Prüfzeile ein = startet der Ladevorgang - ich weiß nur nicht so recht, ob das logisch richtig ist:
if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){Was meinst Du dazu? Ist das = hier richtig?
-
@Chilihead
Aktuell könnte ich
e3dc-rscp.0.EMS.SYS_SPECS.maxDischargePower
e3dc-rscp.0.EMS.USED_DISCHARGE_LIMIT
e3dc-rscp.0.EMS.SYS_SPECS.maxStartDischargePower
verwenden.Dem Namen nach würde
e3dc-rscp.0.EMS.SYS_SPECS.maxStartDischargePoweram besten passen.
Wie sieht es da bei dir aus, würde da die max. Batterie Entladeleistung passen?@arnod sorry war off
ja, das würde überall passen, außer bei Limit ist Vorzeichen anders
@arnod sagte in E3DC Hauskraftwerk steuern:
@Chilihead
Aktuell könnte ich
e3dc-rscp.0.EMS.SYS_SPECS.maxDischargePower4500W
e3dc-rscp.0.EMS.USED_DISCHARGE_LIMIT-4500W
e3dc-rscp.0.EMS.SYS_SPECS.maxStartDischargePower4500W
verwenden.Dem Namen nach würde
e3dc-rscp.0.EMS.SYS_SPECS.maxStartDischargePoweram besten passen.
Wie sieht es da bei dir aus, würde da die max. Batterie Entladeleistung passen? -
@jans_ios sagte in E3DC Hauskraftwerk steuern:
Dieses Holdingregister wird bei mir gar nicht abgefragt. Ich habe Deine Datei von Github importiert, da ist es nicht enthalten. Ist die Datei nicht komplett?
Ja, stimmt. Hatte das bei mir getestet und bei mir wurde hier nichts Sinnvolles übertragen.
Kannst es ja mal bei dir versuchen, ob es da anders aussieht.
Bei Holding-Register neue Adresse 904 Typ: Unsigned 32 bit (Big Endian) Faktor= 0.001 -
@arnod
Beim Wallbox-Skript habe ich einen Fehler entdeckt. Wenn das Hauskraftwerk sein Ladeziel erreicht hat und die Ladeleistung auf 0 geht, wird im Lademodus 1 nicht die Wallbox mit Strom versorgt, sondern eingespeist. Dies kommt aus folgendem Skript-Teil zustande, da die 0 irgendwie nicht als Option angenommen wird:// Prüfen ob Werte Netz oder Batterie negativ sind if (NetzLeistung_W <= -500 && BatterieLeistung_W < 0){ AutoLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W-NetzLeistung_W)-2070; }else if (NetzLeistung_W > -500 && BatterieLeistung_W < 0) { AutoLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W)-2070; // 2070 W Trägheitsreserve bei Netzbezug }else if (NetzLeistung_W > -500 && BatterieLeistung_W > 0) { AutoLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W); // 2070 W Trägheitsreserve bei Netzbezug }else if (NetzLeistung_W <= -500 && BatterieLeistung_W > 0){ AutoLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W-NetzLeistung_W); }Ergänze ich in der ersten Prüfzeile ein = startet der Ladevorgang - ich weiß nur nicht so recht, ob das logisch richtig ist:
if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){Was meinst Du dazu? Ist das = hier richtig?
@jans_ios sagte in E3DC Hauskraftwerk steuern:
Ergänze ich in der ersten Prüfzeile ein = startet der Ladevorgang - ich weiß nur nicht so recht, ob das logisch richtig ist:
if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){Was meinst Du dazu? Ist das = hier richtig?
Ja, das ist richtig. Danke :-)
Das kann aber in zwei if abfragen eingetragen werden, da es für die Berechnung bei 0 keine Rolle spielt, ob diese ein positives oder negatives Vorzeichen hat.Werde das korrigieren und eine neue Version hochladen.
-
@jans_ios sagte in E3DC Hauskraftwerk steuern:
Ergänze ich in der ersten Prüfzeile ein = startet der Ladevorgang - ich weiß nur nicht so recht, ob das logisch richtig ist:
if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){Was meinst Du dazu? Ist das = hier richtig?
Ja, das ist richtig. Danke :-)
Das kann aber in zwei if abfragen eingetragen werden, da es für die Berechnung bei 0 keine Rolle spielt, ob diese ein positives oder negatives Vorzeichen hat.Werde das korrigieren und eine neue Version hochladen.
-
@jans_ios sagte in E3DC Hauskraftwerk steuern:
Dieses Holdingregister wird bei mir gar nicht abgefragt. Ich habe Deine Datei von Github importiert, da ist es nicht enthalten. Ist die Datei nicht komplett?
Ja, stimmt. Hatte das bei mir getestet und bei mir wurde hier nichts Sinnvolles übertragen.
Kannst es ja mal bei dir versuchen, ob es da anders aussieht.
Bei Holding-Register neue Adresse 904 Typ: Unsigned 32 bit (Big Endian) Faktor= 0.001 -
@arnod
Ich habe das Register ergänzt. Aktuell steht der Wert auf 3684499.46Ich beobachte mal, brauche dafür aber etwas Sonne ;)
@ArnoD
Der Wert steht mittlerweile auf 3.906.207,74, das macht eine Differenz von 221.708,28. Lt. BMW-App wurden ca. 2kWh geladen - hier scheint noch etwas mit dem Faktor nicht so ganz zu stimmen, oder?Im Objekt "HistoryJSON" sehe ich jetzt einen Eintrag vom 30.09., aber nicht vom 01.10.. Die Seite im VIS ist nach wie vor leer.
-
@ArnoD
Der Wert steht mittlerweile auf 3.906.207,74, das macht eine Differenz von 221.708,28. Lt. BMW-App wurden ca. 2kWh geladen - hier scheint noch etwas mit dem Faktor nicht so ganz zu stimmen, oder?Im Objekt "HistoryJSON" sehe ich jetzt einen Eintrag vom 30.09., aber nicht vom 01.10.. Die Seite im VIS ist nach wie vor leer.
@jans_ios
Nach Anleitung handelt es sich um Wh und da würde der Faktor stimmen, aber wie gesagt, hat bei mir auch nicht funktioniert und deswegen habe ich ja auch modbus.1.inputRegisters.128_total_kwh verwendet.
Jetzt wäre natürlich interessant zu wissen warum da bei dir nichts übertragen wird. -
@jans_ios
Nach Anleitung handelt es sich um Wh und da würde der Faktor stimmen, aber wie gesagt, hat bei mir auch nicht funktioniert und deswegen habe ich ja auch modbus.1.inputRegisters.128_total_kwh verwendet.
Jetzt wäre natürlich interessant zu wissen warum da bei dir nichts übertragen wird.@arnod
Wie bist Du denn an die ganzen Register überhaupt gekommen? Hast Du die irgendwie ausgelesen oder vom Hersteller bekommen?
Der "CAS Modbus Scanner" bspw. kann keine Device ID 255 verarbeiten, der hilft mir nicht.
Hast Du einen Tip, wie ich meine Wallbox diesbzgl. mal auslesen kann, was sie liefert? -
@arnod
Wie bist Du denn an die ganzen Register überhaupt gekommen? Hast Du die irgendwie ausgelesen oder vom Hersteller bekommen?
Der "CAS Modbus Scanner" bspw. kann keine Device ID 255 verarbeiten, der hilft mir nicht.
Hast Du einen Tip, wie ich meine Wallbox diesbzgl. mal auslesen kann, was sie liefert?@jans_ios
Habe hier oder in einem anderen Forum den Tipp bekommen das E3DC in seiner Wallbox den Wallbe EV Charge Control verbaut, der Baugleich mit dem Phoenix Contact EV Charge Control EV-CC-AC1-M3-CBC-RCM-ETH ist.
Dann im Internet nach Phoenix Contact EV-CC-AC1-M3-CBC-RCM-ETH gegoogelt und das Handbuch heruntergeladen.
Dort sind die einzelnen Modbus Register beschrieben. -
Hallo gibt es irgendwo eine Anleitung um Modbus 5.0.8 mit der Wallbox zu verbinden? Ich habe die iobroker_E3DC/Modbus Import Dateien Register/ verwendet, der adapter ist grün aber es kommen keine Werte rein? Wenn ich den Ladevorgang_freigeben ändere erscheint folgende Meldung im log Socket Error , Client in error state und dann Disconnected from slave. Hat jemand eine Idee was ich falsch mache.
-
Hallo gibt es irgendwo eine Anleitung um Modbus 5.0.8 mit der Wallbox zu verbinden? Ich habe die iobroker_E3DC/Modbus Import Dateien Register/ verwendet, der adapter ist grün aber es kommen keine Werte rein? Wenn ich den Ladevorgang_freigeben ändere erscheint folgende Meldung im log Socket Error , Client in error state und dann Disconnected from slave. Hat jemand eine Idee was ich falsch mache.
@chrisi303
In der Anleitung Script Wallbox.pdf auf Github findest du die Einstellungen für den Modbus Adapter.
Prüfe mal, ob du alles richtig eingestellt hast. -
@chrisi303
In der Anleitung Script Wallbox.pdf auf Github findest du die Einstellungen für den Modbus Adapter.
Prüfe mal, ob du alles richtig eingestellt hast.
