Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Lire les messages d’un capteur avec MQTT

Après cette leçon: Je peux lire un message de capteur et en tirer le sujet et la valeur.

Leçon de 55 min2 commandesLab de messagerie MQTT : comment des appareils parlent à un courtier, dans le navigateur

Un capteur envoie ses mesures par messages

Un capteur connecté envoie ses mesures sous forme de messages. Le plus souvent, il utilise le protocole MQTT (Message Queuing Telemetry Transport), léger et pensé pour les petits objets. Un message se compose d’un sujet et d’une charge utile.

Lire ces messages, c’est lire la température d’un salon ou l’état d’une porte sans écran. C’est le premier geste de l’Internet des objets.

À la fin de cette leçon

Remarque

Je peux lire un message de capteur et en tirer le sujet et la valeur.

Mots-clés

MotCe que ça veut direExemple
Capteurun objet qui mesure quelque chose et envoie la mesure
Messageune information envoyée : un sujet et une charge utile
Sujetl’étiquette du message, écrite comme un chemin (en anglais topic)home/door/state
Charge utilele contenu du message, par exemple une mesure (en anglais payload)
Courtierle serveur qui reçoit les messages et les transmet (en anglais broker)

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un sujet est un chemin vers la mesure

Un sujet s’écrit par niveaux, séparés par des barres obliques, comme un chemin de fichier. Le sujet home/kitchen/temperature se lit : maison, cuisine, température.

La charge utile est la valeur elle-même. Les sujets du labo sont en anglais. Les valeurs sont des nombres entiers, ou un mot comme open pour l’état de la porte.

Exemple : quatre sujets d’une maison

SujetCe qu’il mesureForme de la charge utile
home/livingroom/temperaturela température du salonun nombre entier
home/livingroom/humidityl’humidité du salonun nombre entier
home/kitchen/temperaturela température de la cuisineun nombre entier
home/door/statel’état de la portele mot open ou closed

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Comment lire les messages du labo

Le labo a deux conteneurs : sensors, qui publie une mesure par seconde, et broker, qui les transmet. Aucune page web : on utilise le terminal, où docker exec broker lance une commande dans le courtier.

L’option -v affiche le sujet avant la charge utile. -C 3 arrête après 3 messages, et -W 10 après 10 secondes, donc la commande se termine toujours. Vos valeurs diffèrent de celles d’un voisin, car elles dépendent de la seconde où vous appuyez sur Exécuter.

Lire trois messages de la cuisine

Commande
docker exec broker mosquitto_sub -t home/kitchen/temperature -v -C 3 -W 10

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lire deux messages sur l’humidité du salon

Commande
docker exec broker mosquitto_sub -t home/livingroom/humidity -v -C 2 -W 5

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

La charge utile arrive en texte

Un message transporte du texte, même quand il s’agit d’un nombre. Pour calculer une moyenne, on convertit d’abord la charge avec int(...).

Le message ne dit pas son unité. Que 19 soit des degrés Celsius ou autre chose, c’est une convention que les personnes qui installent le capteur doivent connaître.

Séparer le sujet et la charge utile

Code: python
# Une ligne de mosquitto_sub -v : le sujet, une espace, puis la charge utile.
ligne = "home/kitchen/temperature 19"
morceaux = ligne.split(" ", 1)
sujet = morceaux[0]
charge = morceaux[1]
print("sujet :", sujet)
print("charge utile :", charge)
# La charge arrive toujours sous forme de texte : on la convertit pour calculer.
valeur = int(charge)
print("la valeur plus 1 :", valeur + 1)
# Changez la ligne pour une autre pièce et relancez.

Une erreur fréquente

Attention

On croit souvent que la charge utile est déjà un nombre. Un message est du texte : "19" + "1" donne "191", et non 20. Convertissez avec int avant de calculer, et rangez un mot comme open à part.

Lire un message en trois gestes

On coupe la ligne à la première espace pour séparer le sujet de la charge. On regarde le dernier niveau du sujet pour savoir ce que mesure le capteur. On convertit la charge si c’est un nombre.

Le deuxième niveau dit d’où vient la mesure : la pièce, ici. Avec ces trois gestes, on traite n’importe quel flux de messages.

À propos de ce labo et de sa source: Lab de messagerie MQTT : comment des appareils parlent à un courtier, dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.