Débuter
Matériel recommandé

Vous voulez participer au financement du blog. C’est simple, suivez les liens commerciaux pour faire vos achats. Quelques pourcents qui font toute la différence. Merci à vous !

Kit raspberry pi 4 8GB
Kit Raspberry Pi 4 - 8GB
kit raspberry pi 4
Kit Raspberry Pi 4 - 4GB
raspberry pi 4 2019
Raspberry Pi 4 - 4GB
Cartes micro-SD SDHC v90
Kit Retrogaming Nespi
Kit Retrogaming

Routeur MQTT Node-RED vers cloudMQTT, accéder à vos modules Sonoff Tasmota

routeur mqtt mosquitto cloudmqtt
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Dans l’article précédent, nous avons testé le broker en ligne gratuit cloudMQTT. L’offre gratuite est limitée à 5 connexions simultanées. C’est largement suffisant pour piloter un serveur domotique même lorsque vous n’êtes pas chez vous, mais c’est trop peu si vous avez développé de nombreux objets connectés pilotés en MQTT.

 

Je vous propose ici de développer un routeur MQTT à l’aide de  Node-RED.  Cerise sur le gateau, tous les échanges avec vos accessoires domotiques DIY seront sécurisés pour une connexion SSL entre Node-RED et cloudMQTT.

Configuration nécessaire : broker MQTT local, Node-RED sur Raspberry Pi

Vous aurez besoin d’un broker local ainsi que de Node-RED. Le Raspberry Pi (ou n’importe quel autre mini-PC) est tout indiqué pour ce type d’application. Le rapport performance / consommation énergétique est imbattable.

Je propose toujours le broker Mosquitto dans mes projets mais il en existe beaucoup d’autre. Peu importe le broker employé, le principe sera le même.

Suivez ce deux tutoriels pour préparer votre environnement :

A LIRE AUSSI :
Débuter avec Node-Red sur Raspberry Pi. Installation, autostart, prise en main
A LIRE AUSSI :
Installer Node-RED sur macOS ou Windows 10, démarrage automatique avec PM2

D’autres articles pour aller plus loin avec Node-RED

Voir tous les articles sur Node-RED

Créer la connexion au broker local (ici Mosquitto)

La première chose à faire et d’ajouter un Node MQTT au flow courant

node-red node mqtt input

Faites un double clic pour éditer les paramètres du Node. Cliquez sur le crayon à coté du sélecteur Add new mqtt-broker.

node-red mqtt router cloudmqtt add broker

Configurer la connexion à Mosquitto

  • Server : indiquez l’adresse IP ou localhost si Mosquitto est installé sur le même Raspberry Pi que NodeRED
  • Port : 1883 par défaut
  • User et password à l’onglet Security (conseillé)

mosquito node-red mqtt connexion

Il est possible de publier des messages automatiquement pour connaître l’état du routeur en allant sur l’onglet Messages pour

  • Le démarrage du routeur (birth message)
  • L’arrêt du routeur (close message)
  • Une erreur (will message)

Je vous conseille de fixer le QoS à 2.

Terminer la configuration en cliquant sur Done dans le coin supérieur droit.

node-red mqtt connection configre messages

Connecter le routeur à cloudMQTT

Ajouter un nouveau Node MQTT de type Output sur le flow. Faites un double clic pour le configurer.

node-red mqtt output node

Configurer la connexion avec les paramètres récupérés sur l’instance cloudMQTT :

  • Server : l’instance cloudMQTT
  • Port : indiquez le port SSL pour que la connexion soit sécurisée
  • Cocher Enable secure SSL/TLS connection
  • Saisissez le user et password de l’instance dans l’onglet Security

cloudmqttt node-red connection

Vous pouvez également configurer des messages qui permettront de connaître l’état du routeur. Voici un exemple de configuration.

cloudmqtt messages node-red configuration router

Déployer le routeur MQTT sur Node-RED

Il ne reste plus qu’à relier les deux Nodes et déployer le flow en cliquant sur Deploy dans le coin supérieur droit.

node-red cloudmqtt router mosquitto raspberry pi

Ouvrez sur le Websocket UI sur cloudMQTT pour vérifier que le routeur est bien démarré. Ici, j’ai également allumé une prise connectée Sonoff S26 hackée avec le firmware Tasmota. Le message avec l’état stopped a été envoyé au moment du déploiement du flow, c’est parfaitement normal.

cloudmqtt websocket ui node-red router status

Routeur bi-directionnel pour les accessoires Tasmota

Cette configuration ne fonctionne malheureusement que dans un sens. Avec le flow précédent, On va pouvoir récupérer tous les états et les valeurs (sur Homy par exemple), mais on ne pourra pas renvoyer des commandes pour allumer / éteindre un module Sonoff. Pour faire cela, il va falloir renvoyer les messages entrant sur cloudMQTT et les renvoyer vers le broker local.

Pour que ça fonctionne, on va filtrer les messages suivants le type de topic. Tasmota publie des messages sur 3 topics différents :

  • cmnd commande à exécuter sur le module (on, off, toggle)
  • stat retour d’état d’une commande sur le module
  • tele information sur l’état du module.

Le premier bloc transfert tous les messages publiés sur le topic stat/# vers cloudMQTT. Le # permet de renvoyer de tous les accessoires Tasmota

Le second flow transfert les commandes envoyés sur cloudMQTT sur le broker local (sur lequel sont connectés les accessoires Sonoff – Tasmota sont connectés). Cette fois on filtre uniquement les messages publiés sur le topic cmnd et qui se termine par POWER. Pour cela on utilise le + (wildcard un seul niveau*)

sonoff tasmota mqtt router cloudmqtt

N’oubliez pas d’adaper le topic si vous avez configuré un préfix sur Tasmota

(*) le wildcard multi-niveau # ne fonctionne pas sur Node-RED.

Code source du routeur MQTT Node-RED

Coller ce code de ce flow sur votre Node-RED puis modifiez les paramètres de connexion avant de le déployer.

[{"id":"4de21b42.3cb0d4","type":"mqtt in","z":"1c02b62a.c1ff4a","name":"","topic":"stat/#","qos":"0","datatype":"auto","broker":"80ccacd4.35a24","x":90,"y":100,"wires":[["ddff4f0.0c79fb"]]},{"id":"ddff4f0.0c79fb","type":"mqtt out","z":"1c02b62a.c1ff4a","name":"cloudMQTT","topic":"","qos":"","retain":"","broker":"6c628311.0486ac","x":330,"y":100,"wires":[]},{"id":"e6695679.c6a678","type":"mqtt in","z":"1c02b62a.c1ff4a","name":"","topic":"cmnd/+/POWER","qos":"0","datatype":"auto","broker":"6c628311.0486ac","x":120,"y":180,"wires":[["d756894a.745608","80b760e.ba703a"]]},{"id":"d756894a.745608","type":"mqtt out","z":"1c02b62a.c1ff4a","name":"Mosquitto local","topic":"","qos":"","retain":"","broker":"80ccacd4.35a24","x":340,"y":180,"wires":[]},{"id":"80b760e.ba703a","type":"debug","z":"1c02b62a.c1ff4a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":330,"y":240,"wires":[]},{"id":"80ccacd4.35a24","type":"mqtt-broker","z":"","name":"mosquitto","broker":"192.168.1.90","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"node-red-router","birthQos":"2","birthRetain":"false","birthPayload":"started","closeTopic":"node-red-router","closeQos":"2","closePayload":"stopped","willTopic":"node-red-router","willQos":"2","willPayload":"stopped"},{"id":"6c628311.0486ac","type":"mqtt-broker","z":"","name":"cloudMQTT","broker":"m24.cloudmqtt.com","port":"26307","tls":"","clientid":"","usetls":true,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"node-red-router/status","birthQos":"2","birthRetain":"false","birthPayload":"online","closeTopic":"node-red-router/status","closeQos":"2","closePayload":"stopped","willTopic":"node-red-router/status","willQos":"2","willPayload":"stopped"}]

Voilà, vous pouvez maintenant connecter autant d’accessoires domotiques et objets connectés MQTT et les piloter hors de chez vous depuis Homy ou une appli. Rien ne vous empêche d’adapter le principe pour l’adapter à d’autres firmware (Espurna, ESPEasy, code Arduino ou Python…)

Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

Accéder directement aux forums

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

Ressources utiles

Débuter la discussion sur forum.projetsdiy.fr

Domotique et objets connectés à faire soi-même