Geschafft: Die #Ecoflow ist in #FHEM mit mehr als nur einer #Statusanzeige eingebunden.
Da bei uns die Ecoflow den #Fernseher versorgt, war das Ziel, dass beim Sagen von "Fernseher an" (über das #Alexa #Echo System)
1. bei der Ecoflow der AC-Ausgang eingeschaltet wird
2. Der Fernseher angeht.
Während letzteres in Verbindung mit einer #FireTVBox trivial ist und schon seit Jahren funktioniert, war die Einbindung der Ecoflow alles andere als simpel. Insbesondere der Hersteller ist hier ein wenig mit Schuld, da er keine genormte Schnittstelle anbietet bzw. die vorhandene gerne einmal ändert und alles irgendwie improvisiert wirkt.
OK, während man zum Auslesen von Ladeleistung, Verbrauch und Ladezustand in FHEM nur ein #HTTPMOD-Device braucht, ist das gesteuerte Schalten wesentlich heftiger.
1.
defmod EcoFlowAPI HTTPMOD https://api.ecoflow.com/iot-service/open/api/device/queryDeviceQuota?sn=<Geräteseriennummer> -H 'Content-Type: application/json' -H 'appKey: <Applikation-Key>' -H 'secretKey: <Secret-Key>'
Applikation- und Secret-Key bekommt man beim Kundensupport von Ecoflow. Man muss nur seinen Benutzernamen von der App angeben und die Seriennummer der Ecoflow.
Der Rest sind ein paar Attribute zum hübsch machen:
attr EcoFlowAPI stateFormat <b>Status:</b> message | <b>Ladeleistung:</b> data_wattsInSum W | <b>Verbrauch:</b> data_wattsOutSum W | <b>Ladezustand:</b> data_soc %
Doch nun folgt das echt Schwierige (Danke an das FHEMForum!!!)
2.
Man benötigt ein Script, das für einen ein paar Dinge ermittelt (auf dem FHEM-Rechner ausführen):
wget -O ecoflow_get_mqtt_login.sh https://raw.githubusercontent.com/mmiller7/ecoflow-withoutflow/main/cloud-mqtt/ecoflow_get_mqtt_login.sh
bash ecoflow_get_mqtt_login.sh
Das Script wirft einige wichtige Dinge aus:
Your MQTT client connection information is:
#
# Protocol: mqtts://
# Host: mqtt.ecoflow.com
# Port: 8883
# Username: app-vieleZeichen
# Password: ziemlich lang
#
# A few valid unique client IDs for your account different MQTT clients:
# ANDROID_6245EA8D-und noch viel mehr
# ANDROID_8A6ECEF3-und noch viel mehr
# ANDROID_D8F1490B-und noch viel mehr
Und etwas später noch eine Numerical User-ID
Alles, was das Script so ausgespuckt hat, sollte man schön für sich behalten und auf keinen Fall damit hausieren gehen. Denn es sind mit dem Account und dem Gerät verbundene persönliche Informationen.
3.
Nun wird ein MQTT2_Client definiert.
define ecoflow2mqtt MQTT2_CLIENT mqtt.ecoflow.com:8883
Das Wichtige sind nun einige Attribute:
attr ecoflow2mqtt autocreate complex
attr ecoflow2mqtt clientId ANDROID_6245EA8D-und noch viel mehr
attr ecoflow2mqtt subscriptions /app/device/property/<Seriennummer des Gerätes>
attr ecoflow2mqtt username app-vieleZeichen
Über den Set-Befehl in diesem Gerät wird das Passwort hinterlegt, welches das Script angezeigt hat.
4.
Wenn alles gut gelaufen ist, hat das System bereits ein neues MQTT2_DEVICE angelegt.
Wenn nicht:
define MQTT2_EcoFlow_RiverMAX MQTT2_DEVICE ANDROID_6245EA8D-und noch viel mehr
Der Rest sind Attribute und hübsch machen. Das liest man am besten hier nach: https://forum.fhem.de/index.php?topic=127664.30 (auf der 3. Seite findet man die RAW-Definition, wo man sich die Attribute rausklauen kann.
5.
Der Rest ist beinahe Pillepalle. Ich habe einen Dummy-Schalter definiert, mit dem ich den 230V Ausgang an und ausschalten kann. Ein dazu passendes Notify nimmt die notwendig Logik auf. Beim Dummy war wichtig, ihn mit einem passenden AlexaName zu belegen, da das für die Routine bei Alexa benötigt wird.
Der Code im notify ist vergleichsweise simpel:
{if (ReadingsVal("EcoFlowDirekt","SeriennummerEcoFlow_params_inv.cfgAcEnabled",0)==0)
{fhem ("set EcoFlowDirekt 230V on");}
else{
fhem ("set EcoFlowDirekt 230V off");}}
6.
Im letzten Punkt definiere ich nur noch eine Routine in Alexa. Der einzige Trick ist, zwischen dem Einschalten der Ecoflow und des Fernsehers eine 10 sekündige Pause zu machen. Solange braucht mein Fernseher um sicher aus dem stromlosen Zustand in den Standby zu wechseln.
Eine zweite Routine übernimmt das Ausschalten: erst den Fernseher ausschalten und dann die Ecoflow.
Voila. Fertig. War doch leicht, oder?
Verdammt, es wird schon dunkel. Schade. Wochenende vorbei ☹
#ecoflow #fhem #statusanzeige #fernseher #alexa #echo #firetvbox #httpmod