Configuration MQTT EcoDevices 3

Bonjour à tous,

Depuis quelques jours, je galère pour configurer MQTT sur l’EcoDevices 3.

J’utilise Home Assistant et j’aimerai récupérer tous les éléments propres à l’EcoDevices 3 (valeurs des compteurs, index, états des entrées etc).

Dans le menu Configuration, il y a 6 champs à renseigner :

Nom du serveur : s’agit-il du nom de l ‘hôte de Mosquitto broker ?

Nom du topic : ED3 par exemple

Port : 1883

Client ID : s’agit-il de l’adresse IP de mon instance Home Assistant ?

Nom d’utilisateur : Username défini dans Mosquitto broker

Edition du mot de passe : Password défini dans Mosquitto broker

Si quelqu’un a déjà configuré MQTT ou a une idée, je suis preneur.

Merci d’avance

bonjour @riri67

C’est le topic racine de publication
Par exemple ici EDRT3

Il faut mettre l’IP du broker

Non il s’agit du nom utilisé par le broker pour gérer les clients (reprises de session, mémoire des abonnements subscribe) il doit être unique sur le réseau mqtt c’est un peu comme le nom DNS (plus facile de se souvenir de google que l’ip de google et de plus l’ip peut d’un client peut changer par exemple dans le cas d’un réseau DHCP mais pas son nom)

Sert uniquement si le broker attend une authentification des clients pour établir la connexion

Bonjour @cce66

Je vous remercie pour votre aide, malheureusement j’ai beau fouiller dans la configuration de Mosquitto broker, je ne trouve nulle part le Client ID.

En règle générale, lors de la configuration MQTT d’un appareil dans Home Assistant, seuls l’adresse IP, le numéro de port, le nom du compte (user) et le mot de passe sont demandés, comme dans l’exemple suivant.

Client ID se définit …coté client ! :wink:

Par exemple ici ED3, donc l’ecodevice se reconnecte au broker situé sur l’ip 192.168.1.130 sur le port 1883 et connecte avec ce client ID ce qui permet au broker de reprendre la session là ou elle avait été interrompue, avec les subscribes que l’ecodevice avait fait au broker (sinon il ne peut pas lui envoyer les valeurs des subscribes quand elles changent) et les publish envoyés par l’ecodevice pour les stocker avant de les diffuser au client qui y aurait souscrit

Ce n’est donc pas du coté de Mosquitto qu’il faut regarder (par contre si il a été installé via HA il est fort probable qu’il y ait des paramètres spécifiques donc il faut aller sur « Paramètres » puis « Appareils et services »

puis cliquer sur

Puis sur les « … » à droite de la roue crantée ce qui amène au panneau de la config broker


core-mosquitto est le nom du serveur à mettre coté ecodevices (si DHCP sinon il faut mettre l’IP du HA ou l’IP d’u broker MQTT si autre que HA)

(MQTT - Home Assistant)

j’avais exactement la même confusion sur le Client ID, je pensais que c’était l’IP du broker ou de HA. La précision de cce66 est utile, c’est juste un identifiant arbitraire pour le broker.

Pour ceux qui démarrent avec Mosquitto sur HA la config de base fonctionne bien, l’ED3 publie tout sur le topic racine et après c’est Home Assistant qui fait le tri avec ses entités MQTT.

Effectivement, je n’avais pas regardé de ce côté là.

L’ID Client était vide, ce qui était recommandé par défaut.

J’ai donc renseigné ce champ avec ED3 et l’ai également renseigné côté ecodevices et comme Nom du serveur j’ai mis core-mosquitto.

Par contre dans votre exemple de configuration, le Nom d’utilisateur est vide.

J’ai essayé sans nom d’utilisateur et sans mot de passe puis avec le nom d’utilisateur et mot de passe définis dans les paramètres MQTT, mais je n’ai toujours rien qui remonte sur Home Assistant.

J’ai également essayé en remplaçant le nom du serveur core-mosquitto par l’IP de HA ou l’IP de ecodevices mais rien n’y fait. Ça reste désespérément muet côté HA.

Voici les paramètres de MQTT :

Normal il faut rien mettre dans l’ID client (ou alors HA), là tu as mis ED3…comme sur l’ecodevice 3 mais cet identifiant étant unique, celui de l’ED3 est écrasé pas celui de HA => résultat il renvoie le traffic vers HA ! Un redémarrage sera peut-être nécessaire ensuite pour vider tout cela

Je viens de rectifier mon erreur. Désolé, je ne suis pas un pro de MQTT et j’ai encore beaucoup de choses à apprendre à ce sujet et je vous remercie beaucoup pour votre aide.

Néanmoins, je viens de m’apercevoir que le topic ERDT3 apparaît bien sous MQTT Explorer mais ERDT3 n’apparaît pas comme appareil dans la liste des appareils MQTT.

Est-ce normal ?

Si tu veux de l’autodécouverte par HA, je crois qu’il faut utiliser un arbre précis. Parles tu de ça ?

@cce66 est ce qu’on a cette possibilité ?

De mon coté, bien connecté RT3 à mon broker.

En revanche @cce66 sur le tools utilitaire ça veut pas se connecter.

ws://192.168.2.16:1883

J’ai bien mis mon bon user/password mais j’ai cette erreur

— Échec connexion: AMQJS0007E Socket error:undefined.
08:51:33 — Connexion à 192.168.2.16:1883 ...

PS : mon broker MQTT fonctionne bien et le RT3 se connecte bien. Je vois bien les topics dans MQTT Explorer

EDIT : Solution trouvé, cet outil n’exploite pas le protocole sur port TCP (par défaut sur 1883) standard MQTT. Il utilise le websocket. Si vous utilisez HA en broker mosquito, la config standard pour le websocket c’'est 1884.

C’est bien indiqué en bas à droite

Etrange, ça se connecte puis au bout de quelques secondes l’outil se déconnecte…

— Connexion perdue: AMQJS0008I Socket closed.
09:04:27 — Reçu sur ERT3/tic/tarif : 0.0000
09:04:27 — Reçu sur ERT3/tic/abonnement : BBRHPJB
09:04:27 — Reçu sur ERT3/total_prix/inj : 0.00
09:04:27 — Reçu sur ERT3/total_prix/gaz : 0.00
09:04:27 — Reçu sur ERT3/total_prix/eau : 0.00
09:04:27 — Reçu sur ERT3/total_prix/discharge : 0.00
09:04:27 — Reçu sur ERT3/total_prix/charge : 0.00

J’ai supprimé le CLIENT ID et plus de problème.

On peut bien activer les relais du RT3 indépendamment :wink:.

J’attends toujkours mon EBX connect pour tester le X8R

Du coup je découvre un bug du RT3. Dans TIC, je n’ai qu’une étiquette malgré un redémarrrage du RT3

image

Pourquoi toutes les étiquettes ne sont pas présentes ?

C’est vraiment dommage que même dans MQTT tout soit difusé sous forme de tableau. Même ça c’est fait à l’ancienne :neutral_face: … Ca serait tellement plus propre de faire des objets JSON avec le nom des compteurs. La grosse problématique ici que le mapping dans les tableaux peut changer si on modifie les compteurs.

Ca aurait tellement mieux d’avoir ce genre d’info en exemple

EDRT3

▶device(8 topics, 14 messages)

▼Nom de la Torre 1 = {"index torre":1,"puissance":150.2,"puissance apparente":451.2,"power_facror":0.5,......."device":{"applicationVersion":0,"dateCode":"20250116","friendlyName":"Sonde Buanderie","hardwareVersion":0,"ieeeAddr":"0x142d41fffe2fb1c4","manufacturerID":4742,"manufacturerName":"SONOFF","model":"SNZB-02D","networkAddress":56410,"powerSource":"Battery","softwareBuil…

▼Nom de la Torre 2 = {"index torre":2,"puissance":150.2,"puissance",......

Autre exemple d’une prise connectée MQTT de l’objet JSON. Sans parler d’avoir autant d’info, ce type d’objet est bien plus ouvert.

{

  "current": 0.75,

"device": {

"applicationVersion": 2,

"dateCode": "",

"friendlyName": "Prise Info Bureau",

"hardwareVersion": 1,

"ieeeAddr": "0xdc8e95fffe42d26a",

"manufacturerID": 4190,

"manufacturerName": "Schneider Electric",

"model": "EKO09716",

"networkAddress": 42900,

"powerSource": "Mains (single phase)",

"softwareBuildID": "002.009.001 R",

"stackVersion": 6,

"type": "Router",

"zclVersion": 3

},

"energy": 368.83,

"indicator_mode": "always_on",

  "last_seen": "2026-06-19T09:52:49+02:00",

"last_seen": "2026-06-19T09:52:50+02:00",

"linkquality": 152,

  "power": 101.04,

"power": 110.21,

"power_on_behavior": "on",

"state": "ON",

"voltage": 233

}

C’est un début d’exemple que j’ai essayé de proposer. Il faudrait ça pour tout en fait. Et en utilisant lesq sous topics pour les catégories (ça c’est bien le cas à date).
Les avantages c’est que ça permet aussi de rajouter des infos dans le JSON suivant l’évolution des produits en étant rétro compatible et sans rien cassé. Là actuellement que ça soit à l’utilisation (modification dans les compteurs) ou du aux developpeurs, il y a de forte probabilité d’avcoir des régressions… Quel dommage

@GCE pour ne pas avoir de regression pour les futurs devs, si vous modifiez le MQTT, je vous conseille de diffuser en parallèle des nouveaux topics (exemple : relay_state_v2) pour ne pas casser l’existant

Là mêmes les relais sont sous forme de tableau sans le nom.

Hello @loic69 j’ai la même erreur pour me connecter avec cette outils
je n’ai pas trop compris ta solution

Tu dois utiliser le port websocket du broker et non le port mqtt classique. Dans l’outil ne pas mettre de CLIENT ID. Va dans ta config du broker et regarde le port par défaut (1884) ou celui configuré

Puis dans IP (le nom du champ devrait plutôt etre URL) tu mets : ws://TON_IP_BROKER:PORT_WS_DU_BROKER

ok je vais voir ca ce soir
Merci

Bonsoir @olirusti

L’outil étant une page web affiché sur un navigateur, il n’est pas possible de se connecter sur un port direct comme généralement on le fait pour un broker avec le port 1883 mais sur un websocket comme le 9001 (on peut mettre n’importe quel port si il est le même des deux cotés broker et client qui se connecte)

Vous pouvez utiliser l’outil Broker-Monitor qui est un broker java pour les tests et debogage (pour une utilisation en prod il faut privilégier un container Mosquitto par exemple)

hello

j’ai tout essayé différent port
je n’arrive pas a m’y connecter

Oui, EDRT3 est ici la racine des topics en publish depuis l’eco3 pour qu’on puisse s’y abonner

mais il y a pas de de gestion du Discovery de HA, il fut passer par le fichier de configuration en yaml

le broker-monitor est lancé ?

Quelqu’un a t-il un fichier de config HA pour déclarer les switch / relais RT3 avec les commandes MQTT de lecture et d’écriture ?

Un exemple d’extrait de configuration.yaml pour un relay sur un IPX800v5, à adapter pour l’ED3 en pointant sur bon topic :

#MQTT
mqtt:
  #Switch
  switch:
    #VE1
    - name: Charge lente VE droite
      unique_id: switch.ve1_carport
      state_topic: "IPX/VE/CHARGE-LENTE-DROITE"
      command_topic: "IPX/VE/CHARGE-LENTE-DROITE"
      payload_on: "1"
      payload_off: "0"
      retain: true

Du coup je dirais :

#MQTT
mqtt:
  #Switch
  switch:
    #ED3 Relai 1
    - name: ED3 Relai 1
      unique_id: switch.ed3_relay1
      state_topic: "ed3/relay_state/1"
      command_topic: "ed3/relay_state/1"
      payload_on: "1"
      payload_off: "0"
      retain: true