"Nulleinspeisung" mit meinem Ecoflow-Powerstream ohne Smartplugs

I use the setting that if battery full and solar power is over current consumption, that all solar power is given to grid.
D.h. in der App ist bei ihm die Einspeisekontrolle deaktiviert.
In this case the script reduce the permanent power in steps to 0W (because i currently feed into grid).
Mit deaktivierter Einspeise-Kontrolle funktioniert das Script bei mhltheone aber nicht wie gewünscht, da von der Automation ja eine Zuvieleinspeisung ermittelt wird, und das Script deshalb den Wert für den Haushaltsstrombedarf verringert bei ihm schrittweise, bis maximal 0.
When the solar power decreases and i have grid supply again, the permanent power is increased in steps.

It makes more sense to use the current inverter output than the permanent watts for new calculation.

Sobald nicht mehr genug Solarertrag da ist, regelt das Script den Haushaltsstrombedarf schrittweise wieder hoch.

Kommentar von mir dazu: das 'schrittweise' verstehe ich nicht ganz, denn so wie ich meine Automation und das Script einsetze, müsste das bei Ausführung der Automation sofort voll regeln, aber ich habe es nicht ausprobiert.

When the solar power decreases and i have grid supply again, the permanent power is increased in steps.

It makes more sense to use the current inverter output than the permanent watts for new calculation.

Deshalb schlägt er vor, anstelle des Haushaltsstrombedarfs den tatsächlichen Einspeisewert zu nehmen.

Anmerkung von mir: ich denke auch dass das funktionieren müsste.

Aber wie Sven Erbe schreibt sieht er dieses schrittweise Regeln bei sich nicht.

‐-‐--------

Ok, ich verstehe deine Verwirrung jetzt, sorry, ich hatte das vorher nur überflogen, da bei mir die Regelung meines Erachtens ausreichend gut funktioniert.

D.h. aber auch, dass mhltheone also nur versucht hat, das Scriptverhalten bei sich zu verbessern mit deaktivierter Einspeisekontrolle, aber nicht, die Einspeisekontrolle zu emulieren

Wieder was gelernt, danke {green}:nerd:

So, nach einer Nacht drüber schlafen nochmal ein Roundup:

@mhltheone Jetzt habe ich deinen git-Kommentar richtig verstanden: ich werde jetzt auch mal die Einspeisekontrolle bei mir wieder deaktivieren und mal schaun, wie die Regelung bei mir dann funktioniert. Leider ist ab heute das Wetter eher bescheiden, mal schaun wann mein Akku voll ist.

Dein Vorschlag, anstelle des Haushaltsstrombedarfs den tatsächliche Einspeiseleistung im Script abzufragen könnte ich danach dann auch mal ausprobieren, denn die würde folgendes Verhalten bei mir lösen: Morgens, wenn der Akku über Nacht leer wurde (ich habe bei mir 5% Reserve eingestellt), wird bei hohem Strombedarf (Kaffeemaschine :grin:) der Haushaltsstrombedarf auf 600 gesetzt. Da aber die Solarleistung + Akku noch nicht ausreicht, um 600 Watt einzuspeisen, speist der Powerstream dann gar nichts ein und alles geht in den Akku: erst wenn Solar + Akku reichen, um 600 Watt einzuspeisen, legt er los, speist 600W ein, und dann regelt das Script den Haushaltsstrombedarf wieder runter. Stelle ich aber manuell in der App den Haushaltstrombedarf runter, fängt der Powerstream sofort an, wie gewünscht einzuspeisen, und dann läuft die Regelung wieder korrekt.

@balkonsolarundspeicher Danke fürs triggern und fragen, ich hätte das sonst lange vor mir hergeschoben :smile: Durch den Erkenntnisgewinn könnte ich mir die Akkustandabfrage evtl. sparen: ich bevorzuge Lösungen, die so einfach wie möglich sind.

@ps2aich

Boah, da bin ich jetzt ganz durcheinander:)

Was muss ich einstellen und im Script verändern, damit ich sicherstellen kann, dass NIE mehr eingespeist wird, als ich verbrauche?

So wie ich das verstanden habe, habe ich einige Möglichkeiten:

  1. Einspeisekontrolle auf 'An' setzen und sagen wir mal entweder über die App oder Script den Wert verändern (oder beides, geht beides? Kann der Script die App überschreiten wenn ich z.B. in der App 100W Einspeise Max eingestellt habe und der Script aber 200W sagt, oder schlagen sich beide Script und App?)

    a) wenn ich es rein über die Einspeise in der App mache, dann speißt er halt dumm max 100W rein die ganze Zeit und der Rest geht in die Batterie, falls voll, dann verpufft im Panel. Im Prinzip kann ich damit IMMER sicherstellen, dass ich nie einspeise, denn ich habe nur die Grundlast versorgt und der Rest geht über den Speicher Nachts für die Grundlast (2kWh, sagen wir mal 1.6-1.8kWh -90% sind mal gerade so 12-13 Stunden Grundlast)

    b) wenn ich es über den Script mache, dann muss ich was genau für Werte aus dem Script verwenden, um sicherzustellen, dass ich NIE was einspeise mit Einspeisekontroll An?

  2. Einspeisekontrolle auf 'Aus' - dann muss man schauen, ob Stromversorgung oder Speicher priorisieren an sind, richtig?

    a)Wenn Stromversorgung, dann gehen die vollen 800W im Idealfall in das Netz rein, das wäre dumm

    b) Speicher priorisieren, dann gehen halt wie viel ins Netz rein und wie viel in die Batterie? Oder geht fast alles auf die Batterie? - das wäre ich glaube ich die dümmste Variante und sehr selten sinnvoll.

Bei Einspeisekontrolle Aus muss also Stromversorgung prioritisieren auf AN sein, sonst ergibt es wenig Sinn.

So, jetzt zu deinem Fall kommen 600W von den Panelen, Haus hat aber nur 200W Bedarf, Batterie ist einigermaßen auch voll - wie stellst du sicher, dass du nichts einspeist, die Energie nicht in den Panelen verpufft und in die Batterie eingespeichert wird (im Prinzip nur dann verpuffen wenn die Batterie voll ist) - ohne den Batterie Zustand zu ermitteln unmöglich, oder?

@balkonsolarundspeicher Das Script setzt immer den Haushaltsstrombedarf. Dabei berücksichtigt es den bisher eingestellten und addiert den über die Automation angeforderten Bedarf der kann auch negativ sein: eine echte 100% Nulleinspeisung kann es nicht geben, schaue dir mal meine Zappelstromkurve aus dem zugehörigen Post an.

Klar ist, das du auf Stromversorgung priorisieren stellen musst, sonst geht ja immer erst alles in den Akku.

Und ja, du kannst in der App den Haushaltsstrombedarf anders setzen, das Script ändert ihn halt danach gleich wieder….

Die Einspeisekontrolle verhindert, dass bei vollem Akku einfach die gesamte mögliche Energie eingespeist wird: d.h. der Powerstream nimmt nur das von den Panelen ab, das er braucht. Der Rest der solaren Energie führt dann zu einer höheren Erwärmung der Panele.

D.h. bei Deaktivierung der Einspeisekontrolle ignoriert der Powerstream den eingestellten Haushaltsstrombedarf und speist alles ein was geht, aber nur aus Solarertrag, nie aus dem Akku.

Und ja, dann speist du ins Netz ein, das ist ja so gewollt von vielen Nutzern: quasi ein Geschenk falls du eine Zähler mit Rücklaufsperre hast, und ein ‚unendlich großer Speicher‘ wenn du einen rückwärts zählenden Ferrariszähler hast.

Das ist einfach so wie Ecoflow es umgesetzt hat, und das funktioniert gut meines Erachtens.

Ich bin erstmal mit meinem Latein am Ende, wie ich dir das noch besser erklären kann :dizzy_face:

Ja, soweit habe ich es also verstanden, das scheint genau so wie mein Post zu sein.

Ja, habe und mir auch darüber Gedanken gemacht, aber im Prinzip ist das nicht weiter schlimm, vielleicht kann man dann den Script alle 5-8 Sekunden laufen lassen. Ich weiß ja nicht welche Verbräuche du da hast, die so oft hin und her wechseln.

Wieso auch nicht aus dem Akku, was passiert mit der Energie aus dem Akku, die muss ja auch eingespeist werden wenn die Einspeisekontrolle aus ist?

Oder muss man dann spezielle IFs in der App einbauen, damit der Akku auch irgendwann leer wird.

Diese Einstellung auf AUS ist für mich irgendwie keine gute Idee.

Wieso hast du die Einstellung auf AUS gesetzt und den Script geändert - meiner Meinung nach war deine Idee früher besser, mit dem kleinen Nachteil vom ZickZack...Aber das ist nicht weiter schlimm. Kannst du das mit einigen Beispielen nochmals erklären wieso die Einstellung auf AUS besser für dich ist?

Im Prinzip wirst du mit dieser Einstellung auf AUS sogar mehr ins Netz sinnlos einspeisen als sonst, oder etwa nicht?

Bezüglich deiner Ursprungsidee, habe ich einige Beispiele rausgesucht und hoffe, dass ich deine Idee verstanden habe.

Ausgang Verbrauch Power-Consumption X=50W. Production Y =0;

Dann schickst du an dem Script 50-0 = 50W

Dann geht aber Power-Consumption auf 0 (oder bleibt der Wert bei 50W?) - was kommt dann aus den Wert "Production" aus Tibber Pulse , müsste entweder 0 oder 50W sein?

Falls Power Consumption auf 0 geht, dann wird dein Script entweder 0 oder -50W als Einspeisewert zusenden (jenachdem ob Production 0 oder 50W liefert)? Wird aus dem -50 automatisch ein +50 im Script?

Verstehe nicht so ganz was passiert mit den Werten Consumption und Production sobald der Script ausgeführt wird, vielleicht kannst du das mit einigen Rechnungen erklären?

Vielleicht liegt das Problem schon hier?

@ps2aich @balkonsolarundspeicher

Sorry Leute ich war paar Tage nicht online aufgrund von beruflichen Stress.

@balkonsolarundspeicher nochmal kurz zu den Ecoflow Einstellungen:

Stromspeicher Priorisieren heißt das einfach immer erst der Akku voll gemacht wird. Das ergibt bei folgenden Szenarien Sinn:

  1. Du hast eine Powerstation an der Verbraucher hängen die davon betrieben werden sollen. >> Hier macht eine dynamische Einspeiung aber keinen Sinn mehr.
  2. Du willst den Akku voll machen, bis der Strompreis als Tibber Kunde abends hoch geht >> Dies kannst du aber auch über das Script lösen, also Haushalt priorisieren und als Parameter Automation=false übergeben. Dann wird der Grundbedarf (im Standard, hab es bei mir angepasst) auf 0 gesetzt und die Enerige geht in den Akku.
    >>> Wenn der Akku voll ist, geht die volle Leistung ins Netz (außer sie haben es mit dem letzten Update geändert).

Haushalt priorisieren wird immer versucht solange der Solar und Akku es hergeben den eingestellten Bedarf zu decken.
Wenn die Einspeisekontrolle aktiv ist, wird nur der eingestellte Bedarf gedeckt und nicht mehr ins Hausnetz gegeben.
Wenn diese jedoch deaktiviert wird, wird der Bedarf gedeckt und wenn der Akku voll ist und Solar mehr bringt, alles in Netz gegeben.

Warum habe ich Einspeisekontrolle bei mir deaktiviert:

  1. Ich bin nicht egoistisch :wink: Also warum nicht die Energie die zur Verfügung steht und ich nicht brauche und nicht mehr in den Akku geht, nicht der Allgemeinheit zur Verfügung stellen?
  2. Ich habe viele Verbraucher die ich steuern kann und dann ist es hilfreich zu wissen, dass man mehr Leistung zur Verfügung hat. Also wenn ich mehr ins Netz einspeise, schalte ich z.B. meine Ladegeräte von diversen Akkus an um diese zu laden, lasse meine Staubroboter laden, steuere einen Warmwasserboiler an uvm. Sobald ich nicht mehr Einspeise, schalte ich diese Verbraucher wieder aus (nicht das dann dynamisch eingespeist wird und ich meinen Akku leer ziehe).

@ps2aich

Warum habe ich anstatt permanentWatts (Grundbedarf) invOutputWatts (aktuelle Einspeisewert) verwendet: (muss denke ich ausführlicher beschreiben, dachte es wäre verständlich):

Wie beschrieben habe ich Einspeisekontrolle aus und gebe somit bei vollem Akku die volle Solarleistung ins Netz.
Nehmen wir nun mal an, mein Haus verbraucht gerade 300W (ist auch als Haushaltsbedarf eingestellt) und bringt gerade 400W, dann macht das Script folgendes:

  1. Update wird erkannt ich speise 100W ein, Script holt Haushaltsbedarf 300W, zieht 100W ab und setzt Bedarf neu 200W
  2. Update wird weiterhin erkannt ich speise 100W und Script reduziert den Bedarf von 200W auf 100W
  3. Update wird weiterhin erkannt ich speise 100W und Script reduziert den Bedarf auf 0W

Nun kommt eine fette Wolke und Solar bringt nur noch 250W (Haus bräuchte weiterhin 300W) und nun geschieht folgendes:

  1. Update wird erkannt ich beziehe 50W aus dem Netz. Script holt Haushaltsbedarf der auf 0 gestellt ist und setzt neu 50W.
  2. Update geht es so weiter und der Bedarf wird von 50W auf 100W erhöht.
    So geht es weiter bis zum 6. Update und dann wird endlich der Bedarf im letzten Schritt von 250W auf 300W gesetzt und ich beziehe keinen Strom aus dem Netz mehr.

Heißt es werden 6 Update Intervalle benötigt um wieder auf der Nulleinspeisung zu sein.
Meine Änderung bewirkt jedoch folgende 2 Punkte (zu den beiden Fälllen):
Bei mehr Solar wird der Grundbedarf nicht Schrittweise bis auf 0 reduziert, da der tatsächlich eingespeiste Wert (oben also 400W) genommen wird und dann um die 100W Einspeisung reduziert wird und somit der Grundbedarf weiterhin auf 300W bleibt.
Der zweite Fall kommt dementsprechend theoretisch garnicht mehr zum Tragen, da der Grundbedarf auf meinem tatsächlichen Bedarf bereits steht und wenn die Sonne weniger ist, der Powerstream direkt den richten Wert einspeist.

Ich hoffe ich konnte dies nun ausführlich genug beschreiben, damit mein versteht, wie ich auf Schrittweise komme und warum der andere Wert für mich viel mehr Sinn ergibt.

Danke dir.

Der Rest kommt in die Batterie und sofern diese Voll ist, verpufft in den Panelen, soweit richtig oder?

Was muss ich eigentlich im Script einstellen, welche Werte verwenden wenn die Einspeisekontrolle aktiv ist und die Batterie voll ist, damit ich nur dann den Rest ins Netz stelle. Wie gehe ich da vor, hast du die Werte aus der Batterie irgendwo ermitteln können?

Und vielleicht noch die unbeantworteten Fragen des urpsrungs Scripts:

Was kommt aus Tibber an Power-Consumption und Power-Production sobald der Script läuft - ist der Wert Power Production, der von den Panelen momentan oder einfach Bedarf - Erzeugung?

moin ihr!

verstehe ich das richtig, dass sich die abgegebene Leistung des (sehr günstigen) EcoFlow WR steuern lässt, aber nur per Cloud Anbindung?

Wahrscheinlich ist die Cloud Kommunikation ja verschlüsselt? gibt es absolut keine Möglichkeit, die Leistung auch lokal vorzugeben? Was kommt, wenn man http://<lokale Netzwerkadresse des WR> macht? Sind da noch weitere Ports offen neben 443?

Diese Werte kommen vom Stromzähler über den Tibber Pulse.

Die hier vorgestellte Lösung geht über die Cloud.

Eine lokale API ist von Ecoflow nicht offengelegt und meines Wissens nicht geplant. Google mal nach Iobroker und Ecoflow, da hatte ich mal was inoffizielles gefunden vor einiger Zeit.

Ja, das ist mir bewusst, allerdings weiß ich immer noch nicht, was die erwarteten Werte sind und was Pulse an "Power production" liefert sobald Ecoflow z.B 300W liefert und der Verbrauch vom Haus 300W ist. Liefert Pulse dann 0W oder 300W (weil das "Production" von Ecoflow ist)?

Ich verstehe dich nicht. Wenn du willst, dass über den eingestellten Bedarf hinaus die Solarleistung ins Netz geht, wenn der Akku voll ist, dann ist die Option zu deaktivieren und das wars, mehr musst du nicht machen.
Die Option schickt nur die überschüssige Energie ins Netz, wenn der Akku voll ist und Solar mehr bringt.

Ähm das sind deine Zählerwerte, also Consumption dein aktueller Bezug und Production wenn du saldieren einspeist.

Dem Script musst du dann den Wert Consumption - Production übergeben zum Regeln.

Ja die Cloud API ist nun offiziell frei gegeben. Davor war es nur möglich mit einem anderen Script, ging aber auch über Cloud. Nein es geht nicht lokal.

Wenn du eine Lokale API willst, dann schau dir den APSystem EZ1 an, der bietet diese: GitHub - SonnenladenGmbH/APsystems-EZ1-API: The APsystems EZ1 Python library offers a streamlined interface for interacting with the local API of APsystems EZ1 Microinverters.

Tibber liefert saldiert deinen aktuellen Netzbezug (Consumption) oder wenn du mehr einspeist als dein Bedarf ist, deine aktuelle Einspeisung Production immer beides als positive Werte (entweder Consumption oder halt Production).

Das Script benötigt aber den Wert zum Verrechnen und wenn zu viel eingespeist wird einen negativen Wert. Deshalb wie oben beschrieben musst du Consumption-Production rechnen und diesen Wert an das Script übergeben.

Es sind auf dem Powerstream gar keine Ports offen, auch kein Port 443 (direkt). Der baut nur eine Verbindung zur Ecoflow Cloud auf.

moin zusammen, könnte jemand das Automation Script für ein shelly 3em posten?

Ich habe mir darüber Gedanken gemacht und habe folgenden Lösungsvorschlag: sobald große Verbraucher angeschlossen werden, sagen wir mal über Wert xWatt, dann die Taktung von 10 Sekunden auf 3 Sekunden reduzieren. Jetzt weiß ich aber nicht wie man das kodieren kann. Wenn es in einem Script nicht geht, gegebenfalls einen zweiten Script/timeout auswählen und starten der auf 3 Sekunden gesetzt wurde und dann wenn der Verbrauch wieder <X ist, stoppen und bei 10 Sekunden bleiben.

Nach dem ich über 1 Stunde am Beitrag gearbeitet habe wurde mir nach absenden des Beitrag volgendes angezeigt.

MalCare Firewall
Blocked because of Malicious Activities
Reference ID: 6646709296651f06e1d4ef

Danke FORUMSOFTWARE

Meine Lösung schaut so aus und setzt voraus, dass die EcoFlow Cloud Integration for Home Assistant von tolwi installiert ist. Im Python Script PowerStream dynamic power adjustment von svenerbe habe ich ein Teil auskommentiert. Schaut dann so aus:

...
# collect current permanentWatts
#quotas = ["20_1.permanentWatts"]
#params = {"quotas":quotas}
#payload = post_api(url,key,secret,{"sn":SerialNumber,"params":params})
#if payload.status_code == 200:
#  try:
#    cur_permanentWatts = round(payload.json()['data']['20_1.permanentWatts'] / 10)
#  except KeyError as e:
#    log.info(f"Error accessing data in payload:", e)
#    return # Exit the function or handle the error appropriately
#  else:
#     cur_permanentWatts = 0
#    return 4, "Integration was not able to collect the current permanentWatts from EcoFlow SP!"
#CalPermanentWatts = cur_permanentWatts + TotalPower - TotalPowerOffSet
CalPermanentWatts = TotalPower - TotalPowerOffSet
...

Damit spare ich mit der Internetkommunikation, statt 3 Aufrufe nur 2-mal.

Die Home Assistant Automatisierung schaut dann so aus:

Fortsetzung folgt...

Wieso kann ich die Automatisierung nicht Posten?

Kannst du denn nicht am Editor vorher schreiben und dann pasten? Worum ging es, hast du ein Script vorbereitet? Vielleicht in Teilen posten?

Mittlerweile hab ich im Text-Editor alles abgespeichert. Das Forum will explizit die Home Assistant Automatisierung nicht durchlassen.

sensor.haus_leistung ist die Leistung in Watt vom Zähler
sensor.powerstream_inverter_output_watts und sensor.powerstream_solar_1_watts kommt von EcoFlow Cloud Integration

alias: PowerStream NULL-Einspeisung
description: ""
trigger:
- platform: state
entity_id:
- sensor.haus_leistung
condition: []
action:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.powerstream_solar_1_watts
above: 0
sequence:
...

Vielleicht in Stückchen

Meine Lösung schaut so aus und setzt voraus, dass die EcoFlow Cloud Integration for Home Assistant von tolwi installiert ist. Im Python Script PowerStream dynamic power adjustment von svenerbe habe ich ein Teil auskommentiert. Schaut dann so aus:

...
# collect current permanentWatts
#quotas = ["20_1.permanentWatts"]
#params = {"quotas":quotas}
#payload = post_api(url,key,secret,{"sn":SerialNumber,"params":params})
#if payload.status_code == 200:
#  try:
#    cur_permanentWatts = round(payload.json()['data']['20_1.permanentWatts'] / 10)
#  except KeyError as e:
#    log.info(f"Error accessing data in payload:", e)
#    return # Exit the function or handle the error appropriately
#  else:
#     cur_permanentWatts = 0
#    return 4, "Integration was not able to collect the current permanentWatts from EcoFlow SP!"
#CalPermanentWatts = cur_permanentWatts + TotalPower - TotalPowerOffSet
CalPermanentWatts = TotalPower - TotalPowerOffSet
...

Damit spare ich mit der Internetkommunikation, statt 3 Aufrufe nur 2-mal.

Die Home Assistant Automatisierung schaut dann so aus:

aha Bild geht jetzt oder was

sensor.haus_leistung ist die Leistung in Watt vom Zähler
sensor.powerstream_inverter_output_watts und sensor.powerstream_solar_1_watts kommt von EcoFlow Cloud Integration

Die Automatisierung hat 2 Optionen:

  1. Prüft, wenn Solar 1 Eingang über 0 Watt ist dann Aktion ausgeführt die Haus Leistung + 11 Watt einspeist, das minus wird von einer anderen Automatisierung erkannt und kann zusätzliche Geräte einschalten.
  2. Prüft, wenn Solar 1 Eingang unter 1 Watt ist dann Aktion ausgeführt die Haus Leistung + 2 Watt eingespeist, diese Option ist für die Nacht
Stromversorgungsmodus in der App ist Stromspeicher priorisieren