Dans le monde d'aujourd'hui où les dispositifs connectés sont devenus omniprésents, le terme Internet des Objets (IoT) est devenu la description par défaut pour "dispositif connecté à internet". Bien que cet acronyme glorifié, en camel case, soit beau en soi, il y a bien plus à propos des "dispositifs connectés à internet" que ce que les gens réalisent. Dans cet article, j'aimerais plonger plus profondément dans l'un des protocoles les plus répandus utilisés dans les dispositifs IoT : le protocole MQ Telemetry Transport (MQTT). Nous allons brièvement couvrir ce que c'est, comment cela fonctionne, et ce qui est novateur à son sujet par rapport à d'autres technologies utilisées. Nous passerons également en revue un exemple complet en utilisant un dispositif Arduino.
Dans une configuration client-serveur typique, nous avons un fournisseur (c'est-à-dire les appareils eux-mêmes) qui publie des données de capteurs sur le serveur et un consommateur qui demande à voir ces données de capteurs depuis le serveur. MQTT n'est pas différent. C'est un protocole léger utilisé pour communiquer entre les appareils. Les appareils vont typiquement « publier » (c'est-à-dire envoyer) des données à un « courtier » MQTT (ou serveur) qui est ensuite conservé pour être servi à d'autres appareils ou applications web. Un autre appareil ou application web va « s'abonner » à cet ensemble de données (c'est-à-dire demander les données) auprès du courtier MQTT et ensuite le courtier MQTT livre ces données à eux. Pensez à cela vraiment comme juste un serveur web glorifié avec deux exceptions majeures :
Pour les deux raisons mentionnées ci-dessus, MQTT est devenu un protocole très populaire avec les appareils IoT. Historiquement, les gens utilisaient des requêtes HTTP POST/GET pour réaliser cette forme de communication appareil-serveur, mais cela limitait leur capacité à utiliser d'autres dispositifs de communication tels que le Bluetooth ou le ZigBee. Puisque MQTT est agnostique à cet égard, nous pouvons maintenant avoir des capacités de passage de messages au sein d'un réseau maillé en utilisant MQTT sans jamais se connecter à l'internet
Il existe de nombreuses façons de commencer avec MQTT, y compris la conception d'une solution complète de bout en bout. Pour simplifier les choses, nous utiliserons un service de courtier MQTT gratuit fourni par Adafruit dans cet exemple. Cela nous permettra de nous concentrer uniquement sur le côté client du processus de développement. Pour commencer, vous aurez besoin de ce qui suit :
Il y a quelques étapes à suivre pour configurer notre environnement. Commençons par préparer notre matériel. Je vais utiliser un Arduino Uno et un Shield Ethernet Arduino connectés à mon réseau local.
Nous devons empiler le Shield Ethernet sur l'Arduino et le brancher au réseau comme ceci :
Une fois notre matériel configuré, ouvrons l'Arduino IDE et installons les bibliothèques nécessaires. Lancez l'Arduino IDE et allez dans Outils > Gérer les bibliothèques…
Recherchez la bibliothèque Adafruit MQTT et cliquez sur installer :
Il vous sera demandé d'installer également les dépendances de la bibliothèque. Cliquez sur « Installer tout ».
Une fois que vous avez installé les bibliothèques de support, vous pouvez ouvrir un exemple en naviguant vers Fichier > Exemples > Adafruit MQTT Library > mqtt_ethernet.
À ce stade, nous devons faire une pause et récupérer nos identifiants depuis notre compte Adafruit IO. Connectez-vous à Adafruit IO et cliquez sur "Ma Clé" en haut :
Maintenant, revenez à votre exemple de sketch Arduino mqtt_ethernet et remplissez les champs AIO_USERNAME et AIO_KEY avec les champs "Nom d'utilisateur" et "Clé Active" situés dans votre compte Adafruit IO. Assurez-vous que votre appareil est connecté puis cliquez sur Téléverser :
Pour voir le statut de l'appareil (et pour s'assurer qu'il est connecté au courtier MQTT) naviguez vers Outils > Moniteur Série. Vous devriez voir une sortie qui ressemble à ceci :
À ce point, nous avons confirmé que les données sont bien envoyées au courtier MQTT. Pour jeter un œil aux données réelles sur le serveur, retournons à notre compte Adafruit IO et cliquons sur "Flux" puis cliquons sur "photocell"
Nous obtenons maintenant une capture en direct des données que notre Arduino envoie au courtier MQTT. Nous pouvons également télécharger des données historiques.
Félicitations ! Vous avez maintenant configuré un appareil compatible MQTT et publié vos données sur un courtier MQTT. Passez à l'étape suivante en construisant vos propres capteurs personnalisés et en publiant les données sur votre courtier MQTT.
Dans cet article, nous avons appris ce qu'est MQTT, pourquoi il est utilisé et comment l'implémenter sur un microcontrôleur. Nous avons également démontré comment commencer avec un service de courtier MQTT gratuit et visualiser les données sur leur serveur. Vous devriez maintenant être à l'aise pour démarrer votre propre sketch Arduino basé sur l'exemple que nous avons utilisé pour publier vos propres données de capteur sur le courtier MQTT et les visualiser dans le cloud.