Resolu: MQTT et Mdns

Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
pataqua
Messages : 39
Inscription : 01 juin 2017, 14:52

Resolu: MQTT et Mdns

Message par pataqua »

Bonjour,

j'utilise depuis plusieurs années des ESP8266 pour piloter mes radiateurs et mes volets roulants.
J'ai préféré créer mon propre programme plutôt que d'utiliser ESPEASY ou autre programme communautaire.
Tout fonctionne parfaitement en utilisant les commandes HTTP pour communiquer avec Domoticz.
J'avais même un petit serveur web sur chaque carte donnant quelques informations, auquel j’accède avec une commande type: "radiateur1.local/status"pour le serveur ou l'OTA.

Souhaitant rajouter un système d'arrosage multi-zone, j'ai cette fois ci utilisé le protocole MQTT au lieu de HTTP puisque certaines zones doivent communiquer entre elles.
La aussi toutes les commandes et les infos sont bien renvoyées, mais je n'ai plus accès à la carte par son nom DNS mais seulement a travers l'adresse IP et je dois donc écrire "192.168.1.25/status" pour y accéder ce qui est gênant quand les adresses IP changent.
Avez vous eu ce genre de souci avec le protocole MQTT?
Merci par avance.
Dernière modification par pataqua le 16 mai 2020, 14:50, modifié 1 fois.
Antori91

Re: MQTT et Mdns

Message par Antori91 »

Bonjour,
Je dois dire que je ne comprends guère ton problème si ce n'est que le broker MQTT doit être installé sur un serveur dont l'IP est fixe. Après, l'adresse IP étant connue, tous les clients (qu'ils soient client ou serveur au sens applicatif) de ce broker commencent par se connecter au broker dont je me répète l'adresse IP est fixe. Et encore après, tout ce petit monde communique via les API publish/suscribe de MQTT sans plus se préoccuper d'adresse IP.
pataqua
Messages : 39
Inscription : 01 juin 2017, 14:52

Re: MQTT et Mdns

Message par pataqua »

Merci de cette réponse.
En fait je n'ai pas de souci avec le broker, c'est juste qu'auparavant quand mes différents capteurs, communiquaient avec Domoticz en HTTP, je pouvais les interroger ou faire des mises à jour OTA en utilisant le nom mDNS suivi de .local dans mon navigateur.
Mais depuis que j'ai installé le protocole MQTT, ce nom mDNS n'est plus reconnu et il ne répond pas au ping.
Je cherchais simplement à comprendre quelle interaction pouvait avoir ce protocole avec le nom mDNS.
Ceci dit, c'est vraiment par curiosité puisque j'arrive pratiquement à faire la même chose en utilisant l'adresse Ip de mes capteurs, mais j'aime bien comprendre.

Merci encore et bravo pour ce site qui est une ressource inépuisable de renseignements et d'astuce.
Antori91

Re: MQTT et Mdns

Message par Antori91 »

Tu trouveras ici https://github.com/Antori91/Home_Automa ... %20modules
des exemples de programmes ESP8266 codés en Arduino qui font du MQTT et du OTA. Pour l'OTA, je n'ai jamais eu vraiment de problèmes, mes ESP8266 apparaissent rapidement dans l'IDE Arduino après leur première mise en service avec identifiant hostname OTA intégré. Par contre, je fais de l'OTA via l'IDE Arduino. Le hostname OTA de l'ESP8266 apparaît donc dans l'IDE pour éventuel reflash en WiFi depuis l'IDE.
Je comprends que toi par contre, tu fais de l'OTA via HTTP, c'est celà?
pataqua
Messages : 39
Inscription : 01 juin 2017, 14:52

Re: MQTT et Mdns

Message par pataqua »

Merci beaucoup, c'est effectivement plus clair.
Effectivement jusqu’à présent J'utilisais l'OTA à travers Visual studio code et Platformio qui je pense se sert de HTTP..
Le mix des deux protocoles expliquerait ce souci.
Je vais donc regarder l'OTA avec l'IDE Arduino que j'ai un peu lâché depuis que j'ai découvert PlatFormIO. :lol:

Merci encore pour toutes ces explications.
pataqua
Messages : 39
Inscription : 01 juin 2017, 14:52

Re: MQTT et Mdns

Message par pataqua »

Bonjour,

Après de plus amples vérifications, je me suis aperçu que le souci ne venait pas de MQTT, mais de la manière de déclarer le host de la machine.
En effet j'utilisais WiFi.hostname(myhost) pour fixer le nom de ma machine, alors qu'il fallait utiliser ArduinoOTA.setHostname(myhost).
Dans le premier cas on modifie le nom réseau pour le DHCP, dans l'autre cas c'est le nom mDNS qui est entré.
Bref dans le premier cas on n'a plus accès à la machine avec une commande type "nomdemachine.local".

Merci encore pour votre aide.
Répondre