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….

5 Gedanken zu „EcoFlow MQTT: Step by Step“

  1. 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.

  2. 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