MQTT, vous connaissez ? Non, alors allez faire un saut sur Wikipedia par exemple, il s’agit d’un protocole à destination de ces IoT, l’internet des objets, ou encore les objets connectés, ces petits modules qui vont rapidement envahir notre univers et consommer nos adresses IP pour venir communiquer, qui une température, qui une mesure de l’air, une vitesse du vent, une luminosité, un taux de remplissage d’un container, etc.

Curieux, je me suis intéressé à Mosquitto, un serveur que j’ai installé sur un gros serveur Ubuntu d’Ovh, mais qui fonctionnera tout aussi bien sur Raspberry Pi 3 (cherche Google, cherche…). Ce serveur, s’appelle Broker dans le langage des objets connectés.

MQTT va fonctionner avec des topics, c’est à dire des sujets donnés : par exemple /capteur/exterieur/temperature sera un sujet auquel il sera possible d’accéder si l’un de vos IoT diffuse dessus.

De même, /capteur/+/temperature viendra concerner à la fois /capteur/interieur/temperature que /capteur/exterieur/temperature, mais ne lire pas les trames de /capteur/exterieur/pression par exemple.

Pareil, avec /capteur/exterieur/#, vous lirez TOUS les capteurs extérieurs, mais pas l’intérieur.

Nous avons donc des IoT, un Broker, et des clients. L’IoT se connecte au Broker (mode publish), transmet des informations sur un topic donné, peu importe les informations, tout est possible. Le serveur les reçoit et les diffuse aux clients qui sont abonnés (mode subscribe) au bon topic. L’exemple ci-dessous tiré d’internet illustre le fonctionnement de base :

Vous suivez ? Ajoutons qu’on peut sécuriser les connexions par login/mot de passe, voir même basculer en SSL moyennant la génération de certificats.

Imaginons un exemple concret :

  • un raspberry Pi en broker MQTT
  • un raspberry Pi abonné à différents topics, chargé d’afficher ce qu’il reçoit
  • une sonde de température
  • une sonde de luminosité
  • un sonde de détection de CO2

Chaque sonde publiera un topic en particulier, via le Raspberry Pi installé en broker. Le Raspberry Pi client pourra alors récupérer via un script Python les différentes valeurs et les afficher sur une page html au fur et à mesure de leur arrivée : vous avez un tableau de bord simple, très économique, et pourrez en permanence mesurer ce que bon vous semble.

En sonde, j’ai utilisé avec succès un simple NodeMcu, basé sur un ESP8266, connecté en WiFi à une box quelconque, programmé avec un script Arduino trouvé au hasard sur internet. J’ai également pu m’exercer à diffuser (= publish) des informations via le terminal d’un portable Ubuntu.

En conclusion de ce rapide billet, sachez que MQTT peut tout faire, et plus encore si vous le reliez à LoraWan : il disposerait ainsi d’une connexion sans fil équivalente à un réseau GSM de base, à moindre coût toutefois. Je pense que nous en reparlerons, ce nouveau monde connecté semble très sympa à explorer, surtout avec l’utilisation de petits sondes à coût très faible.