S'abonner à la naissance MQTT et les sujets? (emqttd)

11

J'utilise emqttd ( emqtt.io ). Je voudrais surveiller les clients qui se connectent et se déconnectent d'un processus distinct qui s'abonnerait à une rubrique système où les messages de naissance et de testament sont affichés. Quelle est la bonne façon de procéder?

Fabien Papleux
la source
3
Bienvenue dans IoT SE. Pouvez-vous nous en dire un peu plus sur la configuration? Sur quel type de machine utilisez-vous emqttd et dans quelle version?
Helmar

Réponses:

5

Je voudrais surveiller les clients qui se connectent et se déconnectent d'un processus distinct qui s'abonnerait à une rubrique système où les messages de naissance et de testament sont affichés.

Le guide de l'utilisateur d'emqtt présente une rubrique système qui propose des statistiques de courtier, c'est-à-dire qui $SYS/brokers/${node}/stats/clients/countfournit le nombre de clients connectés actuels. Notez que cela ne listera pas de détails sur les clients connectés - je suppose donc que ce n'est pas ce qui est nécessaire ici.

Les messages de dernière volonté (LWT, Last Will et Testament) ne sont pas un sujet système mais un sujet régulier tel que défini par le client lors de la connexion. Si vous souhaitez suivre ce sujet, abonnez-vous simplement. Notez cependant que les messages LWT sont rejetés si un client se déconnecte correctement en envoyant un message DISCONNECT (voir le blog hiveMQ , bonne lecture btw).

Le guide de l'utilisateur d'emqtt présente une meilleure façon de surveiller la connexion et la déconnexion des clients:

La ./bin/emqttd_ctlligne de commande peut être utilisée pour interroger et administrer le courtier EMQ (ne fonctionne pas sous Windows).

Je pense que la surveillance clients list- répertorier tous les clients MQTT - et clients show <ClientId>- afficher un client MQTT - est la plus utile ici. Le processus séparé prévu pour surveiller les clients n'a donc pas besoin de s'abonner au courtier mais simplement de l'utiliser à la ./bin/emqttd_ctlplace.

    $ ./bin/emqttd_ctl clients list
    Client(mosqsub/43832-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64896, connected_at=1452929113)
    Client(mosqsub/44011-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64961, connected_at=1452929275)
Ghanima
la source
Très utile. Merci de prendre le temps. emqttd_ctl pourrait fournir une solution partielle mais, ayant un pubsub à notre disposition, j'aurais espéré que vous pourriez utiliser ce mécanisme pour créer des alertes. Je suppose que c'est quelque chose que je pourrais encore appliquer en exigeant que les clients publient des messages de naissance et de testament.
Fabien Papleux
1

Eh bien, je ne suis pas sûr du message de naissance et LWT (Last Will and Testament) est facultatif selon les spécifications. Ainsi, vous ne recevrez pas nécessairement de messages à moins que votre courtier ne soit adapté à ces exigences.

cogito ergo sum
la source
LWT est le courtier agissant au nom du client déconnecté. Implémentation qui n'est pas facultative pour le courtier. Il est simplement facultatif pour le client de configurer un dernier sujet de volonté.
Ghanima
C'est ce que je voulais dire. Le client ne peut pas l'envoyer dans le cadre du paquet de connexion.
cogitoergosum