Connaissez-vous le MQTT ? Il s'agit d'un standard OASIS permettant de simplifier la communication machine à machine (M2M), idéalement conçu pour l'Internet des objets.

MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium. For example, it has been used in sensors communicating to a broker via satellite link, over occasional dial-up connections with healthcare providers, and in a range of home automation and small device scenarios. It is also ideal for mobile applications because of its small size, low power usage, minimised data packets, and efficient distribution of information to one or many receivers.

C'est sympa, mais cela signifie quoi dans la pratique ?

Et bien cela ressemble à un bus d’événement très simple à contacter sur lequel des producteurs et des consommateurs de message peuvent s'abonner.

broker.png

Il existe de nombreuses implémentations de broker MQTT sur Internet. L'un des plus simples à utiliser est très certainement Mosca, une implémentation NodeJS de MQTT ultra-configurable et adaptable à tout besoin. Quelques lignes de code Javascript permettent d'instancier son propre serveur MQTT.

Pour des besoins plus lourds, notamment l'exposition REST/COAP des objets, il est possible d'utiliser Eclipse Ponte une surcouche de Mosca actuellement en incubation à la fondation Eclipse.

architecture-ponte.png

Ensuite si vous souhaitez ajouter de l’intelligence à votre broker MQTT, la solution la plus simple est de connecter une instance Node-Red à votre broker MQTT.

node-red-screenshot2.png

Vous pourrez créer les scénarios de votre choix, orchestrer des actions dès lors qu'un certain événement arrive sur le broker ...

C'est autour de ces deux produits que je suis en train de revoir l'architecture de mon logiciel de domotique pour les geeks : Domogeeek. Une branche de développement a été créée spécifiquement pour la migration. Le gros avantage du MQTT est que les producteurs de messages et les consommateurs peuvent être répartis sur différentes machines.

Je vous tiendrai au courant de mes avancements, une v1.0 devrait bientôt voir le jour dès que tous les modules auront été migrés.