mqtt

EcoFlow MQTT: Step by Step

Da es nicht ganz trivial ist, an die entsprechenden Zugangsdaten zu gelangen, um eine EcoFlow Power Station mit FHEM zu verheiraten, auf diesem Wege eine kleine step by step Anleitung.

Vorbereitung

Um die entsprechenden Schritte nachvollziehen zu können, sollte idealerweise ein Linux basiertes System bereitstehen, welches über die notwendigen Pakete und Grundvoraussetzungen verfügt. Dieses kann auch der FHEM Server selbst sein.

Im Beispiel gehen wir von einem Debian Bullseye aus.

Damit wir schauen können, ob die entsprechenden Aktionen und somit auch die Anmeldung funktioniert, stellen wir sicher, dass die mosquitto-Client Komponenten/Pakete auf dem System installiert sind.

apt-get install mosquitto-clients

installiert diese, falls nicht vorhanden.

Fangen wir an: UserID und Token herausfinden

In der Konsole setzen wir folgenden Befehl ab:

curl -H 'content-type: application/json' --data-binary '{"appVersion":"4.2.3.12","email":"deine@mailadresse","os":"android","osVersion":"30","password":"Dein Passwort,"scene":"IOT_APP","userType":"ECOFLOW"}' --compressed 'https://api.ecoflow.com/auth/login'

email und password sind natürlich entsprechend mit den Daten zu ersetzen, welche zur Registrierung bei EcoFlow verwendet wurden.

An dieser Stelle wichtig: Das password muss zwingend Base64 kodiert übergeben werden! Das geht online hier…

Stimmt alles, erhalten wir als Rückgabe ein wenig Kauderwelsch. Hier versteckt sich das token – Attribut. Dieses benötigen wir (nur den Inhalt ohne die Anführungszeichen). Selbiges gilt für das Attribut userId.

Holen wir uns die MQTT Anmeldedaten (EcoFlow)

In der Konsole setzen wir folgenden Befehl ab:

curl -H "authorization: Bearer Dein oben ermittelter Token" --compressed 'https://api.ecoflow.com/iot-auth/app/certification?userId=deine oben ermittelte userId'

Wichtig: Das Wort Bearer bleibt stehen!

Und wieder spuckt uns die Konsole ein wenig Durcheinander aus. Aber halb so wild.

Hier interessieren uns nun die Eigenschaften certificatePassword und certificateAccount.

Diese beiden Werte stellen unsere MQTT Anmeldedaten dar. 🙂

Die ClientId (EcoFlow)

Bei der Durchführung von get (Abfragen) oder set (Setzen) Kommandos wird eine eindeutige ClientId benötigt. Diese ist frei definierbar, muss aber am Ende die userId (haben wir uns oben geholt) beinhalten.

Beispiel:

ANDROID_FF49D11D-C723-8645-1224-FF168D814289_userId

Die Angaben der ClientId erfolgen hexadezimal! userId ersetzen wir mit unserer zuvor ermittelten userId. Die Länge der ClientId ist unbedingt einzuhalten (32 Zeichen).

Ob das Ganze nun Früchte trägt, sehen wir durch einen entsprechenden Test. In der Konsole abonnieren wir einmal das set Topic:

mosquitto_sub -h mqtt.ecoflow.com -p 8883 -t /app/device/property/RXXXXXXXXXXXXXXXX -u app-aaa -P bbb -i ANDROID_FF49D11D-C723-8645-1224-FF168D814289_userId

aaa und bbb entsprechen dabei den Inhalten der Eigenschaften certificationAccount und certificationPassword.

Was passiert jetzt?

Da wir durch unsere Unternehmungen einfach auf einem 2. Client das Property Topic abonniert haben, bekommen wir auf diesem Client entsprechende Aktionen in der App auch in der Konsole mit :-).

Folgendes Topic ist vermutlich das interessanteste, wenn es um das Setzen von Eigenschaften geht:

/app/RXXXXXXXXXXXXXXXX/thing/property/set

Und weiter in FHEM

Zunächst erstellen wir uns ein MQTT ClientDevice (quasi wie unsere Konsole):

define MeinEcoMQTT MQTT2_CLIENT mqtt.ecoflow.com:8883

Nun braucht es noch ein paar Attribute:

attr MeinEcoMQTT subscriptions /app/device/property/<Seriennummer Deines Geräts>
attr MeinEcoMQTT username app-aaa

Das Kennwort, also unser bbb, setzen wir via set über die FHEM Oberfläche im Gerät (FHEM Device).

Und das wichtigste überhaupt:

attr MeinEcoMQTT autocreate complex

Hierdurch wird automatisch das erforderliche MQTT2DEVICE in FHEM erstellt. Dieses wiederum enthält dann auch alle Informationen der EcoFlow. 🙂

Über Routinen unserer Wahl (notifys, doifs usw.) können wir nun über das MQTTClient Device die Werte der EcoFlow nicht nur lesen sondern auch setzen (publish).

Nach nunmehr knapp 4 Monaten in Betrieb, kam es noch zu keinen Störungen der Verbindung etc.. Das Ganze funktioniert also sehr zuverlässig. Ob das auch so bleibt oder ob EcoFlow da irgendwann neue Hürden einbaut, bleibt abzuwarten.

Bei Fragen – fragen….

10 Gedanken zu „EcoFlow MQTT: Step by Step“

  1. Vielen Dank. Ich habe noch wenig Erfahrung mit Smarthome und meinen Ecoflow Wechselrichter für Solarmodule und Delta 2 Akku ganz neu in Betrieb. Mit der Anleitung habe ich zumindest mal erste Verbindungsdaten bekommen.

    Ich möchte die Stromabgabe aus dem Delta2-Akku nach Bedarf einstellen. Von Ecoflow habe ich einen SecretKey und AccessKey bekommen und die Anleitung unter https://developer-eu.ecoflow.com/us/document/generalInfo.

    Ecoflow schlägt scheinbar einen ganz anderen Weg vor, oder habe ich die Anleitung hier noch nicht ganz verstanden?
    Laut Ecoflow muss man eine komplizierte Signatur aus AccessKey, SecretKey und gewünschtem Parameter erstellen, verschlüsselt mit HMAC-SHA256 und weiteren Schritten. Da bin ich völlig überfordert.

    Könnten Sie zu der Anleitung von EcoFlow etwas sagen? Vielen Dank.

    1. Hallo Ralf,
      hier gibt es verschiedene Ansätze. Zum einen klappt der Ganze Spass mit der Step by Step Variante wie hier beschrieben. Zum anderen kann man inzwischen auch den “offiziellen” EcoFlow MQTT Weg gehen.
      In “Jürgen Technik Blog” hat Jürgen das sehr schön beschrieben. Ebenfalls Step by Step. Habe die Variante der offiziellen Anbindung ebenfalls schon durchgespielt. Klappt hervorragen und basiert im Grunde auf den gleichen Daten. Hat man die offizielle Freigabe von EcoFlow erhalten wird man nach der Anmeldung feststellen, dass bereits Keys generiert wurden, wenn man die bisherige MQTT Anbindung genutzt hat.

      Zu Jürgens Blog: https://www.juergenstechnikwelt.de/photovoltaik/offizielle-ecoflow-api-mittels-fhem-und-mqtt-nutzen/

      Um eine dynamische Einspeisung zu realisieren, kann man aber auch die hier beschriebene ioBroker Script Variante zurückgreifen. Ich habe mir vorgenommen, hier ein in Gänze auf FHEM basierende Scriptlösung zu schaffen, die ebenfalls die dynamische Einspeisung steuert. Somit fiele dann der ioBroker weg (eine Fehlerquelle weniger). Die erforderlichen Commands sind in der EcoFlow Dokumentation vorhanden. Da kann man so ziemlich alles mit schalten und walten.

  2. Hallo,
    klasse Arbeit und vielen Dank für das Veröffentlichen der Infos.
    Ich habe noch keine EcoFlow, liebäugel aber damit, betreibe aber mehrere FHEM Instanzen und fände die Einbindung sehr spannend.
    Verstehe ich das richtig (wenn man mqtt.ecoflow.com abonnieren muss), dass die EcoFlow dann zwingend eine Internetverbindung bräuchte und man das nicht lokal umsetzen könnte. Was eine FHEM-Steuerung in einem Wohnmobil dann suboptimal machen würde.
    VG Rico

      1. Kleines Update: Fragt man beim EcoFlow Support freundlich an, bekommt man eine alternative Firmware auf die Delta, welche einen direkten, sprich lokalen Zugriff, auf diese ermöglicht (API). Allerdings kann man hier aktuell ausschliesslich Topics lesen und nicht schreiben.

  3. Danke, jetzt hat es funktioniert! Nun habe ich das Problem, dass ich nur ca. 10 Minuten lang Daten empfange und das auch nur, nachdem ich die Ecoflow-App einmal gestartet habe ( ich habe eine DeltaPro), gibts da schon eine Lösung?

    VIele Grüße
    Timo

    1. Den Effekt kann ich so nicht bestätigen. Geschweigedenn, dass es hier einen Unterschied zwischen einer DeltaPro oder einer DELTA2 gibt. Die API bzw. MQTT ist gleich. Schaue über die Feiertage mal, ob ich das nachstellen kann.

    2. Hallo,
      ich weiss jetzt nicht ob ich den bei dir aufgetretenen Effekt damit “erwische”, aber auch ich hatte kürzlich den Effekt, dass der MQTTCLIENT auf disconnected sprang und sich auch nicht reconnecten wollten. Nach einem Diensteneustart machte er es dann wieder eine gewisse Zeit und ging wieder auf disconnected. Lösung war hier recht simple. Einfach das aktuellste Update einspielen. Danach war Ruhe. Ich habe gesehen das hier der MQTT_CLIENT in den Updates aufgeführt war. Habe mich aber, nachdem es wieder stabil lief, nicht weiter mit dem ChangeLOG befasst. Vielleicht hilft es ja auch bei dir.

  4. Hi, vielen Dank für die ausführliche Beschreibung. Leider bekomme ich auf den zweiten curl-Befehl (mit eingesetzten Token und userid) keine Antwort. Hat siuch da evtl. inzwischen schon was geändert oder bin ich zu doof?

    Viele Grüße
    Timo

    1. Hallo,
      Fehler gefunden ;-). Bitte setze hinter Deine UserId noch ein abschliessendes ‘.
      Das scheint mir durchgerutscht zu sein. Sorry. Aber dann werden die entsprechenden Daten ausgegeben und weiter geht`s.

Schreibe einen Kommentar

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