Bonjour à tous,
Depuis quelques semaines, je suis confronté à des séries de messages MQTT incontrolés de temps en temps : genre lumières qui se mettent clignoter, prises Z-Wave / Chacon qui s’allument ou s’éteignent. Les index de mes compteurs d’impulsions qui se retrouvent effacés, du coup, ça ne compte plus. Quand c’est la prise du frigo ou du home cinema avec le vidéoproj qui s’éteint, ça pue vraiement ! Le WAF pense que « je joue » avec les lumières.
Mon environnement est le suivant. J’ai installé Mosquitto en local sur la machine Jeedom via le plugin JMQTT. Récemment, j’ai remplacé le plugin OpenZWave par ZWave-JS UI qui tourne de façon indépendante sous Docker. De plus, j’ai exporté certaines commandes des equipements RFPlayer via le plugin JMQTT. Ainsi, toutes les données dont j’ai besoin sont publiées en MQTT. Ensuite, j’utilise Node-RED pour gérer presque tous les scénarios.
Jusque là, ça tourne presque sans interface utilisateur final côté Jeedom.
J’ai environ 4000 topics qui proviennent des différents protocoles (dont 3500 avec ZWave-JS) et 1000 topics utilisables pour les équipements JMQTT et les scénarios. Cela commence à faire du monde.
Au passage, j’avais installé quelques applis MQTT sur mon smartphone pour des faires des interfaces très basiques. Bon, c’est bien, mais comme j’ai 700 commandes à ajouter à la main, je passe à JMQTT.
Avec le super plugin JMQTT, je remplace presque 200 équipements des plugins Virtuel et OpenZWave par des équipements JMQTT. Au passage, je salue la fonction ‹ template › de JMQTT. Dans les commandes des équipements JMQTT, j’historise sans moyenner et en autorisant la répétition des commandes afin de bien voir lorsque je réçois plusieurs fois le même ordre.
Au début, j’avais laissé le QoS à 1 par défaut un peu partout dans les différents outils et mis QoS à 2 pour les trucs plus critiques comme les impulsions et les SMS afin d’éviter de les avoir plusieurs fois. Aussi, je coche l’option Retain pour tous les messages car je veux voir ce qui se passe.
Tout tourne bien. Mais, de temps en temps, je me prend une salve de messages qui viennent de je ne sais où. C’est comme si certaines actions sur le modules étaient renvoyées (certains à ON, d’autres à OFF, d’autres rien du tout).
Pour éviter les répétions de messages, je reconfigure tous les outils et les commandes action JMQTT avec un QoS à 0, mais toujours avec l’option Retain. Là, j’ai encore le problème. Je reçois aussi de nouveau des SMS que j’ai déjà eu.
Me voilà maintenant à la recherche du coupable qui envoie ces messages.
Mosquitto, je ne le sens pas. Je souhaite redémarrer Mosquitto car cela fait un long moment qu’il tourne et vu les problèmes, je tente un Réparer
Et là, cela fait n’importe quoi pendant plusieurs dizaines de secondes.
Exemple avec un module Chacon qui fait du ON / OFF pendant 1 minute (Ceci peut s’expliquer en partie par le fait que les commandes du RFPlayer font plusieurs allers-retours avec Mosquitto)
D’autres modules ne font qu’un seul ON ou OFF ou rien.
Je retrouve le comportement à la con et je me demande pourquoi Mosquitto renvoie tout un tas de messages alors que tout est en QoS à 0. Maintenant, je soupçonne l’option Retain qui renverrait les messages qu’il a retenus lorsque les différents clients se reconnectent au redémarrage de Mosquitto. Je suppose aussi qu’il y a truc inconnu qui redémarre pour une raison inconnue.
Auriez-vous des pistes pour debugger le MQTT et mieux observer ce qui se passe entre les clients MQTT, les brokers JMQTT, Mosquitto, etc… ?