Aller au contenu principal

Intégration domotique Mosquitto, gratuite et open source

Intégration Mosquitto pour Gladys Assistant

La santé de votre broker MQTT Mosquitto dans Gladys : clients, débit de messages, pannes.

Surveille la santé de votre broker MQTT Eclipse Mosquitto dans Gladys : clients connectés, débit de messages, trafic, abonnements, durée de fonctionnement, version et pannes, à partir des statistiques que Mosquitto publie sur ses sujets $SYS.

Cette intégration n'est affiliée ni à la fondation Eclipse ni au projet Mosquitto.

Présentation​

Gladys parle déjà MQTT : son intégration MQTT se connecte à un broker pour piloter vos appareils (y compris ceux annoncés au format Home Assistant, comme Zigbee2MQTT). Elle n'affiche aucune statistique du broker lui-même. Cette intégration, si : elle s'abonne à $SYS/broker/#, en lecture seule, et fait de ce que Mosquitto dit de lui-même un appareil Gladys, cinq déclencheurs de scène, une action de scène et un widget de tableau de bord.

Elle ne publie jamais de message et ne s'abonne à rien en dehors de $SYS. Tout reste sur votre réseau local.

Elle peut surveiller le broker que Gladys a installé pour vous (les identifiants sont sur la page MQTT de Gladys) comme n'importe quel autre Mosquitto de votre réseau.

Prérequis​

  • Gladys 5.1 ou plus récent.
  • Mosquitto 1.6 ou plus récent (testé avec la 2.1 et la 1.6), joignable depuis Gladys.
  • Un utilisateur Mosquitto autorisé à lire $SYS, ou l'accès anonyme si votre broker le permet.
  • sys_interval différent de 0 dans mosquitto.conf (10 secondes par défaut).

Autoriser l'utilisateur à lire $SYS​

Si votre broker utilise un fichier ACL (acl_file dans mosquitto.conf), ajoutez ces deux lignes pour l'utilisateur de l'intégration, puis redémarrez Mosquitto :

user gladys
topic read $SYS/#

Pour l'accès anonyme, placez topic read $SYS/# en tête du fichier, avant toute ligne user. Remplacez gladys par votre nom d'utilisateur. Sans elles, Mosquitto accepte la connexion mais n'envoie aucune statistique : la page de l'intégration affiche alors les lignes exactes à ajouter. Sans fichier ACL, tous les utilisateurs peuvent lire $SYS.

Configuration​

  1. Ouvrez l'onglet Configuration de l'intégration.
  2. Adresse du broker : mqtt:// suivi de l'hôte, et du port s'il n'est pas 1883 (par exemple mqtt://mosquitto.local:1883). Pour TLS, utilisez mqtts:// (port 8883). Les adresses WebSocket (ws://, wss://) fonctionnent aussi.
  3. Nom d'utilisateur et Mot de passe : laissez vide pour un broker anonyme.
  4. Accepter un certificat auto-signé : seulement avec mqtts://, quand le certificat du broker n'est pas signé par une autorité connue.
  5. Langue des textes : les noms des fonctionnalités à l'ajout du broker, la phrase de l'action de scène et les messages de l'action.
  6. Enregistrez. L'appareil Mosquitto apparaît dans l'onglet Découverte dès les premières statistiques (en une seconde) : ajoutez-le.

Le bouton Vérifier la connexion indique si le broker répond, si l'utilisateur peut lire $SYS, et affiche la version et les chiffres clés.

L'intégration se connecte avec un identifiant client tiré une fois pour toutes et conservé (gladys-mosquitto- suivi de huit caractères), et une session propre : elle ne compte pas parmi les clients persistants déconnectés quand Gladys redémarre.

L'appareil du broker​

FonctionnalitéSignification
Joignable1 tant que le broker répond (même s'il refuse la connexion), 0 sinon
Clients connectésClients connectés en ce moment, cette intégration comprise
Clients persistants déconnectésClients à session persistante (clean session désactivé) hors ligne
Messages reçus (/min)Messages publiés sur le broker par minute (moyenne glissante sur 1 minute)
Messages envoyés (/min)Messages remis par le broker aux abonnés par minute
Trafic entrantOctets reçus par seconde (moyenne glissante sur 1 minute)
Trafic sortantOctets envoyés par seconde
AbonnementsAbonnements actifs
Messages retenusMessages retenus (retained) gardés par le broker
Durée de fonctionnementTemps depuis le démarrage de Mosquitto, en jours
VersionVersion de Mosquitto, en texte
Mémoire utiliséeMémoire utilisée par Mosquitto, quand il la publie (pas l'image Docker de la 1.6)

Une fonctionnalité n'existe que si Mosquitto publie son sujet : certaines compilations n'ont pas de chiffre de mémoire. Mosquitto 1.6 n'envoie certains chiffres qu'à leur premier changement : la fonctionnalité apparaît alors plus tard, et l'onglet Découverte propose de mettre l'appareil à jour. Quand le broker est injoignable, Joignable passe à 0 et les autres fonctionnalités gardent leur dernière valeur.

Mosquitto rafraîchit ses statistiques toutes les sys_interval secondes ; Gladys reçoit les valeurs changées au plus toutes les 30 secondes, et Joignable aussitôt.

Widget de tableau de bord​

Le widget Broker Mosquitto affiche l'état du broker (en ligne, injoignable, connexion refusée, pas de statistiques $SYS), sa version et sa durée de fonctionnement, puis quatre tuiles en direct : clients connectés, messages reçus et envoyés par minute, abonnements. Choisissez le broker dans les réglages du widget.

Déclencheurs de scène​

  • Broker injoignable : le broker est injoignable depuis 1, 5, 15, 30 ou 60 minutes (au choix). Un redémarrage de quelques secondes ne déclenche rien, une connexion refusée non plus. Variable : le nombre de minutes.
  • Broker revenu : le broker répond de nouveau après une coupure d'au moins une minute. Variable : la durée de la coupure.
  • Broker redémarré : la durée de fonctionnement de Mosquitto est revenue à zéro. Il a redémarré (mise à jour, redémarrage de la machine) ou planté, même sans coupure visible. Variable : la version.
  • Moins de clients connectés : moins de clients que le nombre choisi (de 2 à 100) pendant une minute : un capteur, un pont ou Zigbee2MQTT a décroché. Se déclenche une fois, puis seulement après le retour du nombre de clients. L'intégration compte pour un client.
  • Pic de messages : plus de messages publiés par minute que le nombre choisi (de 100 à 50 000) : un appareil qui boucle, une avalanche. Au plus une fois toutes les 30 minutes par seuil ; une avalanche qui dure encore au bout de 30 minutes est signalée de nouveau.

Action de scène​

État du broker donne une phrase toute faite, par exemple « Mosquitto 2.1.2 fonctionne depuis 3 jours, 12 clients connectés, 64 messages reçus et 87 envoyés par minute. », et ses chiffres : joignable, clients connectés, messages reçus et envoyés par minute, durée de fonctionnement en heures, version.

Idées de scènes​

  • Zigbee2MQTT a décroché : déclencheur « Moins de clients connectés » sous 5, action « Envoyer un message » avec le nombre de clients, pour aller voir Zigbee2MQTT.
  • Broker en panne : déclencheur « Broker injoignable » depuis 5 minutes, action « Envoyer un message » — les lampes et capteurs pilotés en MQTT ne répondent plus.
  • Bilan de la semaine : chaque dimanche à 9 h, action « État du broker », puis « Envoyer un message » avec sa phrase.

Dépannage​

  • « Connecté, mais aucune statistique $SYS » : l'ACL ne laisse pas l'utilisateur lire $SYS. Ajoutez topic read $SYS/# sous l'utilisateur dans le fichier ACL (voir Prérequis), ou vérifiez que sys_interval ne vaut pas 0, puis redémarrez Mosquitto.
  • « Mosquitto refuse la connexion » : nom d'utilisateur ou mot de passe faux, ou accès anonyme désactivé.
  • « Le broker Mosquitto est injoignable » : vérifiez l'adresse et le port, que Mosquitto écoute sur le réseau (listener 1883 avec Mosquitto 2, qui n'écoute qu'en local sans cette ligne), et pour mqtts:// le certificat (ou cochez « Accepter un certificat auto-signé »).
  • Plus de détails dans les journaux de l'intégration ; LOG_LEVEL=debug montre chaque étape.

Limites​

  • Un seul broker par installation de l'intégration.
  • Mosquitto seulement : les autres brokers (EMQX, VerneMQ, HiveMQ) publient d'autres sujets $SYS, ou aucun.
  • Les débits sont les moyennes glissantes calculées par Mosquitto lui-même.
  • Un broker relié à d'autres par un pont n'affiche que ses propres chiffres.

Paramètres de configuration​

Voici les paramètres demandés par Mosquitto dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Connecter MosquittosectionNonL'intégration lit les statistiques que Mosquitto publie sur $SYS/broker/#. Elle s'abonne seulement, sans jamais publier. L'utilisateur doit pouvoir lire $SYS dans le fichier ACL.
Adresse du brokerstringOuimqtt:// (port 1883) ou mqtts:// pour TLS (port 8883). Le broker installé par Gladys convient aussi : ses identifiants sont sur la page MQTT de Gladys.
Nom d'utilisateurstringNonLaissez vide si le broker accepte les clients anonymes.
Mot de passesecretNon
Accepter un certificat auto-signébooleanNonmqtts:// seulement : le certificat du broker n'est alors pas vérifié.
Langue des textesselectNonNoms des fonctionnalités du broker à son ajout, phrases des scènes et messages des actions.

Comment installer Mosquitto dans Gladys​

  1. Dans Gladys, ouvrez Intégrations : Mosquitto apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/guim31/gladys-mosquitto:1.0.0), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-mosquitto.

Mosquitto nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.

Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.

À propos des intégrations externes​

Mosquitto est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par guim31, et non par l'équipe cœur de Gladys.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂