34 KiB
Connectez votre appareil à Internet
Illustration par Nitya Narasimhan. Cliquez sur l'image pour une version agrandie.
Cette leçon a été enseignée dans le cadre de la série Hello IoT du Microsoft Reactor. Elle a été divisée en deux vidéos : une leçon d'une heure et une session de questions-réponses d'une heure approfondissant certains aspects de la leçon.
🎥 Cliquez sur les images ci-dessus pour regarder les vidéos
Quiz avant la leçon
Introduction
Le I dans IoT signifie Internet - la connectivité au cloud et les services qui permettent de nombreuses fonctionnalités des appareils IoT, comme la collecte de mesures des capteurs connectés à l'appareil ou l'envoi de messages pour contrôler les actionneurs. Les appareils IoT se connectent généralement à un service cloud IoT unique en utilisant un protocole de communication standard, et ce service est relié au reste de votre application IoT, qu'il s'agisse de services d'IA pour prendre des décisions intelligentes à partir de vos données ou d'applications web pour le contrôle ou les rapports.
🎓 Les données collectées par les capteurs et envoyées au cloud sont appelées télémétrie.
Les appareils IoT peuvent recevoir des messages du cloud. Ces messages contiennent souvent des commandes - c'est-à-dire des instructions pour effectuer une action, soit en interne (comme redémarrer ou mettre à jour le firmware), soit en utilisant un actionneur (comme allumer une lumière).
Cette leçon introduit certains des protocoles de communication que les appareils IoT peuvent utiliser pour se connecter au cloud, ainsi que les types de données qu'ils peuvent envoyer ou recevoir. Vous aurez également l'occasion de les manipuler, en ajoutant un contrôle via Internet à votre veilleuse et en déplaçant la logique de contrôle de la LED vers un code "serveur" exécuté localement.
Dans cette leçon, nous aborderons :
Protocoles de communication
Il existe plusieurs protocoles de communication populaires utilisés par les appareils IoT pour communiquer avec Internet. Les plus courants reposent sur la messagerie de type publication/abonnement via un courtier. Les appareils IoT se connectent au courtier pour publier des données de télémétrie et s'abonner aux commandes. Les services cloud se connectent également au courtier pour s'abonner à tous les messages de télémétrie et publier des commandes, soit pour des appareils spécifiques, soit pour des groupes d'appareils.
MQTT est le protocole de communication le plus populaire pour les appareils IoT et sera abordé dans cette leçon. D'autres protocoles incluent AMQP et HTTP/HTTPS.
Message Queueing Telemetry Transport (MQTT)
MQTT est un protocole de messagerie léger et ouvert qui permet d'envoyer des messages entre appareils. Il a été conçu en 1999 pour surveiller des pipelines pétroliers, avant d'être publié comme standard ouvert 15 ans plus tard par IBM.
MQTT fonctionne avec un courtier unique et plusieurs clients. Tous les clients se connectent au courtier, qui achemine les messages vers les clients concernés. Les messages sont acheminés à l'aide de sujets nommés, plutôt que d'être envoyés directement à un client individuel. Un client peut publier sur un sujet, et tous les clients abonnés à ce sujet recevront le message.
✅ Faites des recherches. Si vous avez de nombreux appareils IoT, comment pouvez-vous vous assurer que votre courtier MQTT peut gérer tous les messages ?
Connectez votre appareil IoT à MQTT
La première étape pour ajouter un contrôle via Internet à votre veilleuse consiste à la connecter à un courtier MQTT.
Tâche
Connectez votre appareil à un courtier MQTT.
Dans cette partie de la leçon, vous connecterez votre veilleuse IoT à Internet pour permettre un contrôle à distance. Plus tard dans cette leçon, votre appareil IoT enverra un message de télémétrie via MQTT à un courtier MQTT public avec le niveau de lumière, où il sera récupéré par un code serveur que vous écrirez. Ce code vérifiera le niveau de lumière et enverra un message de commande à l'appareil pour lui indiquer d'allumer ou d'éteindre la LED.
Un cas d'utilisation réel pour une telle configuration pourrait être de collecter des données provenant de plusieurs capteurs de lumière avant de décider d'allumer les lumières dans un endroit comportant de nombreuses lumières, comme un stade. Cela pourrait empêcher les lumières de s'allumer si un seul capteur est couvert par des nuages ou un oiseau, mais que les autres capteurs détectent suffisamment de lumière.
✅ Quels autres scénarios nécessiteraient l'évaluation des données de plusieurs capteurs avant d'envoyer des commandes ?
Plutôt que de gérer les complexités de la configuration d'un courtier MQTT dans le cadre de cet exercice, vous pouvez utiliser un serveur de test public qui exécute Eclipse Mosquitto, un courtier MQTT open-source. Ce courtier de test est disponible publiquement à test.mosquitto.org et ne nécessite pas de compte, ce qui en fait un excellent outil pour tester des clients et serveurs MQTT.
💁 Ce courtier de test est public et non sécurisé. N'importe qui pourrait écouter ce que vous publiez, il ne doit donc pas être utilisé pour des données devant rester privées.
Suivez l'étape correspondante ci-dessous pour connecter votre appareil au courtier MQTT :
Une exploration approfondie de MQTT
Les sujets peuvent avoir une hiérarchie, et les clients peuvent s'abonner à différents niveaux de la hiérarchie en utilisant des caractères génériques. Par exemple, vous pouvez envoyer des messages de télémétrie de température au sujet /telemetry/temperature
et des messages d'humidité au sujet /telemetry/humidity
, puis dans votre application cloud, vous abonner au sujet /telemetry/*
pour recevoir à la fois les messages de température et d'humidité.
Les messages peuvent être envoyés avec une qualité de service (QoS), qui détermine la garantie de réception du message.
- Au plus une fois - le message est envoyé une seule fois et ni le client ni le courtier ne prennent de mesures supplémentaires pour accuser réception (envoi sans garantie).
- Au moins une fois - le message est réessayé plusieurs fois par l'expéditeur jusqu'à ce qu'un accusé de réception soit reçu (livraison garantie).
- Une seule fois - l'expéditeur et le destinataire effectuent une double vérification pour garantir qu'une seule copie du message est reçue (livraison assurée).
✅ Quels scénarios pourraient nécessiter un message avec livraison assurée plutôt qu'un envoi sans garantie ?
Bien que le nom inclue "Message Queueing" (MQ dans MQTT), il ne prend en réalité pas en charge les files d'attente de messages. Cela signifie que si un client se déconnecte, puis se reconnecte, il ne recevra pas les messages envoyés pendant la déconnexion, sauf pour ceux qu'il avait déjà commencé à traiter via le processus QoS. Les messages peuvent avoir un indicateur de rétention. Si cet indicateur est activé, le courtier MQTT stockera le dernier message envoyé sur un sujet avec cet indicateur et l'enverra à tout client qui s'abonne ultérieurement à ce sujet. Ainsi, les clients recevront toujours le dernier message.
MQTT prend également en charge une fonction de maintien en vie qui vérifie si la connexion est toujours active pendant de longues périodes sans messages.
🦟 Mosquitto de la Fondation Eclipse propose un courtier MQTT gratuit que vous pouvez exécuter vous-même pour expérimenter avec MQTT, ainsi qu'un courtier MQTT public que vous pouvez utiliser pour tester votre code, hébergé sur test.mosquitto.org.
Les connexions MQTT peuvent être publiques et ouvertes, ou chiffrées et sécurisées à l'aide de noms d'utilisateur et de mots de passe, ou de certificats.
💁 MQTT communique via TCP/IP, le même protocole réseau sous-jacent que HTTP, mais sur un port différent. Vous pouvez également utiliser MQTT via des websockets pour communiquer avec des applications web exécutées dans un navigateur, ou dans des situations où des pare-feu ou d'autres règles réseau bloquent les connexions MQTT standard.
Télémétrie
Le mot télémétrie est dérivé de racines grecques signifiant mesurer à distance. La télémétrie consiste à collecter des données à partir de capteurs et à les envoyer au cloud.
💁 L'un des premiers dispositifs de télémétrie a été inventé en France en 1874 et envoyait en temps réel des données météorologiques et des hauteurs de neige du Mont Blanc à Paris. Il utilisait des fils physiques, car les technologies sans fil n'étaient pas encore disponibles.
Reprenons l'exemple du thermostat intelligent de la leçon 1.
Le thermostat dispose de capteurs de température pour collecter des données de télémétrie. Il aurait probablement un capteur de température intégré et pourrait se connecter à plusieurs capteurs de température externes via un protocole sans fil tel que Bluetooth Low Energy (BLE).
Un exemple de données de télémétrie qu'il pourrait envoyer serait :
Nom | Valeur | Description |
---|---|---|
thermostat_temperature |
18°C | La température mesurée par le capteur de température intégré au thermostat |
livingroom_temperature |
19°C | La température mesurée par un capteur de température distant nommé livingroom pour identifier la pièce où il se trouve |
bedroom_temperature |
21°C | La température mesurée par un capteur de température distant nommé bedroom pour identifier la pièce où il se trouve |
Le service cloud peut ensuite utiliser ces données de télémétrie pour prendre des décisions sur les commandes à envoyer pour contrôler le chauffage.
Envoyer des données de télémétrie depuis votre appareil IoT
La prochaine étape pour ajouter un contrôle via Internet à votre veilleuse consiste à envoyer les données de niveau de lumière au courtier MQTT sur un sujet de télémétrie.
Tâche - envoyer des données de télémétrie depuis votre appareil IoT
Envoyez les données de niveau de lumière au courtier MQTT.
Les données sont envoyées encodées en JSON - abréviation de JavaScript Object Notation, un standard pour encoder des données en texte à l'aide de paires clé/valeur.
✅ Si vous ne connaissez pas JSON, vous pouvez en apprendre davantage sur la documentation JSON.org.
Suivez l'étape correspondante ci-dessous pour envoyer des données de télémétrie depuis votre appareil au courtier MQTT :
Recevoir des données de télémétrie depuis le courtier MQTT
Il ne sert à rien d'envoyer des données de télémétrie si rien ne les écoute. Les données de niveau de lumière nécessitent un programme pour les traiter. Ce code "serveur" est le type de code que vous déploierez sur un service cloud dans le cadre d'une application IoT plus large, mais ici, vous allez exécuter ce code localement sur votre ordinateur (ou sur votre Pi si vous codez directement dessus). Le code serveur est une application Python qui écoute les messages de télémétrie via MQTT avec les niveaux de lumière. Plus tard dans cette leçon, vous le ferez répondre avec un message de commande contenant des instructions pour allumer ou éteindre la LED.
✅ Faites des recherches : Que se passe-t-il pour les messages MQTT s'il n'y a aucun récepteur ?
Installer Python et VS Code
Si vous n'avez pas Python et VS Code installés localement, vous devrez les installer pour coder le serveur. Si vous utilisez un appareil IoT virtuel ou travaillez sur votre Raspberry Pi, vous pouvez ignorer cette étape, car ils devraient déjà être installés et configurés.
Tâche - installer Python et VS Code
Installez Python et VS Code.
-
Installez Python. Consultez la page de téléchargement de Python pour obtenir des instructions sur l'installation de la dernière version de Python.
-
Installez Visual Studio Code (VS Code). C'est l'éditeur que vous utiliserez pour écrire le code de votre appareil virtuel en Python. Consultez la documentation de VS Code pour obtenir des instructions sur l'installation de VS Code. 💁 Vous êtes libre d'utiliser n'importe quel IDE ou éditeur Python pour ces leçons si vous avez un outil préféré, mais les leçons fourniront des instructions basées sur l'utilisation de VS Code.
-
Installez l'extension Pylance pour VS Code. Il s'agit d'une extension pour VS Code qui fournit un support pour le langage Python. Consultez la documentation de l'extension Pylance pour les instructions d'installation dans VS Code.
Configurer un environnement virtuel Python
L'une des fonctionnalités puissantes de Python est la possibilité d'installer des packages pip - ce sont des packages de code écrits par d'autres personnes et publiés sur Internet. Vous pouvez installer un package pip sur votre ordinateur avec une seule commande, puis utiliser ce package dans votre code. Vous utiliserez pip pour installer un package permettant de communiquer via MQTT.
Par défaut, lorsque vous installez un package, il est disponible partout sur votre ordinateur, ce qui peut entraîner des problèmes de versions de packages - par exemple, une application dépendant d'une version d'un package qui ne fonctionne plus lorsque vous installez une nouvelle version pour une autre application. Pour contourner ce problème, vous pouvez utiliser un environnement virtuel Python, qui est essentiellement une copie de Python dans un dossier dédié. Lorsque vous installez des packages pip, ils sont installés uniquement dans ce dossier.
Tâche - configurer un environnement virtuel Python
Configurez un environnement virtuel Python et installez les packages pip MQTT.
-
Depuis votre terminal ou ligne de commande, exécutez les commandes suivantes à l'emplacement de votre choix pour créer et naviguer vers un nouveau répertoire :
mkdir nightlight-server cd nightlight-server
-
Exécutez ensuite la commande suivante pour créer un environnement virtuel dans le dossier
.venv
:python3 -m venv .venv
💁 Vous devez explicitement appeler
python3
pour créer l'environnement virtuel, au cas où Python 2 serait également installé sur votre machine. Si Python 2 est installé, appelerpython
utilisera Python 2 au lieu de Python 3. -
Activez l'environnement virtuel :
-
Sur Windows :
-
Si vous utilisez l'invite de commande ou l'invite de commande via Windows Terminal, exécutez :
.venv\Scripts\activate.bat
-
Si vous utilisez PowerShell, exécutez :
.\.venv\Scripts\Activate.ps1
-
-
Sur macOS ou Linux, exécutez :
source ./.venv/bin/activate
💁 Ces commandes doivent être exécutées depuis le même emplacement où vous avez exécuté la commande pour créer l'environnement virtuel. Vous n'aurez jamais besoin de naviguer dans le dossier
.venv
, vous devez toujours exécuter la commande d'activation et toutes les commandes pour installer des packages ou exécuter du code depuis le dossier où vous avez créé l'environnement virtuel. -
-
Une fois l'environnement virtuel activé, la commande
python
par défaut exécutera la version de Python utilisée pour créer l'environnement virtuel. Exécutez la commande suivante pour vérifier la version :python --version
La sortie sera similaire à ceci :
(.venv) ➜ nightlight-server python --version Python 3.9.1
💁 Votre version de Python peut être différente - tant qu'elle est en version 3.6 ou supérieure, c'est bon. Sinon, supprimez ce dossier, installez une version plus récente de Python et réessayez.
-
Exécutez les commandes suivantes pour installer le package pip pour Paho-MQTT, une bibliothèque MQTT populaire.
pip install paho-mqtt
Ce package pip sera uniquement installé dans l'environnement virtuel et ne sera pas disponible en dehors de celui-ci.
Écrire le code du serveur
Le code du serveur peut maintenant être écrit en Python.
Tâche - écrire le code du serveur
Écrivez le code du serveur.
-
Depuis votre terminal ou ligne de commande, exécutez la commande suivante à l'intérieur de l'environnement virtuel pour créer un fichier Python nommé
app.py
:-
Sur Windows, exécutez :
type nul > app.py
-
Sur macOS ou Linux, exécutez :
touch app.py
-
-
Ouvrez le dossier actuel dans VS Code :
code .
-
Lorsque VS Code se lance, il activera l'environnement virtuel Python. Cela sera indiqué dans la barre d'état en bas :
-
Si le terminal de VS Code est déjà ouvert au démarrage de VS Code, l'environnement virtuel ne sera pas activé dans celui-ci. Le plus simple est de fermer le terminal en utilisant le bouton Kill the active terminal instance :
-
Lancez un nouveau terminal VS Code en sélectionnant Terminal -> New Terminal, ou en appuyant sur
CTRL+`
. Le nouveau terminal chargera l'environnement virtuel, avec l'appel à l'activation apparaissant dans le terminal. Le nom de l'environnement virtuel (.venv
) sera également dans l'invite :➜ nightlight-server source .venv/bin/activate (.venv) ➜ nightlight
-
Ouvrez le fichier
app.py
depuis l'explorateur de VS Code et ajoutez le code suivant :import json import time import paho.mqtt.client as mqtt id = '<ID>' client_telemetry_topic = id + '/telemetry' client_name = id + 'nightlight_server' mqtt_client = mqtt.Client(client_name) mqtt_client.connect('test.mosquitto.org') mqtt_client.loop_start() def handle_telemetry(client, userdata, message): payload = json.loads(message.payload.decode()) print("Message received:", payload) mqtt_client.subscribe(client_telemetry_topic) mqtt_client.on_message = handle_telemetry while True: time.sleep(2)
Remplacez
<ID>
à la ligne 6 par l'ID unique que vous avez utilisé lors de la création du code de votre appareil.⚠️ Cet ID doit être le même que celui utilisé sur votre appareil, sinon le code du serveur ne s'abonnera pas ou ne publiera pas sur le bon sujet.
Ce code crée un client MQTT avec un nom unique et se connecte au broker test.mosquitto.org. Il démarre ensuite une boucle de traitement qui s'exécute en arrière-plan pour écouter les messages sur tous les sujets abonnés.
Le client s'abonne ensuite aux messages sur le sujet de télémétrie et définit une fonction appelée lorsqu'un message est reçu. Lorsqu'un message de télémétrie est reçu, la fonction
handle_telemetry
est appelée, affichant le message reçu dans la console.Enfin, une boucle infinie maintient l'application en cours d'exécution. Le client MQTT écoute les messages en arrière-plan et fonctionne tant que l'application principale est en cours d'exécution.
-
Depuis le terminal de VS Code, exécutez la commande suivante pour lancer votre application Python :
python app.py
L'application commencera à écouter les messages de l'appareil IoT.
-
Assurez-vous que votre appareil fonctionne et envoie des messages de télémétrie. Ajustez les niveaux de lumière détectés par votre appareil physique ou virtuel. Les messages reçus seront affichés dans le terminal.
(.venv) ➜ nightlight-server python app.py Message received: {'light': 0} Message received: {'light': 400}
Le fichier app.py dans l'environnement virtuel nightlight doit être en cours d'exécution pour que le fichier app.py dans l'environnement virtuel nightlight-server puisse recevoir les messages envoyés.
💁 Vous pouvez trouver ce code dans le dossier code-server/server.
À quelle fréquence envoyer la télémétrie ?
Une considération importante avec la télémétrie est la fréquence à laquelle mesurer et envoyer les données. La réponse est : cela dépend. Si vous mesurez souvent, vous pouvez réagir plus rapidement aux changements, mais vous consommez plus d'énergie, plus de bande passante, générez plus de données et avez besoin de plus de ressources cloud pour les traiter. Vous devez mesurer suffisamment souvent, mais pas trop.
Pour un thermostat, mesurer toutes les quelques minutes est probablement suffisant, car les températures ne changent pas si souvent. Si vous ne mesurez qu'une fois par jour, vous pourriez chauffer votre maison pour des températures nocturnes en plein milieu d'une journée ensoleillée, tandis que si vous mesurez chaque seconde, vous aurez des milliers de mesures de température inutiles qui consommeront la vitesse et la bande passante Internet des utilisateurs (un problème pour ceux ayant des forfaits limités), utiliseront plus d'énergie, ce qui peut poser problème pour des appareils alimentés par batterie comme des capteurs distants, et augmenteront le coût des ressources cloud nécessaires pour les traiter et les stocker.
Si vous surveillez des données autour d'une machine dans une usine qui, en cas de panne, pourrait causer des dommages catastrophiques et des pertes de revenus de plusieurs millions de dollars, alors mesurer plusieurs fois par seconde pourrait être nécessaire. Il vaut mieux gaspiller de la bande passante que manquer une télémétrie indiquant qu'une machine doit être arrêtée et réparée avant de se casser.
💁 Dans ce cas, vous pourriez envisager d'utiliser un appareil en périphérie pour traiter d'abord la télémétrie afin de réduire la dépendance à Internet.
Perte de connectivité
Les connexions Internet peuvent être peu fiables, avec des pannes fréquentes. Que doit faire un appareil IoT dans ces circonstances - doit-il perdre les données ou les stocker jusqu'à ce que la connectivité soit rétablie ? Encore une fois, la réponse est : cela dépend.
Pour un thermostat, les données peuvent probablement être perdues dès qu'une nouvelle mesure de température est prise. Le système de chauffage ne se soucie pas qu'il faisait 20,5°C il y a 20 minutes si la température est maintenant de 19°C, c'est la température actuelle qui détermine si le chauffage doit être allumé ou éteint.
Pour des machines, vous pourriez vouloir conserver les données, surtout si elles sont utilisées pour détecter des tendances. Certains modèles d'apprentissage automatique peuvent détecter des anomalies dans des flux de données en examinant les données sur une période définie (comme la dernière heure) et en repérant des données anormales. Cela est souvent utilisé pour la maintenance prédictive, en recherchant des indications qu'une panne pourrait survenir bientôt afin de pouvoir réparer ou remplacer avant que cela ne se produise. Vous pourriez vouloir que chaque bit de télémétrie d'une machine soit envoyé pour qu'il puisse être traité pour la détection d'anomalies. Une fois que l'appareil IoT peut se reconnecter, il enverra toute la télémétrie générée pendant la panne Internet.
Les concepteurs d'appareils IoT devraient également envisager si l'appareil IoT peut être utilisé pendant une panne Internet ou une perte de signal due à l'emplacement. Un thermostat intelligent devrait pouvoir prendre des décisions limitées pour contrôler le chauffage s'il ne peut pas envoyer de télémétrie au cloud en raison d'une panne.
Pour que MQTT gère une perte de connectivité, le code de l'appareil et du serveur devra être responsable de garantir la livraison des messages si nécessaire, par exemple en exigeant que tous les messages envoyés soient confirmés par des messages supplémentaires sur un sujet de réponse, et si ce n'est pas le cas, ils sont mis en file d'attente manuellement pour être rejoués plus tard.
Commandes
Les commandes sont des messages envoyés par le cloud à un appareil, lui demandant de faire quelque chose. La plupart du temps, cela implique de donner une sorte de sortie via un actionneur, mais cela peut être une instruction pour l'appareil lui-même, comme redémarrer ou collecter des données supplémentaires de télémétrie et les renvoyer en réponse à la commande.
Un thermostat pourrait recevoir une commande du cloud pour allumer le chauffage. Sur la base des données de télémétrie de tous les capteurs, si le service cloud a décidé que le chauffage doit être allumé, il envoie la commande correspondante.
Envoyer des commandes au broker MQTT
L'étape suivante pour notre veilleuse contrôlée par Internet est que le code du serveur envoie une commande à l'appareil IoT pour contrôler la lumière en fonction des niveaux de lumière détectés.
-
Ouvrez le code du serveur dans VS Code.
-
Ajoutez la ligne suivante après la déclaration de
client_telemetry_topic
pour définir le sujet auquel envoyer les commandes :server_command_topic = id + '/commands'
-
Ajoutez le code suivant à la fin de la fonction
handle_telemetry
:command = { 'led_on' : payload['light'] < 300 } print("Sending message:", command) client.publish(server_command_topic, json.dumps(command))
Cela envoie un message JSON au sujet des commandes avec la valeur de
led_on
définie sur true ou false en fonction de si la lumière est inférieure à 300 ou non. Si la lumière est inférieure à 300, true est envoyé pour demander à l'appareil d'allumer la LED. -
Exécutez le code comme précédemment.
-
Ajustez les niveaux de lumière détectés par votre appareil physique ou virtuel. Les messages reçus et les commandes envoyées seront affichés dans le terminal :
(.venv) ➜ nightlight-server python app.py Message received: {'light': 0} Sending message: {'led_on': True} Message received: {'light': 400} Sending message: {'led_on': False}
💁 La télémétrie et les commandes sont envoyées sur un seul sujet chacun. Cela signifie que la télémétrie de plusieurs appareils apparaîtra sur le même sujet de télémétrie, et les commandes pour plusieurs appareils apparaîtront sur le même sujet de commandes. Si vous vouliez envoyer une commande à un appareil spécifique, vous pourriez utiliser plusieurs sujets, nommés avec un identifiant unique d'appareil, comme
/commands/device1
,/commands/device2
. De cette façon, un appareil peut écouter uniquement les messages qui lui sont destinés.
💁 Vous pouvez trouver ce code dans le dossier code-commands/server.
Gérer les commandes sur l'appareil IoT
Maintenant que des commandes sont envoyées depuis le serveur, vous pouvez ajouter du code à l'appareil IoT pour les gérer et contrôler la LED.
Suivez l'étape pertinente ci-dessous pour écouter les commandes du broker MQTT :
Une fois ce code écrit et exécuté, expérimentez en modifiant les niveaux de lumière. Observez la sortie du serveur et de l'appareil, et regardez la LED lorsque vous changez les niveaux de lumière.
Perte de connectivité
Que doit faire un service cloud s'il doit envoyer une commande à un appareil IoT hors ligne ? Encore une fois, la réponse est : cela dépend.
Si la dernière commande remplace une précédente, alors les précédentes peuvent probablement être ignorées. Si un service cloud envoie une commande pour allumer le chauffage, puis une commande pour l'éteindre, alors la commande d'allumage peut être ignorée et ne pas être renvoyée.
Si les commandes doivent être traitées dans l'ordre, comme déplacer un bras robotique vers le haut, puis fermer une pince, elles doivent être envoyées dans l'ordre une fois la connectivité rétablie.
✅ Comment le code de l'appareil ou du serveur pourrait-il garantir que les commandes sont toujours envoyées et traitées dans l'ordre via MQTT si nécessaire ?
🚀 Défi
Le défi des trois dernières leçons était de lister autant d'appareils IoT que possible dans votre maison, école ou lieu de travail, et de décider s'ils sont construits autour de microcontrôleurs ou d'ordinateurs monocartes, ou même d'un mélange des deux, et de réfléchir aux capteurs et actionneurs qu'ils utilisent. Pour ces appareils, réfléchissez aux messages qu'ils pourraient envoyer ou recevoir. Quelle télémétrie envoient-ils ? Quels messages ou commandes pourraient-ils recevoir ? Pensez-vous qu'ils sont sécurisés ?
Quiz après le cours
Révision et étude personnelle
Lisez davantage sur MQTT sur la page Wikipédia de MQTT.
Essayez de faire fonctionner un broker MQTT vous-même en utilisant Mosquitto et connectez-vous à celui-ci depuis votre appareil IoT et votre code serveur.
💁 Conseil - par défaut, Mosquitto n'autorise pas les connexions anonymes (c'est-à-dire sans nom d'utilisateur et mot de passe), et n'autorise pas les connexions depuis l'extérieur de l'ordinateur sur lequel il fonctionne.
Vous pouvez résoudre cela avec un fichier de configurationmosquitto.conf
contenant ce qui suit :listener 1883 0.0.0.0 allow_anonymous true
Devoir
Comparer et contraster MQTT avec d'autres protocoles de communication
Avertissement :
Ce document a été traduit à l'aide du service de traduction automatique Co-op Translator. Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.