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

Schreibe einen Kommentar

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