MQTT: qu'est-ce que et comment fonctionne le "retenir"

2 minutes de lecture

Logo MQTT

La conserver est oui parmi les caractéristiques les plus importantes de la proprotocole MQTT, mais aussi parmi les plus inconnus, ce qui cause souvent beaucoup proproblèmes à la fonction correctenamede la propremière domotique personnelle.

Dans la zone MQTT, comme sappAllons-y, chaque client il n'y a aucun moyen pour obtenir la certitude quant à la remise d'un message donné au destinataire, mais uniquement - au plus - de la remise correcte au courtier (pour combler les lacunes que nous recommandons de lire de la carte dédiée à la QoS). Dans la même logique, un client qui s’abonne à un sujet d’intérêt chez le courtier ne sera pas en mesure de savoir quand (et si) un autre client publiera un message sur ce sujet. Il est totalement dans le noir.

Et c’est là que le concept de conserver.

Comment ça marche

Chaque message envoyé au courtier par un client MQTT en a un drapeau di conserver qui peut être évalué "vrai"Ou"faux"Sur la base du fait que le client a activé o non activé, pour ce message, cette fonction.

Où l'indicateur est défini sur "true" (donc, en jargon, les deux activé la retenue), ce message - en plus d'être livré immédiatement aux clients connectés qui se sont abonnés au sujet indiqué dans le message lui-même - il est mis de côté, gardé pour ainsi dire par le courtier, en attente de l’envoyer à tout client qui se connecte ultérieurement et qui s’abonne au sujet indiqué dans le message.

Prenons un exemple que le client MQTT présente sur un actionneur domotique Sonoff riprogrammate avec firmware Tasmota envoyer des messages de télémétrie MQTT relatifs à proavant l'état de fonctionnement ("on" / "off") avec retenue pas actif et nous proposons également de posséder une domotique basée sur HUB personnel qui a le propremier client inscrit dans le sujet indiqué dans les messages télémétriques ci-dessus afin de collecter le statut de l'actionneur aux fins propri de domotique personnelle.

Imaginons que leHUB redémarrer (ou perdre la connexion, pour différentes raisons): à la fin du redémarrage, l'actionneur mentionné ci-dessus serait proche duHUB dans un état sconosciuto jusqu'à ce que l'actionneur, pour une raison quelconque, envoie un nouveau message d'état au courtier.

Si, par contre, le message de télémétrie envoyé par l'actionneur a activé la retenue active, la reconnexion / abonnement au sujet par le client deHUB provoquerait un envoi immédiat du dernier message enregistré par le courtier, afin d'avoir immédiatement le statut (au moins le dernier reçu) disponible.

Quand l'utiliser

Simple: en principe aussi peu que possible. La raison est simple: sauf si c'est nécessaire à tout prix recevoir un message - aussi procrastinato - par le destinataire, la présence de la retenue active peut créer plus proproblèmes de ceux qui ne le résolvent pas.

Prenons le cas d'actionneurs équipés du support MQTT: de tels dispositifs se produisent parfois ils perdent la connexion Wi-Fi. Ça arrive: ce sont des appareils avec de petites antennes, parfois le même firmware en a de petits proproblèmes qui provoquent des déconnexions dispersées. L’utilisation de commandes envoyées à partir de la domotique avec Active Retain, par exemple, provoque parfois plus de proquoi d'autre: imaginons que nous ayons envoyé une commande ON à l'actionneur via la domotique, puis que nous la configurions manuellement sur OFF (avec un commutateur physique, peut-être) pendant que, pendant quelques instants, l'actionneur était hors ligne. Lors de la première reconnexion, l'actionneur est utile raviverait "seul" (car il recevrait une commande envoyée par le courtier en raison de la retenue active), créant une situation inattendue.

Conseils

Il est donc conseillé de ne pas activer plus le retenir sauf dans des cas très spécifiques où il est vraiment nécessaire, à tout prix, remise d'un message spécifique à des destinataires spécifiques. En outre, nous recommandons - après vérification de la provos configurations - pour nettoyer tous les dispositifs de retenue sur le propremier courtier.

Chaîne de télégramme inDomus