NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@waly_de danke.
DP jetzt wieder auf false und der PS ist eingetragen:
//**************************************** // Überschussladung: //**************************************** ExcessCharge: true, //Überschussladung AN/AUS (true/false) //ID zum Einstellen der Ladeleistung des Speichers in Watt: ExcessChargePowerID: "0_userdata.0.ecoflow.app_1556567312312703892482_DCEBZ8xxxxx_thing_property_set.writeables.slowChgPower", //ID des aktuellen Ladestandes des Speichers in %: ExcessChargePowerBatSocID: "0_userdata.0.ecoflow.app_device_property_HW51ZOH4S1.data.InverterHeartbeat.batSoc", ExcessChargeSwitchMin: 5, //Zeit in Minuten die der Schalter mindestens in der letzten geschalteten Position verbleiben muss. ExcessChargeMaxPower: 1700, //Maximale Ladeleistung des Speichers in Watt ExcessChargeOffsetPower: 0, //Wird der Leistungsanforderung hinzugerechnet um Messabweichungen auszugleichen. ExcessChargeStartPower: 200, //Mindest-Überschussleistung zum Einschalten des Speichers ExcessChargeStopPower: 50, //Überschussleistung bei der der Speicher abgeschaltet werden soll. ExcessChargeStartPowerDurationMin: 1, //Mindestdauer in Minuten, die ExcessChargeStartPower nicht unterschritten werden darf, bevor der Speicher eingeschaltet wird. ExcessChargeMinRegulatePause: 1, //Mindestpause in Minuten zwischen einzelnen Regelbefehlen (EEPROM-Schutz) ExcessChargeRegulateSteps: 100, //Stufen in Watt, in denen die Werte geändert werden sollen ExcessChargeBatSocMax: 95, // Batterieladestand muss <= sein damit die Überschussladung gestartet wird ExcessChargeBatSocOff: 100, // Batterieladestand bei dem die Überschussladung abgeschaltet wird //----------------------------------------
-
@waly_de
Vielen Dank! Ich werde es die nächsten Tage testen, sobald wieder mehr Sonne scheint. Zurzeit haben wir wieder Schnee -
@thomas-weller said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
@thomas-weller said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Das Blockly sollte dann für meine nicht vorhandenen Programmierkenntnisse so aussehen:
Wenn SOC der DeltaPro <5%
= Skript zur dynamischen Leistungsregelung stoppen
= Shelly SmartPlug (AC-Ladung der Delta Pro bei mir) auf AN
= Excees Power z.b.: 500Watt
Wenn SOC der DeltaPro wieder >10%
= Skript zur dynamischen Leistungsregelung startenJetzt muss ich das nur irgendwie zusammenklicken
Hier übrigens das funktionierende Ergebnis für diesen Anwendungsfall (Keine PV an Delta oder PS da lAdung nur über AC-Schaltsteckdose und Speicher darf nicht leer werden weil z.B. Kühlschrank am AC-Ausgang hängt):
Hallo @Waly_de,
leider hat meine Schutzfunktion (DeltaPro darf nie unter 3% fallen) über das Blocky jetzt schon 2x versagt.
Heute hatte ich Zeit zum prüfen...
Warum wird wohl bei mir der Wert nicht mehr aktualisiert über den ich den SOC der Delta auslese?
app_device_property_DCEXXXXXXXX994/data/params/ems/f32LcdShowSoc
2024-04-23 20_49_50-Window.pngDas ist schon der richtige SOC oder?
Der Wert ist im ioBroker immer Rot und scheint sich nicht zu aktualisieren. Steht immer 99,67108 da obwohl die Delta89% und der Zusatzakku 95% hat und in der App somit korrekte 92% angezeigt werden.! -
@thomas-weller wieso stellst du nicht direkt in der DP die untere Entladegrenze von 3% ein? Mache ich auch so und funktioniert wunderbar.
-
@accu said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
@thomas-weller wieso stellst du nicht direkt in der DP die untere Entladegrenze von 3% ein? Mache ich auch so und funktioniert wunderbar.
Weil auch diese 3% irgendwann über den AC Anschluss der DeltaPro aufgebraucht sind.
Auch schaltet der AC Ausgang irgendwann aus und nicht mehr von selbst ein...
Edit.......................
Habe das Problem gefunden
Hatte vor einigen Wochen mal subscribe bei der DeltaPro auf False gesetzt um "Daten" zu sparen.
So wurden natürlich nicht alle Daten der DeltaPro abgefragt, darunter eben auch die für mein Blocky Skript -
Hi Zusammen
Hab 2 Panel am Powerstream & 2 Panel am Delta Pro.
Wenn der Akku voll ist, wird max eingespeist was toll ist, der Überschuss wird mir von der Gemeinde abgekauft.
Leider wird nur die Leistung des PS verwendet, wenn da nur 300W ankommen, ist das max. was eingespeist wird, obwohl ich noch 300W hätte die am Delta anliegen.
Gibt es irgendwo die Möglichkeit diese Leistung "heraus zu kitzeln"? -
Hallo zusammen,
ich hätte eine Frage:
ich habe eine Ps mit Delta Max - Stromverbrauch und Stromerzeugung kann ich über Openknx in das Skript einbinden.
Stromverbrauch klappt. Für Stromerzeugung finde ich keinen Platz im Skript, wo man es einträgt. Sehe ich das richtig, dass das Skript so aufgebaut ist, dass es mit nur einer Variable arbeitet?
Gibts eine Idee, wie ich das bei mir mit 2 Variablen lösen kann?
Herzlichen Dank und schöne Grüße
Matz -
@audiofreak sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Hi Zusammen
Hab 2 Panel am Powerstream & 2 Panel am Delta Pro.
Wenn der Akku voll ist, wird max eingespeist was toll ist, der Überschuss wird mir von der Gemeinde abgekauft.
Leider wird nur die Leistung des PS verwendet, wenn da nur 300W ankommen, ist das max. was eingespeist wird, obwohl ich noch 300W hätte die am Delta anliegen.
Gibt es irgendwo die Möglichkeit diese Leistung "heraus zu kitzeln"?Ich nehme an du hast die Standardkonfiguration in der bei vollem Akku in den Priorität Modus geschaltet wird. Für das, was du willst, würde ich den Parameter battOnSwitchPrio auf false stellen. Bei der Einstellung:
battPozOn: 100, battPozOff: 97
Wird dann bei erreichen von 100 % mit der vollen Leistung auch aus der Batterie eingespeist bis die Batterie wieder auf 97 % gefallen ist. -
@spotimatz sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Hallo zusammen,
ich hätte eine Frage:
ich habe eine Ps mit Delta Max - Stromverbrauch und Stromerzeugung kann ich über Openknx in das Skript einbinden.
Stromverbrauch klappt. Für Stromerzeugung finde ich keinen Platz im Skript, wo man es einträgt. Sehe ich das richtig, dass das Skript so aufgebaut ist, dass es mit nur einer Variable arbeitet?
Gibts eine Idee, wie ich das bei mir mit 2 Variablen lösen kann?
Herzlichen Dank und schöne Grüße
MatzWas meinst du mit Stromerzeugung? Meinst du damit eine weitere PV Anlage?
Solche Sachen werden unter: AdditionalPower angelegt. -
am PS habe ich keine PV-Platten angeschlossen.
Die laufen extern über Wechselrichter die bei mir ins Netz einspeisen.
Ich habe einen KNX Smart Meter vor dem Strommesser und der gibt mir getrennt Erzeugung und Verbrauch aus.
Wenn ich PV-Überschuss habe, ist Verbrauch=0 und Erzeugung zB 400W.
Wenn ich mehr Verbrauche als die PVs erzeugen habe ich bswp. Verbrauch 200W und Erzeugung=0.
-
@spotimatz sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
am PS habe ich keine PV-Platten angeschlossen.
Die laufen extern über Wechselrichter die bei mir ins Netz einspeisen.
Ich habe einen KNX Smart Meter vor dem Strommesser und der gibt mir getrennt Erzeugung und Verbrauch aus.
Wenn ich PV-Überschuss habe, ist Verbrauch=0 und Erzeugung zB 400W.
Wenn ich mehr Verbrauche als die PVs erzeugen habe ich bswp. Verbrauch 200W und Erzeugung=0.
Ahh, verstehe.
Das machst du am besten mit einem externen Skript, das dir aus den beiden Objekten ein Objekt macht, bei dem die Stromerzeugung negativ angezeigt wird. Dieses neu erzeugte Objekt trägst du dann als SmartmeterID im Skript ein.
Ich hab da mal was für dich vorbereitet:
Im Grunde musst du hier nur noch deine ID einsetzenconst StrombezugID = '0_userdata.0.ecoflow.Strombezug' const StromverkaufID = '0_userdata.0.ecoflow.Stromverkauf' const StromBilanzID = '0_userdata.0.ecoflow.Strom' // Erstelle das neue Objekt StromBilanzID' createState(StromBilanzID, 0, { name: 'Stromnetz Bilanz', type: 'number', role: 'value', unit: 'kWh' }, () => { //console.log('Stromnetz Bilanz Objekt wurde erstellt.'); }); // Funktion, um den Stromnetzwert zu aktualisieren function updateStromNetzBilanz() { // Abrufen der aktuellen Werte für Strombezug und Stromverkauf const strombezug = getState(StrombezugID).val; const stromverkauf = getState(StromverkaufID).val; // Berechnung der Bilanz const bilanz = strombezug - stromverkauf; // Aktualisiere das '0_userdata.0.ecoflow.Strom' Objekt mit der berechneten Bilanz setState(StromBilanzID, bilanz); //console.log('Stromnetz Bilanz aktualisiert:'+ bilanz); } // Registriere Listener für die Werte von Strombezug und Stromverkauf on({ id: StrombezugID, change: "ne" }, updateStromNetzBilanz); on({ id: StromverkaufID, change: "ne" }, updateStromNetzBilanz); // Initialisiere die Bilanz beim Start des Skripts updateStromNetzBilanz();
-
Wow vielen Dank. Ich hoffe ich habe dich richtig verstanden.
Ich habe eine eigenes Skript unter dem Ecoflow im Java erzeugt, deinen Code reinkopiert und in:
const StrombezugID = '0_userdata.0.ecoflow.Strombezug'
mit meiner Variable KNX- Verbrauch ersetzt
const StromverkaufID = '0_userdata.0.ecoflow.Stromverkauf'
mit meiner Variable KNX- Erzeugung ersetzt
und deiine Variable '0_userdata.0.ecoflow.Strom' im Ecoflow Skript bei " SmartmeterID: "0_userdata.0.ecoflow.Strom"," übernommen.
Jetzt hoffe ich morgen auf Sonne um es testen zu können=) 1000 Dank
-
Guten Abend,
ich habe noch ein anderes Thema:mir zieht es meinen Speicher leer - bis er ausgeht.
Netzkabel zum Nachspeisen habe ich angeschlossen, und dazwischen einen Shelly Plus Plug S gesteckt.Beispiel für Nutzung einer Schlaltersteckdose:
//----------------------------------------
//ID mit dem Messwert der aktuellen Leistungsaufnahme des Speichers in Watt:
ExcessActualPowerID: "shelly.0.shellyplusplugs#xxx#1.Relay0.Power",
//ID des Schalters, der den Speicher aktiviert:
ExcessChargeSwitchID: "shelly.0.shellyplusplugs#xxx#1.Relay0.Switch",
ExcessChargeSwitchOn: true, //Wert, der zum Aktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
ExcessChargeSwitchOff: false, //Wert, der zum Deaktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
//----------------------------------------
//****************************************rweiterte Einstellungen:
//****************************************
SmartmeterTimeoutMin: 4, // Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Script mit...
SmartmeterFallbackPower: 150, // SmartmeterFallbackPower als aktuellem Realpowerwert weiter arbeiten, bis wieder aktuelle Daten geliefert werden.
RegulationIntervalSec: 15, // Intervall in Sekunden in denen gemessen und reguliert wird
Regulation: true, // 'false' stellt das Setzen der Einspeiseleistung ab
RegulationState: "Regulate", // Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unter 0_userdata.0.ecoflow angelegt)
RegulationMultiPsMode: 0, // Wenn mehrere PS reguliert werden sollen. "balance" = 0 oder "serial" = 1
BasePowerOffset: 10, // Wird vom aktuellen Verbrauch abgezogen, um die Einspeiseleistung zu berechnen
Zusatzpower_Offset: 10, // Zusatzpower startet ab einer Batterieladeleistung von MaxPower - Zusatzpower_Offset
MinValueMin: 2, // Der Zeitraum in Minuten, aus dem der niedrigste Gesamtverbrauchswert geholt werden soll. 0 für Echtzeitwert
MinValueAg: 0, // Art der Ermittlung des kleinsten Wertes: 0 = Minimalwert, 1 = Durchschnittswert
ReconnectMin: 30, // Zeit in Minuten, nach der die Anwendung neu gestartet wird, wenn keine neuen Daten eintreffen
statesPrefix: "0_userdata.0.ecoflow", // Hier werden die ecoFlow States angelegt
latitude: latitude, // Breitengrad des Standortes (wird automatisch eingesetzt)
longitude: longitude, // Längengrad des Standortes (wird automatisch eingesetzt)
//****************************************// Überschussladung:
//****************************************
ExcessCharge: true, //Überschussladung AN/AUS (true/false)
//ID zum Einstellen der Ladeleistung des Speichers in Watt:
ExcessChargePowerID: "0_userdata.0.ecoflow.app_1781270647322333186_xxx_thing_property_set.writeables.slowChgPower",
//ID des aktuellen Ladestandes des Speichers in %:
ExcessChargePowerBatSocID: "0_userdata.0.ecoflow.app_device_property_xxx.data.params.bmsMaster.f32ShowSoc",
ExcessChargeSwitchMin: 5, //Zeit in Minuten die der Schalter mindestens in der letzten geschalteten Position verbleiben muss.
ExcessChargeMaxPower: 1500, //Maximale Ladeleistung des Speichers in Watt
ExcessChargeOffsetPower: 0, //Wird der Leistungsanforderung hinzugerechnet um Messabweichungen auszugleichen.
ExcessChargeStartPower: 50, //Mindest-Überschussleistung zum Einschalten des Speichers
ExcessChargeStopPower: 0, //Überschussleistung bei der der Speicher abgeschaltet werden soll.
ExcessChargeStartPowerDurationMin: 1, //Mindestdauer in Minuten, die ExcessChargeStartPower nicht unterschritten werden darf, bevor der Speicher eingeschaltet wird.
ExcessChargeMinRegulatePause: 1, //Mindestpause in Minuten zwischen einzelnen Regelbefehlen (EEPROM-Schutz)
ExcessChargeRegulateSteps: 100, //Stufen in Watt, in denen die Werte geändert werden sollenfindet jemand meinen Fehler? Oder liegt es an einem anderen Teil vom Skript?
Vielen Dank für die Hilfe.
-
Hi @Waly_de
Leider funktioniert das noch nicht so ganz mit der zusatzpower, wenn anschließend die Grundlast wieder höher wird.
Ich habe hier zwei Powerstreams und einer ist in die zusatzpower gegangen bevor die Hauslast hoch ging.
Dann ging der hausverbrauch hoch, jedoch hat der zweite PS die zusatzpower nicht verlassen.Der erste PS war nicht im Zusatzpower Modus und konnte deshalb mehr einspeisen:
-
@waly_de hatte gehofft bei der neuen Skriptversion, dass der AC Ladeshelly bei der Überschussladung abgeschaltet wird, wenn die DP voll geladen ist - wäre bei den Änderungen mit dabei
Meine DP hat mit 99% die obere Ladegrenze erreicht und der Shelly DP Load bleibt weiterhin eingeschaltet. Wäre schön, wenn der dann ausginge, um nicht weiter Strom auf der Leitung bzw. am DP AC Ladeeingang permanent zu haben.
-
@waly_de Hi - hab folgende Überlegung angestellt?
Tagsüber, wenn die Sonne bräzelt, möchte ich das er entsprechend direkt einspeist und nur den Überschuss in die Batterie schickt. Bei Wölkchen etc. soll er weiterhin einspeisen was Modul kommt jedoch nichts aus der Batterie holen. Die Batterie soll erst nach Sonnenuntergang aktiv werden und entsprechend einspeisen.
Sprich: Tagsüber reines Überschussladen und wenn am Modul nichts mehr kommt regulieren.Edit: Ich denke zu sehr "in bewölkteren" Tagen...;-). Ein wenig Akkukunde und die Frage hat sich im Grunde erledigt. Alles andere bekomme ich mit entsrpechenden "Side-Kicks" hin.
-
ich würde das Skript gerne via Button AUS / AN stellen. Dazu kann man ja glaube ich den Regulate State auf false setzen beim Ausschalten. Hat das hier schon einer irgendwie realisiert? Wenn ja wie?
-
@accu Hi - ich hab mir dazu ein kleines Scriptchen erstellt, dass mir den State eines Objektes, welches bei mir aus FHEM kommt, überwacht, und dementsprechend den Regulate auf true bzw. false setzt. Somit hab ich die Möglichkeit das Ganze via Tablet UI aus FHEM heraus Adhoc zu beeinflussen. Darüber hinaus kann der State aus entsprechenden FHEM Logiken heraus gesteuert werden. FHEM stellt bei mir die zentrale der gesamten Gebäudesteuerung dar und sollte somit das EcoFlow Script entsprechend beeinflussen können.
In diesem Zusammenhang sollte man dann aber die ensprechenden Parameter im EcoFlow Script im Hinterkopf haben. "Was soll er machen, wenn manuell reguliert wird" etc..
-
Hallo zusammen und vielen Dank für das großartige Script!
Ich plane, zwei Powerstream-Geräte mit jeweils 800 Watt an unterschiedlichen Phasen anzuschließen. An einem Powerstream ist ein Delta 2 Max angeschlossen und am anderen ein Delta 2 Max Zusatzakku. Beide Wechselrichter befinden sich im gleichen WLAN und im gleichen Hausnetz, sodass eine maximale Einspeisung von 1600 Watt möglich ist. Ein befreundeter Elektriker wird die Installation fachgerecht anmelden, und es wird eventuell auch ein Ausbau auf eine dritte Powerstream in Betracht gezogen.
Meine Frage: Ist bei dieser Konfiguration eine Nulleinspeisung möglich? Ich konnte keine entsprechenden Einstellungen dafür finden. Hat jemand Erfahrungen oder Tipps dazu?
Auch eine Konfigurationsmöglichkeit für eine Nulleinspeisung mit 1. Powerstream konnte ich nicht finden
Vielen Dank im Voraus für eure Unterstützung!
-
- ja Nulleinspeisung mit mehreren PowerStreams geht, man kann mehrere PowerStreams im Skript eintragen und es gibt sogar eine Option, wie die Regelung dann gemacht wird "balanced" = aufgeteilt unter Berücksichtigung des Batteriestands oder "serial" = der Reihe nach wird versucht den Bedarf abzudecken. Finde ich ziemlich gut gelöst. Und natürlich geht das auch mit einem PowerStream (sofern nicht mehr als 600W / 800W benötigt werden).
- habe ähnliche Pläne und vor allem noch Fragen bezüglich "fachgerechte Anmeldung", könnten wir uns da mal austauschen?