Mqtt avec Arduino

Le protocole Mqtt est utilisé par les objets connectés pour communiquer. Il s’agit d’un protocole très léger de messagerie. Il permet donc à un objet connecté d’envoyer et/ou de recevoir des messages.

Un serveur Mqtt unique (Broker) sert à centraliser les messages. Ainsi un objet connecté va publier (publish) vers le Broker. Pour recevoir des messages le client va souscrire (subscribe) à leurs réception auprès du Broker.

Pour que les messages ne se mélangent pas, ils sont publiés sur une chaine (topic).

Par exemple :  blaisepascal/meteo1/temperature

Pour récupérer la température de la station météo1 du lycée Blaise Pascal on va donc souscrire au topic : blaisepascal/meteo1/temperature

La bibliothèque pubsubclient.h (disponible dans Croquis – Inclure une bibliothèque – gérer les bibliothèques), permet de publier et souscrire auprès d’un Broker MQTT. (voir http://arduino.blaisepascal.fr/installer-une-bibliotheque/)

Après connexion au broker, la commande :

permet de publier la phrase « Hello from ESP8266 » sur le topic esp/test.

permet de publier un float sur le topic esp/test/qqchose.

La fonction callback permet de programmer une action lors de l’apparition d’une donnée sur un topic auquel on a souscrit. Pour souscrire a un topic, il faut utiliser la commande :

Cette commande pourra être placée juste après la connexion au serveur Mqtt (ci-dessous la fonction reconnect().

Exemple de code Arduino avec un ESP8266 :

Utilisation d’un Broker en ligne

L’utilisation d’un Broker gratuit en ligne permet de s’affranchir de l’installation d’un Broker et de publier/souscrire les messages Mqtt sur un Cloud.

Nous utiliserons un Broker en ligne gratuit : MaQiaTTo

Il suffit de s’inscrire avec un email. Les topics commenceront toujours par l’email.

exemple : prenom.nom@mail.org/meteo1/temperature

Code Arduino pour publier des données :

Remarque :

Il faut utiliser une carte avec wifi intégré de type ESP8266 ou ESP32 :

Arduino IDE : Installer les cartes ESP32 et ESP8266

Vous aimerez aussi...

4 réponses

  1. Mariller Guy dit :

    bonjour pourquoi j’obtiens chaque fois dans void setup ‘setup_wifi’ was not declared in this scope lors de la compilation une réponse me servirait grandement cordialement GM

  2. Arnaud BULCKE dit :

    Bonjour, normalement ça fonctionne, j’ai essayé. Au pire il faut déplacer le void setup_wifi() avant le void setup().

  3. mikael dit :

    erreur de compilation

  4. Arnaud BULCKE dit :

    Il faut choisir une carte ESP32 ou ESP8266 pour avoir le wifi intégré (cf https://arduino.blaisepascal.fr/arduino-ide-installer-les-cartes-esp32-et-esp8266/)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

code