EcoFlow Delta2 AC Output

FHEM MQTT EcoFlow

Wie die Anbindung einer EcoFlow Powerstation in via MQTT gelingen kann, hatte ich ja schon in einem vorhergehenden Beitrag kurz angerissen. Hier nun ein wenig mehr Details und erweiterte Möglichkeiten.

Grundsätzlich liest man die erforderlichen Daten zur EcoFlow über die durch den Support freizugebene API Anbindung aus. Die dann zurückgelieferten Informationen sind jedoch recht spärlich. Neben der aktuellen Ein- oder Ausgangsleistung erhält man lediglich Informationen zur Restlaufzeit und dem Akkustand.

Interessant wäre es nun auch weitergehende Eigenschaften der PowerStation auszulesen, um hier aktiv und dynamisch im Rahmen der Möglichkeiten der zum Einsatz kommenden Gebäudesteuerung aktiv werden zu können. Aber auch das ist möglich.

Wie bereits erläutert, kann man sich die zur Nutzung der MQTT Schnittstelle erforderlichen Informationen ermitteln. Siehe hierzu den hervorragenden Blog Beitrag bei Hausautomatisierung.

Über den FHEM MQTT2 Client lassen sich dann auch Parameter innerhalb der EcoFlow setzen. Einschalten des AC Ausgangs bzw. setzen der Ladegeschwindigkeit seien hier nur beispielhaft genannt.

Über eine kleine aber sehr feine Erweiterung des MQTT2 Clients, lassen sich so ziemlich alle Parameter der EcoFlow auslesen. Das ist besonders dann interessant, wenn man den aktuellen Status der PowerStation auslesen und in FHEM nutzen möchte.

Meine Anforderung war es, nur dann in den Autarkmodus zu wechseln, wenn sichergestellt ist, dass die AC Ausgänge auch eingeschaltet sind. Dieses in Gänze unabhängig von der EcoFlow App.

Ausgehend davon, dass eine Konfiguration des MQTT2 Clients erfolgt ist (siehe oben genannten Blogbeitrag), nimmt man folgenden Erweiterung am Clienztdevice vor:

attr myMQTTClient subscription /app/device/property/XXXXXXXXX
attr verbose 3
attr autocreate complex

XXXXXXXXX ist hier natürlich durch die eigene Seriennummer der EcoFlow zu ersetzen!

Insbesonders wichtig sind hier die subscription zum abonnieren des MQTT Topics sowie das autocreate!

In diesem Zusammenhang ist es wichtig, dass das globale autocreate der FHEM Instanz auf enabled gesetzt ist.

Nach dem Setzen der Attribute wird dann automatisch ein MQTTDevice erstellt, welches alle möglichen Parameter als Reading bereitstellt.

Hinweis: Die Readings sollte man idealerweise mit dem Atttribut event-on-change-reading direkt auf dem neu erstellen Device eingrenzen. Ansonsten kann es passieren, dass der FHEM Instanz ein wenig die Puste ausgeht und die Oberfläche nur noch träge reagiert.

In meinem Fall sieht das wie folgt aus:

attr MQTTDelta event-on-change-reading params_mppt.cfgAcEnabled.*

Somit wird nur noch das Reading zum AC Ausgang berücksichtigt. Dieses enthält den Wert 1 wenn eingeschaltet oder eben 0 wenn ausgeschaltet.

Readings via MQTTDevice:

Prinzipiell erübrigt sich durch die MQTT Nutzung die klassische API Anbindung. Es sei jedoch darauf hingewiesen, dass das Ganze zum jetzigen Zeitpunkt noch nicht offiziell durch EcoFlow kommuniziert bzw. supported wird.

Mit den so geschaffenen Möglichkeiten kann man so ziemlich alles mit der EcoFlow anstellen. Viel mehr geht fast nicht.

5 Gedanken zu „FHEM MQTT EcoFlow“

  1. Fast genau einen Monat später habe ich nun ein System am laufen. Eine Delta 2 pro speist nachts mit Hilfe eines PowerStream ein paar Watt in mein Hausnetz. Ich würde das ganze gerne weiter optimieren und scheitere gerade an der Überschusseinspeisung mit Hilfe von mqtt.
    Meine Delta 2 pro ist in fhem eingebunden und ich möchte das reading “__params_inv.SlowChgWatt” gerne im mqtt2 device ändern. Nur wie tue ich das? Kannst du mir vielleicht helfen?

    Viele Grüße

    1. Hallo, das ist doch schonmal super. Das setzen der Parameter erfolgt über ein MQTT2_CLIENT Device publish.
      Beispiel zeigt, wie man AC auf on schalten kann.

      set DELTA2MQ publish /app/XXXXXXXXXXXXXXXXXXXXXXXXXXXX/RXXXXXXXXXXXXXXXXXXX/thing/property/set { “params”: { “enabled”: 1, “out_freq”: 255, “out_voltage”: 4294967295, “xboost”: 255 }, “from”: “iOS”, “lang”: “en-us”, “id”: “XXXXXXXXXXXX”, “moduleSn”: “XXXXXXXXXXXX”, “moduleType”: 5, “operateType”: “acOutCfg”, “version”: “1.0” }
      Da ich aktuell selbst keinen PowerStream einsetze, nimmt die DELTA2 den Param nicht an.
      Da ich die einstellbaren Parameter der PowerStream nicht kenne an dieser Stelle die Frage, wie dynamisch die Einspeisung überhaupt einstellbar ist? Via MQTT kann man “nur” die Werte setzen, welche via APP auch möglich sind. So setze ich beispielsweise in Abhängigkeit des Solarüberschusses, die Ladeleistung via AC. Die Panels hängen bei mir nicht an der DELTA2, sondern direkt im Hausnetz. Die Laderegulierung etc. erfolgt via Auslesen des elektronischen Zählers und entsprechender FHEM Logik. Hast Du auch Plugs im Einsatz oder nur die PowerStream? Mit gekoppelten Plugs reguliert die DELTA dann die Höhe der Einspeisung. Aber das Ganze dann eben ausgehend von EcoFlow selbst. Grundsätzlich – und so verstehe ich Dein Vorhaben – geht das auch ohne die Plugs und man steuert es eigenständig via FHEM. 🙂

      1. Vielen Dank für die Antwort. Ich möchte die Ladeleistung der Ecoflow regeln. Ich habe auch einen shelly3em in fhem eingebunden und möchte die ac Ladeleistung des Ecoflow in dessen Abhängigkeit ändern. Also bei -200W shelly-wert Ecoflow Ladung “ON” (via hue Steckdose), wenn dann trotz abgeschaltetem Ecoflow -100W vom Shelly angezeigt werden, Set Ecoflow Ladung auf 300W usw.
        Dafür müsste der Wert “__params_inv.SlowChgWatt” zuständig sein, aber ich bekomme den nicht gesetzt bzw. weiss nicht wie der Set Befehl lautet. Nur via App.

        Ich habe auch zwei Plugs im Einsatz und das funktioniert hervorragend. Ab 20:00 werden 100w Grundbedarf + bedarf der Plugs vom Ecoflow/powerstream ins Hausnetz eingespeist.

        1. Hi, hab ich es doch geahnt. Hab´s falsch verstanden 🙂
          genauso handhabe ich das auch, da ich ausschliesslich, ausgehend vom Überschuss, via AC lade.
          Den Parameter der den Ladestrom beeinflusst ist chgWatts.Der lässt sich problemlos über den MQTT2_Client setzen.
          Damit Du nicht mir negativen Werten rechnen/arbeiten musst (Überschuss) empfehle ich, dass Du Dir eine Funktion zur Hilfe nimmst, welche den Überschuss in ganzen positiven Zahlen, zudem gerundet, errechnet. Die Funktion packst Du Dir in die 99_myutils.pm und rufst diese via at job sekündlich auf. Das macht der FHEM schon mit ohne das die Last steigt. Das Ergebnis schreibt Dir die Funktion dann in ein UserReading eines Devices Deiner Wahl. Damit kannst dann super arbeiten.

          Script zur Überschussberechnung:

          sub PVDiff(){

          my $pvover=ReadingsVal(“Stromzaehler”,”power”,”0″);
          chomp $pvover;
          if ($pvover < 0) { $pvover *= -1; #Vorzeichen entfernen my $ueberschuss = int($pvover / 10) * 10; fhem("setreading Stromzaehler PVDiff $ueberschuss"); } else { fhem("setreading Stromzaehler PVDiff 0"); } } Hinweis: Auf volle 10 gerundet Die "Laderegulierung" realisiere ich via einem DOIF und Ladestromdummys. Reagiert im Sekundenbereich und ist absolut zuverlässig 🙂

  2. Vielen vielen Dank für das Teilen deines Projektes. Es hat mich so sehr “inspiriert”, dass ich mir jetzt auch ein Ecoflow-System aufbauen werde.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert