Le protocole de messagerie MQTT que je vous ai présenté dans l’article précédent convient particulièrement aux systèmes où sont échangés de nombreux messages, par exemple entre des capteurs et des smartphones. En plus de ses nombreuses propriétés intéressantes, le protocole MQTT présente l’avantage d’être à code source ouvert et d’être soutenu par une communauté active.
 
MQTT a deux sites officiels. Le premier est http://mqtt.org. On peut en particulier y télécharger la spécification du protocole. Le second est le projet Paho de l’Eclipse IOT Working Group, un groupe dont font partie des entreprises comme Cisco, Huawei et Bosch. On y trouve des implantations de MQTT pour divers langages.
 
J’ai bien sûr eu envie de tester le protocole. Pour nous mettre le pied à l’étrier, il existe heureusement des courtiers (brokers) MQTT préimplantés. Pour mon test « dans le nuage », j’ai choisi le serveur de test Mosquito. La documentation rappelle que les messages pourront être lus par n’importe qui, donc attention à ne pas publier par inadvertance des données sensibles !
 
L’avertissement ne nous concerne pas ici puisque je souhaite juste envoyer et recevoir quelques messages de test depuis un client PC programmé par mes soins. Le site Paho contient des bibliothèques open source pour Java, JavaScript, Python et d’autres langages. J’ai opté pour la bibliothèque M2Mqtt pour C#/.NET. Si vous ne connaissez pas C#, vous trouverez une documentation complète ici et . Je vous donne également le lien direct vers le code source de M2Mqtt car les liens du site officiel de MQTT sont souvent cassés.

L’archive à télécharger contient une Solution Visual Studio (dossier Project) que vous pouvez ouvrir avec la version Community gratuite de Visual Studio 2015. Nous devons d’abord ajouter un autre projet à la Solution qui intègre l’interface utilisateur et le code du client, puis ajouter à ce nouveau projet la référence à la bibliothèque M2Mqtt qui donnera accès à ses fonctions :
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
 
La programmation à l’aide de cette bibliothèque s’avère très simple lorsqu’on en suit les instructions. Vous pouvez télécharger la Solution complète ci-dessous, ainsi que l’exécutable de l’application (cet exécutable nécessite la version 4.5 du framework .NET, souvent préinstallé sur Windows ; si ce n’est pas le cas, vous pouvez le télécharger gratuitement).
 
Mon client peut recevoir ses propres messages lorsqu’on entre le même sujet dans la boîte Topic et que l’on sélectionne l’option Subscribe. Après avoir entré du texte dans le champ Text to publish et cliqué sur le bouton Publish, le message est envoyé dans le réseau, puis réapparaît presque aussitôt dans la boîte Received text. Si vous lancez le client sur différents PC, vous pouvez émettre et recevoir des messages. J’ai pu sans problème en envoyer à mon PC maison depuis celui de mon bureau, et également pu en envoyer à un collègue (pour cela il est pratique de choisir son propre prénom comme Topic to publish et d’utiliser celui du destinataire comme Topic to subscribe).
Ce client devrait vous convaincre que l’envoi et la réception de messages est plus simple avec un courtier qu’avec un traditionnel serveur web à adresse IP fixe, souvent long et pénible à configurer et paramétrer.
Rien de tel qu’un petit succès pour avoir envie d’aller plus loin, non ? C’est justement ce que nous ferons la prochaine fois !   [HM]