NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
Jetzt, wo die Sonne wieder rauskommt, wird es auch Zeit für eine neue Version des Skripts.
Ich habe den Regel-Algorithmus komplett neu programmiert. Das ist vor allem für die Regelung mehrerer PS wichtig gewesen.
Jetzt funktioniert der Balance-Mode wesentlich besser. Es wird zunächst versucht den gesamten Bedarf aus der PV-Power aller verfügbaren PS zu decken. Erst dann werden die Batterien im Verhältnis ihrer Ladestände entladen.
Auch sonst habe ich versucht Eure Wünsche und Anregungen umzusetzen.
Ich poste das neue Skript zunächst nur hier unten und warte auf Euer Feedback. Ich möchte zunächst sicherstellen, dass es auch wirklich bei allen funktioniert, denn es hat sich unter der Haube viel geändert.Viel Spaß beim testen!
hier das komplette Changelog der neuen Version:
(1.1.4.1) 23.09.2023
- Neue Einstellung: "AdditionalPower": Wenn es weitere Wechselrichter gibt, die in ioBroker erfasst werden, können diese hier angelegt werden. Die Leistung wird dann bei der Berechnung von "Realpower" berücksichtigt.
- Delta 2 Max "Writeables" erneut überarbeitet (Danke an Ponti92 aus dem ioBroker-Forum).
- "Maxpower" ist jetzt in den Einstellungen für jeden einzelnen PS verfügbar.
- Komplett neues Regelwerk zum Einstellen und Verteilen der Einspeiseleistung auf mehrere PS: Im "Balance Mode" wird zunächst nur die verfügbare PV-Leistung aller PS eingespeist; erst danach wird aus den Batterien entnommen. Dabei richtet sich die Entladeleistung nach dem Ladestand der Batterien. Alle PS werden bei einem Messintervall gleichzeitig geregelt.
- "battOnSwitchPrio" überarbeitet und verbessert.
- SmartPlugs sollten nun bei Verwendung den Regelprozess nicht mehr komplett verwirren.
- Für SmartPlugs gibt es nun auch historische Leistungsdaten in den Objekten.
- Auch für PS wurden die historischen Leistungsdaten neu angelegt. Die Interpretation dieser Daten steht noch aus. Vielleicht möchte das einer von euch machen? U.U stimmen die Feldnamen nicht mit den darin gespeicherten Werten überein.
- Neue Einstellung: "SmartmeterTimeoutMin" und "SmartmeterFallbackPower". Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Skript mit "SmartmeterFallbackPower" als aktuellem Realpowerwert weiterarbeiten, bis wieder aktuelle Daten geliefert werden.
- Bekannte Writeables werden nun automatisch angelegt, auch ohne dass sie in der App geändert werden müssen (Voraussetzung ist die richtige Einstellung des Typs bei den Geräteeinstellungen)
- Verschiedene Optimierungen und Bugfixes
-
@oli2023 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Ich verstehe die Funktion "BasePowerOffset" und die Anmerkung im Script "Wird vom aktuellen Verbrauch abgezogen, um die Einspeiseleistung zu berechnen" nicht wirklich.
Wenn der Wert auf den vorgegebenen 30 steht, wird die Zahl wie beschrieben von der Einspeisung abgezogen. Allerdings geht dem entsprechend auch der Wert meines aktuellen Netzbezugs hoch.
Stelle ich den Wert auf 0, habe ich ebenso einen Netzbezug von 0 Watt, sieht natürlich schön aus, stelle ich ihn hoch, steigt dementsprechend der Wert der "anderen Verbraucher" in der Ecoflow App und der Netzbezug geht hoch auf 20 bis 30 Watt.Genau das ist der Sinn... BasePowerOffset entspricht praktisch dem gewünschten, dauerhaften Netzbezug.
Das ist eingebaut, damit kleine Schwankungen im Bedarf keine Einspeisung ins Netz auslösen und so Energie verschenkt wird.
Wenn Dir das egal ist, setzte es auf 0. -
@ponti92 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Hi,
Ich würd mal meine Ideen zum PV Überschuss laden preisgeben:
Seit letztem D2M Update ist es möglich den PV Überschuss im Haus, zb. Von einer anderen Anlage, in die Delta zu leiten. Dies funktioniert nun parallel zum Laden des Powerstreams. D.h. PS lädt die D2M und über AC wird diese parallel geladen. (Das ganze soll auch über den PV Input der D2M parallel zum PS funktionieren)
Manuell hat es schon super funktioniert und wäre cool wenn das evtl im Skript mit eingebaut wird, dass die Regelung nicht gegen das AC Laden ankämpft..
Denn wenn die Sonne dann weiter unter geht, wird ja der Überschuss weniger und die Ladeleistung der D2M muss angepasst werden.
Natürlich könnte man auch andere powerstations von EcoFlow einbinden, wie zb die River, die unabhängig von PS geladen werden.
Das ganze macht zb nur Sinn wenn:PV Überschuss von einer anderen Anlage besteht, die nicht gespeichert werden kann.
der Akku an einem PS 100% voll ist und dann im im Batteriemodus die übrige PV Leistung einspeist wird.Gibt es evtl. Szenarien die ich nicht berücksichtigt habe?
Fall 1. und 2. berücksichtigen auch wenn man mehrere PS mit D2M hat, und eine Anlage schneller voll wird als die andere. Dann könnte man den Überschuss der vollen Anlage in die andere zusätzlich einspeisen.
Die Frage ist, ob dabei auch kleinere Sprünge bei der AC ladeleistung als 100W/200W erlaubt sindDas ist Cool. Sowas werde ich auf jeden Fall einbauen.
Kann man über die App auch die AC-Ladeleistung des D2M komplett abstellen?
Mein Delta Max zieht sich nämlich immer gute 60-70W rein, auch wenn ich slowChgPower auf 0 stelle.Das Beste wäre natürlich ich hätte mal einen D2M hier. Vielleicht möchte mir hier ja jemand mal einen für die Zeit der Entwicklung zur Verfügung stellen?
-
@milchbeck sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
@Waly_de hab mal ne frage wie wäre es im Script einzubauen, wenn der smartmeter oder powerfox ect mal keine Daten sendet das Script auf einen grundverbrauch sagen wir mal wie bei mir 140 Watt es dann eigenständig dem Powerstream das meldet und sobald wieder Daten ankommen es wieder ganz normal läuft? Also 5 Minuten oder was auch immer keine Daten dann Grundverbrauch 140 Watt und sobald wieder Daten eintreffen Normalbetrieb…
Weil bei mir fällt ab und zu mal Server seitig der Bezug aus und wenn dann zuletzt mal 400 Watt benötigt worden sind haut der Powerstream solange den Wert bis ich dann manuell eingreife und das würde es einfach im Hintergrund erledigenErledigt
-
@waly_de said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Das ist Cool. Sowas werde ich auf jeden Fall einbauen.
Kann man über die App auch die AC-Ladeleistung des D2M komplett abstellen?
Mein Delta Max zieht sich nämlich immer gute 60-70W rein, auch wenn ich slowChgPower auf 0 stelle.Das Beste wäre natürlich ich hätte mal einen D2M hier. Vielleicht möchte mir hier ja jemand mal einen für die Zeit der Entwicklung zur Verfügung stellen?
Ich hab das mal schnell getestet mit der D2M:
Beim setzen von.chgPauseFlag
wird die Leistung in der App auf 0 angezeigt, jedoch zeigt der Shelly noch 5W an. Das ist nicht viel, jedoch würde ich optional einen datenpunkt des Shelly’s einbeziehen, damit das Skript den Shelly oder andere Schalter steuern kann.Darüber hinaus kann man noch auf 120W minimale Ladeleistung heruntergehen, was in der App ca 100W Ladeleistung entspricht. Alles darunter funktioniert nicht mehr und die Batterie wird laut App nicht mehr geladen.(Shelly zeigt dann immer ca. 70W an, wenn der Wert zu gering ist).
Übrigens kann man dann jeden Wert zwischen 120 und 2400W in iobroker einstellen und wird auch korrekt in der App angezeigt.Also zum Ein/Ausschalten entweder:
.chgPauseFlag
auf 1 setzen oder- ac Eingang über Steckdose/Schalter steuern
Danach regeln der Leistung über
.slowChgWatts
von MinWatt (D2M=120W) bis MaxWatt (D2M=2400W) -
@photon-harvester sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Moin Moin,
habt ihr einen Tip für mich, wie ich verschiene IDs zu einem Wert addieren kann, um es anschließend zu visualisieren?
Bsp. ID:AkkuSoC1 +ID:AkkuSoC2 = ID:AkkuSoCgesammt --> dann ablegen in history für z.B. VIS
Danke
PS: kann leider nicht programmieren, nur copy-paste oder WidgetsNeues Script Anlegen und das hier Einfügen
const Wert1 = "id.von.dem.wert1" const Wert2 = "id.von.dem.wert2" const SumWert = "id.von.dem.SumWert" // Überwacht jede Änderung der beiden Werte und berechnet dann die neue Summe const Regex = new RegExp("(" + Wert1.replace(".","\.") + ")|(" + Wert2.replace(".","\.") + ")"); on({ id: Regex, change: "ne" }, function (obj) { // Hier kannst Du den Wert beliebig gestalten const Summe = Number(getState(Wert1).val) + Number(getState(Wert2).val) // Schreibt den SumWert und legt den State an, falls er noch nicht exsistiert setStateNE(SumWert,Summe) }); //für SumWert noch die History-Einstellungen aktivieren und fertig ;-) //**************************************** */ // HILFSFUNKTION //**************************************** */ function setStateNE(id, value, ack = false, common = {}, native = {}) { existsState(id, function (err, exists) { if (!exists) { let valueType = typeof value; let name = id.split('.').pop(); if (Object.keys(common).length === 0) { common = { name: name, type: valueType, role: 'state', read: true, write: true, }; } createState(id, value, false, common, native, function () { setState(id, value, ack); }); } else { setState(id, value, ack); } }); }
-
@ponti92 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
ch hab das mal schnell getestet mit der D2M:
Beim setzen von .chgPauseFlag wird die Leistung in der App auf 0 angezeigt, jedoch zeigt der Shelly noch 5W an. Das ist nicht viel, jedoch würde ich optional einen datenpunkt des Shelly’s einbeziehen, damit das Skript den Shelly oder andere Schalter steuern kann.
Darüber hinaus kann man noch auf 120W minimale Ladeleistung heruntergehen, was in der App ca 100W Ladeleistung entspricht. Alles darunter funktioniert nicht mehr und die Batterie wird laut App nicht mehr geladen.(Shelly zeigt dann immer ca. 70W an, wenn der Wert zu gering ist).
Übrigens kann man dann jeden Wert zwischen 120 und 2400W in iobroker einstellen und wird auch korrekt in der App angezeigt.
Also zum Ein/Ausschalten entweder:.chgPauseFlag auf 1 setzen oder
ac Eingang über Steckdose/Schalter steuernDanach regeln der Leistung über .slowChgWatts von MinWatt (D2M=120W) bis MaxWatt (D2M=2400W)
alles klar... wenn du mal in die Einstellungen der neuen Version schaust, da hab ich schon etwas vorbereitet. Ich denke diese Parameter können das alles abdecken...
-
@waly_de ok cool!
Ich bin schon gespannt auf das neue Skript
Vor allem ist für mich das neue multi PS Verhalten interessant!Leider ist erst wieder ab morgen Sonne bei uns, sodass ich erst die nächsten Tage Feedback geben kann.
-
@waly_de Verstehe, Dank Dir!
Gibt es noch eine Einstellung die ich verändern kann um Folgendes anzupassen?
Die Grundlast die mein Poweropti angibt und vom Script zur Berechnung genutzt wird, ist immer ca. 30W niedriger als der Wert der vom Script letztlich geliefert wird.
Wenn der Poweropti z.B. 35W des aktuellen Netzbezugs angibt, müssten die doch möglichst auch so als Wert "Andere Verbraucher" in der Ecoflow App auftauchen. Da werden aber dann in dem Fall 70W bezogen. Somit wird durch das Script zeitweise 30 Watt mehr aus meinem Akku gezogen als nötig wäre.
Wie kommt dieser "Aufschlag" zustande? -
@oli2023 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Die Grundlast die mein Poweropti angibt und vom Script zur Berechnung genutzt wird, ist immer ca. 30W niedriger als der Wert der vom Script letztlich geliefert wird.
Wenn der Poweropti z.B. 35W des aktuellen Netzbezugs angibt, müssten die doch möglichst auch so als Wert "Andere Verbraucher" in der Ecoflow App auftauchen. Da werden aber dann in dem Fall 70W bezogen. Somit wird durch das Script zeitweise 30 Watt mehr aus meinem Akku gezogen als nötig wäre.
Wie kommt dieser "Aufschlag" zustande?Ich glaube, Du hast es falsch verstanden. Dein Poweropti zeigt dir genau an, wie viel Strom du gerade vom Netzanbieter einkaufst. "Andere Verbraucher" in der EcoflowApp zeigt an, wieviel Leistung dein PowerStream gerade an Dein Hausnetzt abgibt. (ich gehe mal davon aus, das Du keine Plugs nutz)
Wenn also Dein Poweropti 35 W anzeigt und deine App 70W für "Andere Verbraucher" dann hast Du aktuell einen Verbrauch von 105 W in deinem Haushalt. (life zu sehen unter Realpower in den Objektdaten des Scripts). Es werden also 35W weniger aus dem Akku gezogen als zur Deckung deines Bedarfs eigentlich nötig wären. Genau so soll es sein.
Wüsste Dein Ecoflow bzw. die App, wieviel "Andere Verbraucher" wirklich verbrauchen, dann bräuchte es das Script nicht
Ich hoffe das war verständlich... -
@waly_de Super verständlich
Mir ist nur nicht klar wie oder ob ich mein Ziel mit dem Script erreichen kann oder ob es überhaupt dafür gedacht ist. Ich möchte den Poweropti, also den Netzbezug nahezu auf 0 bringen. Generell vielleicht nicht unbedingt Sinn und Zweck eines BKW, aber in meinem Fall, Ferienhaus mit Platz für einige Panele und wenig Verbrauchern, fast alle mit Smartplugs abgedeckt, möglich. Nur die Spitzen von Toaster, Herd, Durchlauferhitzer (kann natürlich nicht abgefangen werden, aber soweit wie möglich), die nicht mit Smartplugs arbeiten, sollen so effektiv wie möglich bedient werden.
Mit zwei 800W Powerstreams und der DP komme ich bestenfalls auf 1600W Leistung in mein Netz und könnte das fast alles abfangen. Die Leistungsanpassung müsste dafür aber nahezu in Echtzeit funktionieren und das scheint schon am Poweropti zu scheitern, der laut Protokoll permanent aussteigt. Das scheint über den Umweg der Powerfox Cloud nicht wirklich Sinn zu machen.
Vielleicht komme ich meinem Ziel mit einem Tasmota oder Shelly EM3 näher.Würde das Ganze funktionieren, wären natürlich auch sämtliche Smartplugs nicht mehr nötig.
-
Ich habe irgendwie ein komisches Phänomen. Irgendwie entlädt sich und lädt die ganze Zeit. So wird es nichts, dass die Batterie mal voll wird.
Was kann ich machen? Habe es auf Strom-Prio stehen, doch lieber Batterie Prio einstellen?
-
@oli2023 ja das Script ist genau dafür gemacht. Es kann natürlich keine Wunder bewirken in einem System mit verschiedenen Geräten. Alle mit Latenzen. Ich schlage vor du Experimentierst mal selbst. Besorg dir eins der oben verlinkten Smartmetern, die sind recht fix und stell Ruhig mal den BaspowerOffset auf 0 und den Messmodus auf Echtzeit. Lass aber die Smartplugs besser weg.
Du wirst sehen was geht. -
@karo2204 ich schlage vor du nutzt mal die Standardeinstellung und lässt auf Stromprio stehen. Sonst kann das Script nichts regeln. Wenn’s dann nicht läuft gucken wir weiter
-
@waly_de Ich bleibe dran, Smartmeter wird gewechselt. Danke für deinen Einsatz!!
-
@waly_de So ich habe jetzt das neue Script eingespielt. Alle Einstellungen gelassen. Heute morgen mal die DM am Stromnetz komplett aufgeladen.
Habe ein bisschen was im Haushalt gemacht, der Akku ist jetzt auf 79% runter und speist 589W ein. Laut Tibber haben wir jetzt einen Stromverbrauch von -373W.
Sollte das Script jetzt nicht runter regeln, damit es auf 0 steht?
Hab mal grad unter Objects geschaut. “Real Power” bleibt bei 602W stehen und ändert sich nicht. Auch nach Neustart des Scripts nicht.
-
@karo2204 ja, solle regeln. alle smartplugs rausgenommen? Wenn sich realpower nicht ändert, kommen Messdaten vom Verbrauch vermutlich nicht an. Was sagt das log?
-
@waly_de Das Log sagt nicht viel.
Ich habe die SmartMeterID (Tibber) jetzt mal auf “powerConsumption” gestellt, statt nur “Power” (mit Minuswerten). Macht aber kein Unterschied.
SmartPlugs habe ich im Script nicht eingebunden, sind aber eingesteckt.
-
@karo2204 die plugs müssen raus, sonst können wir nicht beurteilen ob’s geht.
-
@waly_de Hab alle Plugs ausgesteckt. Das alte Script eingespielt, RealPower verändert sich jetzt. Habe aber leider nur noch 14% im Akku. Also so wieder wie vorher. Muss ich wohl wieder anstecken zum Aufladen gleich.