Piloter un ecoflow en MQTT

Bonjour,
un petit guide sans prétention pour piloter des ecoflow depuis Jeedom. Je ne savais pas trop ou le poster, il ne concerne pas directement un pugin.

Mon soucis était de piloter mes Delta 2 depuis Jeedom (et pas seulement lire des valeurs).

J’ai des panneaux solaires et j’ai souvent du surplus. Je souhaite donc rediriger ce surplus vers mes ecofow plutôt que de le donner au gestionnaire d’énergie.
Mon surplus n’est pas fixe, il varie tout le temps. Mais mes Delta2 permettent de brider la puissance de recharge de 200W à 1200W depuis l’application. L’idée est donc de configurer la recharge en fonction du surplus disponible. Lorsque j’ai du surplus, j’active la prise télécommandée de mon delta le plus déchargé pour l’allumer, puis je règle la puissance de charge au fil de l’eau selon la puissance solaire disponible.
Pour cela, je devais pouvoir piloter mes Delta2 depuis Jeedom.

J’ai commencé par demander un accès à l’API Ecoflow (via https://developer-eu.ecoflow.com/ ), ça a pris 15 jours avant d’avoir les accès API et obtenir mon couple clé/secret.

J’ai ensuite tenté de piloter depuis la version HTTP de l’API, mais sans succès. J’ai pourtant tout suivi comme il faut pour générer les requêtes, mais ça n’a jamais fonctionné alors que l’API me répondait ‹ ok ›. Je me suis tourné vers MQTT (c’est ce protocol qui est utilisé par l’appli Ecoflow).
J’ai trouvé un script shell pour obtenir les infos pour la connexion MQTT : GitHub - mmiller7/ecoflow-withoutflow: Trying to understand how to communicate with Ecoflow Portable Power Stations in OFFLINE mode. (and other useful information)
Le script est le fichier « ecoflow_get_mqtt_login.sh » qu’il faut lancer dans un shell linux. Il demande votre login/pass ecoflow, puis vous retourne vos identifiants MQTT, ainsi que les paramètres de votre serveur MQTT dédié (j’imagine qu’Ecoflow à plusieurs serveurs). Le contenu du script est clair et ne montre pas de risque pour vos identifiants. J’ai trouvé aussi ce site pour ceux qui ne maitrisent pas le shell : ecoflow , c’est supposé faire la même chose, mais le code source est moins clair pour moi, j’ai pas pris le temps de le vérifier à fond.

Le script vous donne une réponse de ce genre :

#  Protocol: mqtts://
#  Host:     mqtt-e.ecoflow.com
#  Port:     8883
#  Username: app-d794abcdefabcdefabcdefabcdef
#  Password: abcdefabcdefabcdefabcdefabcdefab
#
#  A few valid unique client IDs for your account different MQTT clients:
#  ANDROID_ABCDEF02-9DD1-9DD1-9DD1-123456789112_3456789012345647995
#  ANDROID_ABCDEF03-9DD1-9DD1-9DD1-99DE0D5C93BA_1823765354340396802
#  ANDROID_ABCDEF04-9DD1-9DD1-9DD1-E9F54C86C492_1823860354275369402

Il faut reporter ça dans Jeedom. Perso, j’utilise le plugin jMQTT, ça doit être similaire si vous en utilisez un autre.
Le truc à noter, c’est le port non standard (j’avais pas fait attention la 1ere fois).
Il faut créer un broker avec ces paramètres. Si tout est bon, il se connectera sans soucis.

Le script vous donner aussi les topics pour lire et écrire. Celui qui nous intéresse est donc celui qui se fini par « /thing/property/set »
ex : /app/3456789012345647995/R331ABCDEFGHIJK/thing/property/set
(notez que le 1er ‹ code › est identique à la fin des clients ID « ANDROID_blabla » et le second est le numéro de série de l’appareil)

J’ai créé un device lié au broker et au topic /app/3456789012345647995/R331ABCDEFGHIJK/thing/property/set.

Puis j’ai ajouté une commande action de type « curseur ». L’appli envoie des puissances par palier de 100W, de 200W à 1200W. Je ne sais pas les conséquences d’envoyer plus, je déconseille d’essayer. Pour mes tests, je suis resté sur les paliers de l’appli (200, 300, etc).
le topic est toujours le même : /app/3456789012345647995/R331ABCDEFGHIJK/thing/property/set
La valeur est tirée de la docs API Ecoflow légèrement modifiée (j’ai repris celle-ci de l’appli offcielle) : {"from":"Android","id":"147331051","isMatter":0,"moduleType":5,"operateType":"acChgCfg","params":{"chgWatts":#slider#,"chgPauseFlag":255},"version":"1.0"}
J’ai juste remplacé la valeur par #slider#. l’id est fixe, ça ne pose pas de soucis, ça sert pour aller chercher le message de réponse correspondant dans le topic ‹ get ›, ce que je ne fais pas.

Via les bon paramètres, on peut activer les sorties AC ou USB, gérer certaines puissances, etc

Dernière précision, tout ceci ne fonctionnait pas avant que mes delta2 passent sur le firmware v1.0.1.158, je ne pouvais faire que de la lecture d’infos.
Et enfin, chaque modèle d’ecoflow à son propre langage, donc lire la doc de l’API pour trouver les valeurs de paramètres. Ceux ici sont spécifique aux Delta 2

2 « J'aime »

Salut, merci pour ton partage, je vais regarder cela, mais sinon tu as également la possibilité d’utiliser Ecoflow par MQTT, cela te permets également d’avoir les différentes commandes. Voici par exemple ce que cela donne chez moi:

Avec pas mal d’autre possibilités , pour des Delta 2 cela donne pour ce que j’utilise:
image


image
image

Mathieu

Bonjour,

J’ai tenté de faire la même chose sans succès , est ce que le short name demandé à de l’importance ?
La partie script a bien foncitonné, j’ai bien eu tous mes identifiants mais ensuite la partie souscription rien ne remonte.

Bonjour,
J’ai eu un symptôme similaire au début de mes tests. Le topic ne remontait rien. Il faut lancer l’appli sur le smartphone pour que ça bouge. Le topic de remontée ‹ général › est différent de celui de l’envoi des commandes; il n’utilise pas lé clé privée:

J’ai pas mal tâtonné sur jeedom pour trouver les bons formats de données. Mais ce qui a toujours fonctionné, ce sont les lignes de commande mosquito fournie par le script. Elles m’ont permis de vérifier que les identifiants et topics était fonctionnels.
La première permet de tester le topic et d’être sur que les ID sont bons. La seconde permet de voir ce que l’appli officielle envoi (et permet donc de copier/coller les requêtes dans la troisième).

1 « J'aime »

Bonjour,

Merci pour le tuto.
J’arrive à récupérer les informations via le site (le Shell ne fonctionne pas).
Je pense que j’ai réussi à configurer le broker

Mon objectif dans un premier temps serait de récupérer des infos comme la puissance .
J’ai créé un device lié au broker et au topic
ex : /app/3456789012345647995/R331ABCDEFGHIJK/thing/property/set → C’est set ?

par contre je voudrais avoir une commande de type info
et la, je ne suis pas assez fort pour comprendre la doc API Ecoflow …

je cherche les infos d’un powersteam …

merci d’avance

Bonjour,
je cherche aussi la commande pour le powerstream.
Car pour le moment la commande : /app/device/property/« id_powerstream »
retourne des caractères qu’il semble être codé.

Si vous avez des infos