"Nulleinspeisung" mit meinem Ecoflow-Powerstream ohne Smartplugs

Hallo zusammen,
wie schonmal im Ecoflow-Thread von @zarathustra angekündigt (EcoFlow Powerstream und Delta > eine Enttäuschung setzt sich fort - #33 von ps2aich - Anlage allgemein - Akkudoktor Forum), habe ich mir jetzt mit Hilfe vieler freier Software-Komponenten eine quasi "Nulleinspeisung" mit meinen Ecoflow Powerstream Balkonsolar-System ohne Verwendung der Smartplugs zusammengebastelt. Credits gehen an die jeweiligen Entwickler, ich habe tatsächlich nur vorhandenes Know-How genutzt.
"Nulleinspeisung" schreibe ich hier bewusst mit Anführungsstrichchen, denn perfekt funktioniert das prinzipbedingt nicht.
Mir war wichtig, dass ich ohne Elektriker auskomme, d.h. ohne invasive Maßnahmen im Sicherungskasten/Zählerschrank.
Prinzipiell gibt es hier viele Wege nach Rom, ich bin jetzt exakt diesen einen gegangen:

Zusammenfassend habe ich

  1. Eine moderne Messeinrichtung (digitaler Stromzähler) mit IR-Schnnittstelle
  2. Einen Tibber Pulse zur Abfrage des Momentanverbrauchs des ganzen Hauses bzw. der Zuvieleinspeisung am Zähler
  3. Einen Raspberry Pi mit Home Assistant zur Steuerung
  4. Den Ecoflow Powerstream mit Cloudanbindung zur Einspeisekontrolle und zum Anschluss zweier Solarmodule (400W Süd, 470W West)
  5. Einer Ecoflow Delta2 als 1 kwH Speicher mit einem Solarmodul 470W West
    verwendet, um es zu realisieren.
    Alternativ würde das aber mit jedem Sensor gehen, der den Gesamtverbrauch des Hauses erfasst, also einem Shelly Pro 3EM (muss IM Sicherungskasten installiert werden), einem DIY Lesekopf für einen Digitalen Stromzähler (z.B. Hichi TTL), oder einem everHome Ecotracker, oder einem powerfox von poweropti:
    --> Einzige Vorraussetzung ist, dass man ihn im HomeAssistant auslesen kann.
    Ein Nachteil bei meiner Lösung ist, dass es über die Cloud geht, und damit das Timing völlig unklar ist, was auch zur nicht wirklich guten Regelung der Nulleinspeisung beiträgt.

Die Details schreibe ich jetzt im nächsten Post, mein Versuch, die komplette Lösung in einem Post zu schreiben wurde als Suspicious Malware erkannt {green}:displeased:

1 „Gefällt mir“

So, jetzt zu den Details, Hintergrundinfos und Credits. Vielleicht erleichtert es jemanden den Einstieg.
1.
Den Tibber Pulse kann man beim Stromanbieter Tibber für ca. 100 Euro erwerben und nach Registrierung nutzen, auch ohne einen Tibber Stromanschluss zu haben. Ob das dauerhaft gehen wird, weiß ich nicht, da ich inzwischen einen Tibber Stromtarif habe.
Mit der Registrierung kann man über das Tibber Developer Program (https://developer.tibber.com/) ein Access-Token becommen, mit dessen Hilfe man später die Tibber-Integration im Home Assistant verwenden kann.
Ich habe einen Iskra Zähler mit nur einem Zähler und Rücklaufsperre, allerdings bekommt man über die IR-Schnittstelle die Einspeise-Leistung trotzdem übermittelt, sie wird nur nicht gezählt.
Ich habe die Batterien durch ein Netzteil mit Batterie-Dummies ersetzt.

1 „Gefällt mir“

Dann habe ich mir einen Raspberry Pi 4B mit Standardkomponenten zusammengebaut und über den normalen Raspberry Pi-Flasher das Home Assistant-OS auf eine MicroSD-Karte geflasht.
Als MicroSD-Karte habe ich so eine Endurance-Karte verwendet, damit sie langfristig durchhält, aber inzwischen eine günstige stromsparende SSD (Intenso) mittels externem USB-Gehäuse angeschlossen, die wird nach Neustart des Raspberries erkannt, und in den Einstellungen des HomeAssistant kann man das System dann von der MicroSD-Karte auf die SSD übertragen.
Grundsätzlich würde ich Anfängern hier z.B. dieses Video empfehlen: https://www.youtube.com/watch?v=KKj9V-tbLPY&list=PLnQ5CgUMCvdZgdP9jXstvlZ4Lbt38WaCA&index=5
Zusätzlich macht es Sinn, den FileEditor zu installieren: Das kann man z.B. hier anschauen: https://www.youtube.com/watch?v=vYVVRySM0B0&t=592s

1 „Gefällt mir“

Um den Tibber Pulse abzufragen, habe ich die Integration nach Anleitung installiert: Tibber - Home Assistant
Die zwei Sensoren, die ich dann brauche, beschreibe ich später.

Um die Einspeiseleistung des Ecoflow Powerstream über die Cloud zu steuern, braucht man als erstes einen Developer-Zugang: diesen kann man unter https://developer.ecoflow.com beantragen: Mit seinen Ecoflow-Zugangsdaten einloggen, dann auf IoT Background clicken: hier muss man zuerst einen Zugang requesten, dass dauert ein paar Tage. Danach kann man hier einen AccessKey erzeugen, den man später für das Script in HomeAssistant braucht.

1 „Gefällt mir“

Die eigentlich Anbindung an die Ecoflow läuft über ein Python-Script: um das überhaupt ausführen zu können, muss man pyscript installieren, das es aber nicht als geprüfte Integration vom HomeAssistant selbst gibt, sondern nur über den Home Assistant Community Store (HACS), den man zuvor installieren muss.
Also:
a) Zuerst den HACS installieren. Ist sehr aufwendig, ich habe es mit Hilfe dieses Videos gemacht: https://www.youtube.com/watch?v=uwEzePULIyo
b) Dann pyscript installieren über das HACS: Hier habe ich dieses Video von Mr. Togi verwendet, in dem auch auch das als nächstes benötigte Script installiert wird.
Aber Achtung: hier wird auch noch eine Ecoflow-Integration installiert, die NICHT notwendig ist. Ausserdem funktioniert seine Automation meiner Meinung nach NICHT.
Aber zumindest wird pyscript und das Script erklärt: https://www.youtube.com/watch?v=AxGYes9xIdo
c) Das Script zur Anbindung kommt aus dieser Quelle und von dort wie im vorigen Punkt erklärt installieren: GitHub - svenerbe/ecoflow_dynamic_power_adjustment: Service Description: EcoFlow Device API Integration for Power Stream Control
Das Script macht folgendes: im Script selbst trägt man seine Ecoflow-Zugangsdaten ein (Key und Secret) und ruft es später mit der Seriennummer aus einer Automation auf.
Intern ruft es zuerst die bisherige Einspeiseleistung des Powerstreams aus der Cloud ab, und verrechnet es mit der gewünschten Einspeiseleistung und sendet diese über die Cloud an den Powerstream.

1 „Gefällt mir“

Dann fehlt noch die Automation:
Hier habe ich die bisher einfachste Lösung gewählt (ähnlich wie im Video von Mr. Togi), allerdings die Berechnung des Parameters des Script für die gewünschte Einspeiseleistung korrekt und an die von meinem Tibber-Pulse gelieferten Werte angepasst.
D.h.: Ich lege eine Automation an (wie Beschrieben im Video von Mr. Togi), die alle x Sekunden ausgeführt wird (bei mir z.B. 10 Sekunden mittels "seconds: /10").
Den zu übertragenden Wert berechne ich aus den Sensoren des Tibber-Pulse: Power-Consumption - Power-Production.
Beim Tibber und meiner Messeinrichtung ist es so, dass Entweder "Power-Consumption >= 0" ist und damit "Power-Production == 0", oder "Power-Consumption == 0" und "Power-Production >= 0". Deshalb ziehe ich einfach Verbrauch von Produktion ab und habe so meinen Einspeisewert.
Die komplette Automation sieht dann so aus (ich habe die Seriennummer und den vollen Sensor-Namen ge-ixed, er entspricht dem Namen, den ihr für euren Anschluss gewählt habt in der Tibber App):
Die Sensor-Namen bekommt man schön mit Code-Vervollständigung im Editor.

Die Sensorwerte sind immer Strings, deshalb wandle ich sie hier in Float-Zahlen und runde sie, für den Tibber-Pulse würden wahrscheinlich auch als Integer-Zahl reichen, da ich keine Kommawerte bekomme, aber bei anderen Sensoren sieht das anders aus. Da ich aber noch nie mit Python programmiert habe alles unter Vorbehalt, zumindest funktioniert es so bei mir.

Edit: Was ich vergessen habe: in der Ecoflow-App muss man jetzt natürlich die Wlan-Plugs wegklicken und auch die Einspeisekontrolle aktivieren:

1 „Gefällt mir“

So, das wars eigentlich, an sich nur ein Zusammenkonfigurieren bestehender Komponenten.
Jetzt kommen wir mal zu den Nachteilen dieser Art von Nulleinspeisung:
Da ich ja periodisch Abfrage, und dann die bestehende Einspeiseleistung in der Cloud abfrage, sie neu berechne, wieder in die Cloud schicke, und dann erst der Powerstream anfängt nachzuregeln,habe ich eine nicht-kalkulierbare Zeitdifferen zwischen Sensor-Abfrage und Einstellung der neuen Soll-Einspeisung:
Das führt dann in der Regel zu solch einem Zickzack:

Man schalten einen Verbraucher kurz ein. Irgendwann innerhalb des nächsten Zeitrasters (Bei mir 10 Sekunden, ich will die Cloud hier noch nicht öfters triggern da ich die Quotas nicht kenne) stellt er das fest,und erhöht die Einspeisung. Dann ist der Verbraucher wieder aus, und ich speise zu viel ein: Wiederum innerhalb des Zeitrasters wird dies abgefragt und nachgeregelt.
Ich habe also bei nicht konstantem Verbrauch immer so ein Zickzack: kurz Verbrauch hoch, dann gleichen Wert als Einspeisung, und dann fängt es sich wieder.
Hier muss ich mir mal Gedanken machen, wie ich das mit meinem Mitteln besser hinbekommen könnte und ein wenig ausprobieren.

1 „Gefällt mir“

P.S.: Ich habe noch ein Zusatzgoodie für alle Tibber-Stromvertragsbesitzer:
Was noch als Ergänzung für mich gefehlt hat war, die Tibber-Preisvorhersage auf ein Home Assistant Dashboard zu bekommen.
Dafür hat bereits jemand einen Rest-Sensor für den Home Assistant gebastelt, den findet man hier: Tibber sensor for future price (tomorrow) - #23 by p1ranha - Feature Requests - Home Assistant Community
Zur Anzeige habe ich dann, ähnlich wie im vorigen Link schon beschrieben, die sog. apexcharts-card verwendet, die man über den HACS einfach installieren kann.
Nach Neustart des Home Assistant kann man auf einem Dashboard eine entsprechendes Element anlegen, und dann habe ich folgende Konfiguration von MrM dafür verwendet: Tibber - Schedul prices upcoming 24 hours prices! - #54 by MrM - Feature Requests - Home Assistant Community
Nach persönlichen Anpassungen sieht das ganze dann so bei mir aus:

1 „Gefällt mir“

Immerhin kann die Tibber-App ein halbwegs brauchbares Monitoring leisten - das ist wichtig.

Meine Regelung läuft komplett ohne Cloud und sogar rein kabelgebunden, auch per Lesekopf ohne Eingriff in den Zählerschrank.

1 „Gefällt mir“

Ja, ohne Cloud würde ich auch bevorzugen, und werde daran auch weiter arbeiten. Ist für mich momentan ein Trade-Off zwischen Wissen aufbauen, Zeit aufbringen und sonstigen Aktivitäten {green}:cool:

Wenn die Cloud spinnt oder der Powerstream mal wieder Probleme mit dem Wlan hat, funktioniert das dann immer eine Weile sehr bescheiden, um dann wieder tagelang ohne Probleme zu laufen. Aber daran kann ich ja nichts ändern solange ich die Komponenten so habe und einsetze, deshalb sehe ich das entspannt.

@e-t0m Ah, jetzt habe ich mir deinen Thread zur Nulleinspeisung angeschaut, das ist ja etwas völlig anderes: meine zusammengeklickte Lösung wäre z.B. vor 3 Monaten so noch gar nicht möglich gewesen und setzt auf sehr herstellerspezifische Komponenten und minimalem Glue-Code, deine dagegen setzt sehr viel mehr auf Basiskomponenten und viel Eigenprogrammierung.

Respekt, ich will die Mannmonate an Arbeit gar nicht abschätzen, die du da reingesteckt hast.

@ps2aich Danke! Es gab nichts Vernünftiges, also hab ich was geschrieben - und es wuchs. :slight_smile:

Auch die Anlage wuchs weiter und ist noch nicht ausgewachsen :wink:

Hallo zusammen,

ich betreibe das genauso, bei mir ist das Problem das sich die cloud oder der Powerstream aufhängt, relativ regelmäßig nach 10-12 Stunden werden keine änderungen übernommen weder von dem Script noch aus der EF App. Ist es möglich das das auch aufgrund schlechten WLAN empfangs ist? Bin gerade etwas ratlos...

@kefff Dass sich der Powerstream aufhängt hatte ich so noch nicht.
Wenn, dann spinnt meines Erachtens die Cloud, d.h. laut App ist der Powerstream offline, laut meinem WLAN (FRITZ!Box + Mesh-Repeater ) aber connected. Das gibt sich dann nach eine paar Stunden wieder.

Ob sich in der Zeit die Regelung komisch verhalten hat, kann ich nicht mehr sagen, das war zufälligerweise ganz am Anfang als ich noch am Ausprobieren war, aber - toi toi toi - lief es die letzten 1 1/2 Wochen stabil.

Wie behebst du dann das Problem? Trennst du den Powerstream vom Solar und Powerstation?

Überhitzt dein Powerstream vielleicht?

Insgesamt habe ich das Gefühl, dass fast alle WLAN-Microwechselrichter Probleme mit dem WLAN haben, und speziell mit FRITZ!Boxen und Mesh.

Ich habe kürzlich den WLAN-Repeater getauscht, weil der Repeater sich mal komplett aufgehangen hat nach 4 Jahren Dauerbetrieb, seitdem läuft es gefühlt stabiler.

Etwas anderes hatte ich kürzlich ein paar Mal, und zwar hatte sich die Delta2 aufgehängt, war 100% voll, der Lüfter lief, sie hat aber keine Energie an den Powerstream geliefert. Dann hat immer ein „Einschalten“ am Taster geholfen, dann ging der Lüfter aus und sie lieferte wieder Energie.

Ich habe sie jetzt auf Dauer-An gestellt, bisher kam es nicht mehr vor, aber sicher bin ich nicht, ob es nur Zufall ist und es zeitnah wieder auftritt.

Einmal hatte ich im HomeAssistent Log eine Exception des Python-Scripts, da aber auch gleichzeitig eine Exception der Tibberintegration drin war, ignoriere ich das momentan als Einzelausnahme.

Was mir noch dazu einfällt: wie oft lässt du deine Automatisierung laufen? Auch alle 10 Sekunden wie ich, oder öfter?

Genau ich trenne dann den Powerstream von allem, netz, akku und solar. Dann stecke ich ihn wieder an und alles läuft top... Ich hab nen Ubiquiti Mesh am start, aber könnte ja das gleiche sein. Der Wechselrichter wird bei mir eigentlich nie in der App als Offline angezeigt...
Der Wechselrichter wurde recht warm daher liegt er jetzt auf der Plastik kappe, seitdem ist die Temperatur wesentlich besser. Das script führe ich mittlerweile nur alle 15sek aus, war erst bei 5, 10 und jetzt 15. Weil mein tipp auch irgendwie ist das sich die API verschluckt.

Noch ein komisches verhalten was mir gerade wieder einfällt, manchmal kann ich dann per app den verbrauch auf 0 stellen aber ein paar sekunden danach bekommt er wieder 600W vorgeschrieben, als ob wirklich irgendwo das script oder die API hängt, oder halt der Wechselrichter...

Das Verhalten habe ich prinzipbedingt immer, wenn ich einen hohen Verbrauch hatte, aber nicht genügend Solarleistung oder Speicher: dann regelt das Script den Haushaltsbedarf halt immer auf Maximum hoch, kann es aber nicht liefern. Sobald dann genügend Einspeiseleistung zur Verfügung steht, regelt er sich wieder ein auf den tatsächlichen Verbrauch.

Hm, dann kann ich nur raten es mal eine Weile laufen zu lassen, ob es sich wieder fängt. Weil wenn er in der App nicht als offline angezeigt wird, scheint er ja noch zu laufen.

Was du temporär noch machen kannst, ist das Debug-Logging einzuschalten, so wie am Ende des Readme.md im Github des Scripts erklärt ( allerdings steht da, man soll den Logging- Ausschnitt im automation.yaml einfügen, es muss aber ins configuration.yaml). Nach Neustart des Home Assistant kannst du dann mit dem FileEditor das Logfile anzeigen lassen und prüfen, was das Script rausloggt (der Watt-Wert ist immer x10, d.h. bei 600W wird 6000 gesendet). Da das Script ja auch den eingestellten Wert abfragt, sieht man zumindest indirekt ob die Cloud da ist.

Später nicht vergessen, das Logging wieder abzuschalten (also die Einträge wieder rausmachen), sonst ist irgendwann deine SD-Karte voll, wobei des Logging rollierend eingestellt sein kann, das habe ich nicht überprüfen können. Sicher ist sicher {green}:cool:

Hm, ich hätte gedacht, dass bei zu häufigem Ausführen so eine Art Schutz vor durchdrehenden Apps greift, aber ich führe mein Script jetzt ja permanent alle 10 Sekunden aus ohne dein Verhalten zu beobachten.

Schwierig so etwas zu debuggen …. {green}:displeased: