Liste des clients abonnés à un certain sujet dans le serveur Mosquitto

8

Voilà donc la question générale, mais je vais fournir le scénario ici.

J'utilise le serveur Mosquitto pour fournir une communication mqtt entre les modules de relais esp ( Sonoff de Itead ) et Home Assistant . La plupart du temps, cela fonctionne très bien. Chaque module a son propre sujet, et il y a autant de configurations "légères" dans HASS que de modules, de sorte qu'ils peuvent être contrôlés à partir de l'interface Web par des boutons à bascule individuels.

J'ai toutefois connu des situations d'état incohérentes où la lumière est réellement allumée et la bascule dans HASS est affichée comme éteinte (et la situation inverse également). En inspectant les journaux, j'ai découvert que Mosquitto ne publie pas certains messages sur HASS (qui devraient être abonnés à tous les sujets sur l'état des modules). Plus spécifiquement, étant donné 4 modules et ses sujets d'état correspondants ( state/sonoff_xx/POWER), HASS semble être abonné uniquement aux modules 2 et 4 sujets, mais pas 1 et 3. Ce qui suit est le comportement attendu pour le module 4, le même peut être vérifié pour le autre module de travail, mais la publication sur HASS est manquante pour les deux autres.

Jun 15 19:22:46 nas mosquitto[9486]: Received PUBLISH from sonoff4 (d0, q0, r1, m0, 'stat/sonoff4/POWER', ... (2 bytes))
Jun 15 19:22:46 nas mosquitto[9486]: Sending PUBLISH to home-assistant (d0, q0, r0, m0, 'stat/sonoff4/POWER', ... (2 bytes))

Ce n'est pas une question concernant HASS et les modules relais, mais il s'agit de savoir comment creuser le statut du serveur MQTT qui est censé avoir certains clients abonnés mais, en regardant les journaux, il ne l'a pas fait.

Dario
la source

Réponses:

6

Non, vous ne pouvez pas obtenir la liste des clients abonnés à quoi sortir du moustique.

Ce qui est le plus probable ici, c'est que HASS n'est pas abonné plutôt que moustique ne publie pas à un client abonné.

Vous pouvez demander à moustique de se connecter chaque fois qu'une demande d'abonnement est faite, que vous pouvez ensuite utiliser pour créer une liste.

log_type subscribe, unsubscribe

Cela enregistrera tous les clients qui s'abonnent / se désabonnent de quels sujets.

hardillb
la source
1
Je me connecte déjà à tous les niveaux ( log_type allen mosquitto.conf), en fait, j'ai vérifié l'entrée d'abonnement en me connectant à partir d'une console pendant la journalctl -fcourse. Je n'ai pas pu trouver, cependant, des entrées sur les abonnements HASS car cela pourrait se produire il y a quelques jours et journald n'est pas configuré comme persistant, donc je n'avais à portée de main que le démarrage actuel. C'est la raison pour laquelle j'espérais inspecter le statut de Mosquitto.
Dario
1
Ne devriez-vous pas vous concentrer sur le niveau de QoS. Je suppose que les messages envoyés depuis les nœuds (unités Sonoff) sont envoyés en utilisant QoS = 0, ce qui signifie qu'il n'est envoyé qu'une seule fois. Pas fiable dans ce sens. J'essaierais de grimper cette valeur jusqu'à ce que je trouve un bon niveau. Les états de commutation devraient utiliser QoS 1 ou 2 à mon avis. Les valeurs de capteur qui sont autorisées à manquer une ou deux de temps en temps devraient utiliser la QoS 0.
Jimmy Westberg
3

Vous pouvez activer le journal des moustiques pour tous et vous abonner au journal, vous trouverez des messages que vous pouvez décoder pour chaque action du client comme la connexion, la déconnexion, l'abonnement et la publication même des erreurs.

vous mettrez

log_dest topic
log_type all

dans mosquitto.conf, vous vous abonnerez à

$SYS/broker/log/#
Anas Naguib
la source
J'ai fatigué cette approche Les événements d'abonnement et de publication ne sont pas affichés
kavie