Lab de messagerie MQTT : comment des appareils parlent à un courtier, dans le navigateur
Ce lab donne à chaque élève un courtier MQTT à lui et quelques capteurs imaginaires qui y publient. Une maison envoie une mesure par seconde : la température et l’humidité du salon, la température de la cuisine et l’état de la porte, ouverte ou fermée. Les élèves les écoutent depuis le terminal et écrivent un message à eux.
Ce n’est pas un lab d’attaque. Chaque copie n’a aucune route vers internet ni vers un autre élève : rien ne peut y être téléchargé et rien de ce qui s’y trouve ne peut atteindre quelqu’un d’autre. Ce n’est pas non plus l’allure d’une vraie installation : de vrais appareils se connectent à travers un réseau, avec une identification et une connexion chiffrée, et ce lab laisse les deux de côté pour que la première chose apprise soit la messagerie elle-même.
Ce que les élèves apprennent
Comment un courtier sépare les appareils de ce qui les utilise : un capteur publie un message avec un sujet, le courtier le transmet à tous ceux qui sont abonnés à ce sujet, et aucun des deux côtés ne connaît l’autre. Les élèves lisent tous les sujets sous home avec le joker #, seulement les températures avec le joker +, et constatent qu’un message retenu, l’état de la porte, est donné aussitôt à un nouvel abonné, alors que l’humidité, qui n’est pas retenue, doit attendre la mesure suivante. Ils publient ensuite un message retenu à eux et le relisent. Ce lab convient aux introductions à l’internet des objets, aux réseaux et aux systèmes distribués ; vérifiez le libellé exact dans l’unité de votre propre organisme, aucun n’est cité ici.
Le lancer dans votre navigateur
Le lab démarre deux services à partir de la même image publique standard : broker, le courtier MQTT, et sensors, une boucle qui publie quatre mesures par seconde dès que le courtier est prêt. Il n’y a pas de page web : la barre du lab n’a donc aucun lien sous « Dans votre navigateur », et c’est le terminal qui sert à écouter. Il atteint les outils du courtier avec docker exec broker, suivi de la commande, et chaque commande d’écoute se termine par les options -C, le nombre de messages, et -W, le nombre de secondes, pour qu’elle finisse toujours. Les mesures suivent un cycle fixe de nombres entiers, mais où l’on en est dépend du moment où vous appuyez sur Exécuter : deux élèves voient donc des nombres différents.
- Ouvrir la page Conteneur. Ouvrez « Créer » dans la barre et choisissez « Lancer un conteneur ». Tout le monde peut ouvrir la page, et le lab Git et le lab SQL se lancent sans compte. Tous les autres labs demandent un compte gratuit : créez-en un, connectez-vous, puis appuyez sur « Démarrer ».
- Trouver le lab. La carte « Laboratoires d’exemple » liste tous les exemples. Trouvez MQTT : comment des appareils parlent à un courtier.
- Appuyer sur Démarrer. « Démarrer » le lance tel quel, en un clic. « Modifier le fichier d’abord » ouvre le fichier compose pour que vous puissiez le changer avant de démarrer.
- L’ouvrir. Il n’y a pas de page web à ouvrir. Sur la page du lab, appuyez sur « Ouvrir le terminal » et tapez docker exec broker mosquitto_sub -t 'home/#' -v -C 8 -W 10 pour entendre huit messages : chaque ligne est un sujet, une espace et une valeur.
Que demander aux élèves de rendre
Les commandes qu’ils ont lancées et ce que chacune a affiché : une qui lit tous les sujets sous home, une qui ne lit que les températures avec un joker, une qui lit l’état retenu de la porte, et un message à eux publié avec -r puis relu. Puis une phrase ou deux, dans leurs mots, sur l’utilité d’un message retenu et sur la raison pour laquelle la porte a répondu tout de suite alors que l’humidité non. Rien n’est noté automatiquement : la phrase montre si c’était compris. Pour un travail plus poussé, demandez ce qu’un vrai appareil exigerait que ce lab laisse de côté.
Une leçon de base sur ce lab
IoT Messaging Basics est une petite leçon qui se fait dans ce lab. L’élève y écoute tous les sujets avec un joker, se limite aux températures, compare un message retenu avec un qui ne l’est pas, puis publie un message à lui et le relit.
Un compte personnel gratuit la reçoit dans le module Basics, qui se trouve sur « Accueil », et chaque établissement peut la copier depuis le dossier Basics de la Bibliothèque. Elle est volontairement petite : elle montre à un enseignant ce qu’est une leçon qui se fait dans un lab, et le lab fait le reste. Copiez-la dans un module à vous pour la modifier.
Le code sur GitHub
Le fichier compose n’a pas de Dockerfile : il lance deux fois une seule image publique standard, le courtier Eclipse Mosquitto, figée sur une version majeure, sous un compte sans privilèges avec 64 Mo de mémoire chacune. L’image est sous licence Eclipse Public License et Eclipse Distribution License et n’est pas distribuée par nous. Le fichier écrit la petite configuration du courtier au démarrage, avec une écoute sur le port 1883 et l’accès anonyme autorisé, et les capteurs sont une boucle shell aux valeurs fixes : rien n’est téléchargé. Les limites sont honnêtes : pas d’identification ni de chiffrement, rien n’est conservé à l’arrêt du lab, et les capteurs sont imaginaires, donc le comportement d’un vrai appareil, comme la perte de sa connexion, n’est pas montré.
En faire un travail
Indiquez dans la tâche ce qu’il faut rendre.
- Créer le lab. Dans votre module, ajoutez une tâche et choisissez la carte « Lab de conteneurs », puis « Dans un dépôt GitHub ». Indiquez https://github.com/mitsurutech/lab-iot-mqtt avec la branche main. Le fichier compose par défaut est compose.yaml. Faites d’abord un fork du dépôt si vous voulez le modifier, par exemple pour ajouter d’autres capteurs.
- Publier et l’essayer. « Publier » fige le commit qui vous a été montré : un changement ultérieur dans le dépôt ne modifie donc pas un lab que vous avez déjà proposé. Démarrez d’abord votre propre copie.
- Le distribuer. Attribuez-le comme n’importe quelle tâche, avec une échéance si vous le souhaitez, et indiquez dans la tâche ce qu’il faut faire et ce qu’il faut rendre.
- Noter ce qui est rendu. Ouvrez la copie d’un élève et le travail rendu, notez-le et renvoyez-le avec un motif s’il demande un complément.
Essayer ce lab, et ce qu’il coûte
Un compte personnel gratuit permet de suivre les leçons de base de ce lab, avec chaque mois assez de crédit gratuit pour suivre la plupart des leçons, sans carte. Pour une classe, un établissement a ses 365 premiers jours gratuits pour 50 élèves au plus, puis paie par élève et par an, tous les labs compris et les enseignants gratuits.
Questions fréquentes
- Pourquoi le courtier laisse-t-il entrer n’importe qui sans mot de passe ?
- Le courtier du lab n’est joignable que depuis l’intérieur de votre copie, et la copie n’a aucune sortie vers internet : personne d’autre ne peut s’y connecter. C’est la seule raison pour laquelle c’est sans danger. Un vrai courtier exige une identification et une connexion chiffrée, et il ne faut jamais en installer un comme le fait ce lab.
- Pourquoi les nombres que je vois diffèrent-ils de ceux de la leçon ?
- Les capteurs suivent un cycle fixe qui ne s’arrête jamais : les mêmes quelques valeurs reviennent sans cesse, mais l’endroit où en est le cycle quand vous appuyez sur Exécuter dépend du moment. La forme de chaque réponse est toujours la même : les mêmes sujets, des nombres entiers, et une porte ouverte ou fermée. La seule ligne exacte est votre propre message relu.
- Les élèves peuvent-ils ajouter leurs propres capteurs ou appareils ?
- Oui : depuis le terminal, docker exec broker mosquitto_pub publie un message sur le sujet de leur choix. Pour changer les capteurs eux-mêmes, faites un fork du dépôt, modifiez la boucle shell du fichier compose, et proposez le fork comme lab.