Les messages MQTT peuvent modifier l’état du serveur domotique après un redémarrage, car les abonnés qui se reconnectent peuvent recevoir des mises à jour conservées, en file d’attente, de découverte et de disponibilité.
Ce changement n’est généralement pas dû à un appareil agissant de manière aléatoire. Un redémarrage relance le client d’automatisation, reconstruit les abonnements, restaure sa base de données locale et le reconnecte à un broker qui peut encore détenir l’état des topics ou des messages hors ligne. Les appareils et passerelles peuvent également réagir au retour du serveur en publiant des enregistrements de découverte, un statut en ligne et des valeurs de capteurs fraîches. Les sections ci-dessous distinguent ces chemins de messages pour vous aider à comprendre pourquoi un interrupteur, un capteur ou un indicateur de disponibilité peut sembler différent immédiatement après le démarrage.
Un redémarrage crée une nouvelle chronologie d’abonnement
Avant le redémarrage, le serveur domotique dispose déjà d’abonnements MQTT actifs et d’une vue en mémoire de l’état des appareils. Lors de l’arrêt, cette connexion en direct disparaît, et le serveur peut temporairement marquer les entités MQTT comme indisponibles ou revenir à un état restauré depuis sa propre base de données.
Après le démarrage, le client crée une nouvelle connexion au broker, restaure ou recrée les abonnements, et commence à recevoir à nouveau des messages. L’ordre dans lequel la restauration de la base de données, la configuration de l’intégration, les abonnements et les publications des appareils se terminent détermine quel état apparaît en premier.
Cela signifie que l’état au démarrage est assemblé à partir de plusieurs sources plutôt que lu à partir d’un instantané unique et autoritaire. Une valeur de base de données peut apparaître brièvement, puis être remplacée par un message du broker, puis changer à nouveau lorsque l’appareil physique publie une mise à jour en direct.
Les messages conservés rejouent la dernière valeur d’un topic
Une publication conservée indique au broker de garder la dernière charge utile conservée pour ce topic. Lorsque le serveur domotique redémarré s’abonne à nouveau, le broker peut livrer cette charge utile immédiatement au lieu d’attendre la prochaine mise à jour normale de l’appareil.
Ces messages conservés sont utiles pour les capteurs à évolution lente et les topics de disponibilité, mais ils représentent la dernière valeur conservée, pas la preuve que l’état physique a été vérifié après le redémarrage. Une commande ou une valeur de capteur conservée obsolète peut donc écraser un état restauré plus prudent.
Home Assistant documente également qu’une charge utile conservée sur un topic d’état est rejouée après abonnement afin que l’état de l’entité puisse être restauré. Le changement visible est un comportement attendu du protocole lorsque le topic conservé reste valide.
Les sessions persistantes peuvent livrer des mises à jour manquées hors ligne
L’état conservé et la persistance des sessions résolvent des problèmes différents. Un topic conservé stocke une dernière valeur pour tout abonné correspondant, tandis qu’une session persistante peut préserver les abonnements et mettre en file d’attente les messages qualifiés pour un client particulier pendant sa déconnexion.
Avec les sessions persistantes, les mises à jour QoS 1 ou 2 publiées pendant la fenêtre de redémarrage peuvent être livrées lorsque le serveur revient. La plateforme d’automatisation redémarrée peut donc traiter des événements survenus pendant son hors ligne plutôt que seulement la dernière valeur conservée du topic.
Cela peut produire une courte rafale de transitions après le démarrage. Si une automatisation traite chaque événement récupéré comme un déclencheur en direct, elle peut rejouer des actions qui ne sont plus utiles à moins que la charge utile n’inclue des horodatages, des numéros de séquence ou une règle d’expiration.
Les paramètres d’expiration de session et de message MQTT 5 peuvent limiter la durée de validité des données en file d’attente ou conservées. Sans vérification de fraîcheur au niveau de l’application, une livraison fiable peut préserver un événement obsolète aussi efficacement qu’un événement actuel.
Les topics de découverte, de naissance et de volonté reconstruisent la disponibilité
Certaines intégrations MQTT font plus que restaurer les valeurs des capteurs. Elles utilisent des messages de découverte pour recréer la configuration des entités et utilisent des publications de naissance ou de disponibilité pour annoncer si le serveur d’automatisation, la passerelle ou l’appareil est en ligne.
La découverte MQTT de Home Assistant peut rejouer les topics de configuration et d’état conservés après un redémarrage. Les appareils peuvent aussi republier leur configuration lorsqu’ils détectent le message de naissance du serveur, produisant une nouvelle vague de mises à jour d’entités et d’états.
Un message Last Will couvre la transition opposée : le broker peut publier une charge utile hors ligne prédéfinie lorsqu’un client se déconnecte de manière inattendue. Si les messages de volonté et en ligne sont conservés, un abonné redémarrant peut d’abord voir l’état hors ligne stocké puis l’état en ligne nouveau de l’appareil.
La persistance du broker décide ce qui survit à un redémarrage du broker
Un redémarrage du serveur domotique et un redémarrage d’un broker MQTT ne sont pas le même événement. Si seul le serveur d’automatisation redémarre, le broker peut rester en ligne avec son arbre conservé et ses files d’attente de session intactes. Si le broker redémarre aussi, sa configuration de stockage détermine ce qui survit.
Les données conservées peuvent persister en mémoire ou sur disque, et la persistance du broker détermine si l’ensemble conservé reste disponible après le retour du processus broker. Les mappages de volumes de conteneurs, les permissions, le comportement d’arrêt propre et les réglages du broker peuvent donc modifier le résultat au démarrage.
Si les topics conservés disparaissent après un redémarrage du broker, les entités peuvent rester inconnues jusqu’à ce que les appareils publient à nouveau. Si les anciens topics conservés survivent indéfiniment, les appareils supprimés ou la configuration obsolète peuvent réapparaître chaque fois qu’un nouvel abonné se connecte.
Suivez quel message a réellement défini le nouvel état
Diagnostiquez le changement en enregistrant l’état de l’entité avant le redémarrage, puis en capturant le trafic MQTT dès que le client se reconnecte. Notez le topic, la charge utile, le drapeau de conservation, le QoS, l’horodatage, l’identité de l’éditeur et si le message est arrivé avant ou après la fin de la découverte.
La preuve clé est l’état rejoué, pas seulement la valeur finale du tableau de bord. Une charge utile conservée indique l’état du topic, un message QoS en file d’attente indique une récupération de session, et une publication fraîche de l’appareil indique une reconstruction en direct.
L’architecture plus large de ZimaSpace sépare Home Assistant, MQTT, le stockage, les caméras et l’IA en services distincts afin que leur comportement de redémarrage reste compréhensible. Cette limite de service MQTT facilite l’identification de la source de la transition d’état, qu’il s’agisse du broker, du contrôleur ou de l’appareil.
Une fois la source connue, corrigez le contrat de données plutôt que de supprimer aveuglément les messages au démarrage. Utilisez les messages conservés pour un état actuel durable, l’expiration pour les données sensibles au temps, des IDs uniques stables pour la découverte, et des horodatages ou règles de séquence pour les événements qui ne doivent pas être rejoués comme actions actuelles.
FAQ
Un message MQTT conservé signifie-t-il que l’appareil est actuellement dans cet état ?
Pas nécessairement. Cela signifie que le broker a stocké la dernière charge utile conservée de ce topic. L’appareil peut devoir publier une valeur fraîche avant que l’état soit considéré comme physiquement vérifié.
Les messages conservés et les sessions persistantes sont-ils identiques ?
Non. Les messages conservés stockent une dernière charge utile par topic pour les abonnés correspondants. Les sessions persistantes préservent les abonnements spécifiques au client et les messages hors ligne qualifiés.
Pourquoi un appareil MQTT supprimé peut-il réapparaître après un redémarrage ?
Une charge utile de découverte conservée peut le recréer lorsque l’intégration s’abonne à nouveau. Supprimez ou remplacez l’enregistrement de découverte conservé obsolète plutôt que de supprimer uniquement l’entité du tableau de bord.
Centre Tech & IA
Plus à lire

Why Jellyfin Home-Server Architecture Changes as You Add Services
A Jellyfin box becomes a service stack as more apps are added, so CPU, storage, network, secrets, backups, and recovery boundaries need explicit ownership.

How to Measure Jellyfin Performance Without Mistaking Cache for Capacity
A reliable Jellyfin benchmark labels cold and warm state separately so cached metadata or filesystem pages are not mistaken for permanent hardware capacity.

How Much iGPU Headroom Does Multi-User Jellyfin Need?
Jellyfin iGPU headroom is workload-specific: reserve margin above the hardest repeatable concurrent transcode mix, not an arbitrary utilization percentage.

