abonnel-siteweb/data/pages/electronique/mqtt/les-sujets.txt

48 lines
4.9 KiB
Plaintext
Raw Permalink Normal View History

2024-01-07 10:02:35 +01:00
====== 150 · Les sujets ======
{{ :dummy.png?75x75|Nom de la section}}
En MQTT, un sujet (ou //topic// en anglais) est une chaîne de caractères qui identifie une catégorie ou un canal de communication. Les clients MQTT peuvent s'abonner à un ou plusieurs sujets pour recevoir les messages publiés sur ces sujets.
Lorsqu'un client publie un message sur un sujet particulier, tous les clients qui se sont abonnés à ce sujet recevront ce message. Les sujets sont organisés sous forme de hiérarchie à l'aide de barres obliques (/) pour séparer les différents niveaux de la hiérarchie.
Par exemple, le sujet ''maison/chambre1/temperature'' pourrait être utilisé pour publier la température de la chambre 1 d'une maison. Les clients peuvent alors s'abonner à ''maison/chambre1/temperature'' pour recevoir des mises à jour sur la température de cette pièce spécifique.
Les sujets sont un élément clé de la flexibilité et de l'extensibilité de MQTT, permettant une communication efficace et ciblée entre les différents clients de l'écosystème MQTT.
===== Sujets réservés =====
MQTT définit plusieurs sujets réservés (ou //reserved topics// en anglais) qui ont une signification particulière et qui ne doivent pas être utilisés pour la publication de messages personnalisés. Voici quelques exemples de sujets réservés dans MQTT :
* ''$SYS/#'' : ce sujet réservé est utilisé pour publier des informations système sur le broker MQTT lui-même, telles que des statistiques de performance ou des informations de connexion des clients.
* ''$SYS/broker/version'' : ce sujet réservé est utilisé pour publier la version du broker MQTT.
* ''$SYS/broker/uptime'' : ce sujet réservé est utilisé pour publier le temps d'activité du broker MQTT.
* ''$SYS/+'' : ce sujet réservé permet d'accéder aux différents sous-sujets sous le répertoire ''$SYS'', qui contiennent des informations système spécifiques.
Il ne faut pas utiliser ces sujets réservés pour publier des messages personnalisés, car cela peut perturber le fonctionnement normal du broker ou des clients MQTT qui s'attendent à recevoir des informations système spécifiques sur ces sujets.
===== Caractère générique # =====
En MQTT, le symbole ''#'' est un caractère générique utilisé comme joker dans les noms de sujets pour s'abonner à tous les sous-sujets d'un certain niveau. Lorsqu'un client s'abonne à un sujet qui contient le joker ''#'', il reçoit des messages publiés sur tous les sous-sujets de ce niveau et de niveaux inférieurs.
Par exemple, si un client s'abonne au sujet ''maison/chambre1/#'', il recevra des messages publiés sur tous les sous-sujets de ''maison/chambre1'', tels que ''maison/chambre1/temperature'', ''maison/chambre1/humidite'', ''maison/chambre1/lumiere'', etc.
L'utilisation du joker ''#'' peut avoir des conséquences importantes sur le trafic réseau et la charge de travail du broker MQTT, en particulier pour les hiérarchies de sujets importantes avec de nombreux sous-sujets. Par conséquent, il est recommandé d'utiliser le joker ''#'' avec parcimonie et de manière judicieuse, en fonction des besoins spécifiques de votre application MQTT.
Lorsque le symbole ''#'' est utilisé seul comme sujet, il est considéré comme un sujet non valide dans MQTT. En effet, MQTT spécifie que tous les sujets valides doivent commencer par un caractère non-joker.
Ainsi, si un client s'abonne à ''#'' comme sujet, cela n'aura aucun effet, car ''#'' n'est pas un sujet valide en soi. De même, si un client publie un message avec ''#'' comme sujet, le broker MQTT refusera le message car ''#'' n'est pas un sujet valide.
Il est important de se rappeler que le broker MQTT peut appliquer des règles spécifiques pour valider les sujets des messages, qui peuvent varier en fonction de l'implémentation spécifique du broker. Il est donc recommandé de vérifier la documentation du broker MQTT pour connaître les règles de validation des sujets.
===== Caractère générique + =====
MQTT définit un autre caractère générique, le symbole ''+'', qui est utilisé pour s'abonner à un sous-sujet spécifique dans une hiérarchie de sujets. Contrairement au symbole ''#'', le symbole ''+'' ne correspond qu'à un seul niveau de sous-sujet.
Par exemple, si un client s'abonne au sujet ''maison/+/temperature'', il recevra des messages publiés sur tous les sous-sujets qui correspondent au modèle ''maison/*/temperature''. Les sous-sujets qui correspondent incluent ''maison/cuisine/temperature'', ''maison/chambre1/temperature'', etc.
Le symbole ''+'' est donc utile pour filtrer les messages à un niveau spécifique de la hiérarchie de sujets, en s'abonnant à un seul sous-sujet plutôt qu'à l'ensemble du niveau comme avec le symbole ''#''.
Il est important de noter que le symbole ''+'' ne peut être utilisé que pour remplacer un seul niveau de sous-sujet, tandis que le symbole ''#'' peut remplacer plusieurs niveaux de sous-sujets.