Accueil | Objets Connectés | Blynk | Utiliser Node-RED pour créer une passerelle entre MySensors et Blynk (serveur local)

Utiliser Node-RED pour créer une passerelle entre MySensors et Blynk (serveur local)

Blynk est génial pour utiliser et commander ses objets connectés depuis son smartphone iOS ou Android. Si vous avez développé des objets connectés à l’aide de la librairie MySensors pour communiquer à longue distance par ondes radio, il est très facile de renvoyer les données à l’aide de Node-RED. Ce tutoriel ne traite que de l’envoi de données en provenance d’un sonde MySensors. Nous verrons dans un prochain tutoriel comment piloter des actionneurs MySensors depuis l’application Blynk.

Avant de commencer

Si vous ne disposez pas encore de Node-RED, suivez le tutoriel qui correspondant à votre environnement :

Vous pouvez également lire ce tutoriel pour apprendre comment gérer simplement les modules.

Installer le module node-red-contrib-blynk-websockets pour Node-RED

Ouvrez le gestionnaire de palette et faites une recherche sur le mot clé Blynk. Vous devriez obtenir 2 modules :

  • node-red-contrib-blynk
  • node-red-contrib-blynk-websockets. La page npm du plugin est ici

node-red plugin blynk

Le premier plugin (node-red-contrib-blynk) est maintenant obsolète. Il fonctionne toujours mais ne recevra plus de mise à jour. Installez le 2nd plugin node-red-contrib-blynk-websockets. Une fois l’installation terminée, vous aurez une nouvelle palette composée de 4 outils

  • read event : permet de récupérer les événements de lecture
  • write event : permet de récupérer les événements d’écriture
  • write : permet de publier quelque chose sur Blynk
  • email : permet d’utiliser un email par l’intermédiaire du serveur Blynk

Au moment de l’écriture de cet article, le plugin n’est pas encore documenté. J’ai du un peu chercher. Il faudra m’excuser s’il y a des erreurs. En tout cas n’hésitez pas à partager si vous avez d’autres infos que les miennes.

node-red-contrib-blynk-websockets palette

Utiliser Node-RED comme passerelle entre MySensors et Blynk

Node-RED se prête très bien à ce jeu. A part décoder les messages (le flow se trouve plus bas) en provenance de la Gateway MySensors, il n’y aura aucune programmation. Voici comment nous allons faire :

  • Le capteur transmet les mesures par ondes radio (2.4GHz) à la Gateway MySensors (suivez ce tutoriel pour fabriquer une gateway réseau WiFi).
  • On se connecte à la gateway MySensors réseau depuis Node-RED à l’aide du flow TCP/IP.
  • On décode les messages MySensors
  • On envoi chaque mesure sur le Pin Virtuels du projet Blynk
  • Le serveur Blynk reçoit les données
  • L’application mobile se connecte au serveur Blynk pour récupérer les mesures

Node-RED MySensors to blynk gateway.

Connexion à la Gateway MySensors

Pour se connecter à une passerelle réseau, nous allons utiliser le Node TCP

node-red tcp mysensors lan gateway

Configurez la connexion ainsi :

  • Type : Connect to
  • Port : 5003 par défaut (à adapter à votre configuration)
  • at host : l’adresse ip de la gateway réseau
  • output : stream of … String
  • Donnez un nom
  • Enregistrez avec Done

node-red tcp mysensors lan gateway settings parametres

Décoder les messages MySensors

Dans ce tutoriel précédent, nous avons vu comment décoder à la volée les messages reçus par la gateway MySensors. Nous allons l’utiliser de nouveau car on doit envoyer les données individuellement à Blynk. Collez le flow de décodeur dans votre projet Node-RED et connectez le àau Node TCP précédemment créé.

Mise en place de la passerelle

Maintenant que les messages sont décodés, on va pouvoir extraire ce qui nous intéresse et l’envoyer à Blynk. Pour cela, vous devez récupérer les informations suivantes :

  • Le Token du projet sur lequel vous voulez publier les données
  • Les Pins virtuels sur lesquels envoyer les données. Ici, ce sera V0 pour la température et V1 pour l’humidité
  • L’adresse IP du serveur Blynk et le port websocket

Node-RED va communiquer en Websocket avec le serveur Blynk. Pour une liaison non sécurisé, le port par défaut est le 8082.

Si vous disposez de votre propre serveur Blynk local, remplacez IP_BLYNK_SERVER par l’adresse IP. Si vous utilisé votre compte Blynk officiel, le serveur est cloud.blynk.cc .

Enfin si vous avez mis en place un certificat SSL, vous pouvez sécuriser les échanges avec Node-RED en vous connectant sur le websocket

Vous pouvez modifier les ports dans le fichier de configuration server.properties de Blynk

Dans la palette Node-RED, faites un recherche sur le mot clé Blynk. Placez le Node write sur le flow

node-red blynk contrib websocket write

Appuyez sur le crayon à droite de la liste de sélection pour ajouter une connexion

  • Url : l’url du websocket
  • Project key : le token vers lequel les données doivent être envoyées
  • Name : donnez un nom à la connexion
  • Enregistrez la configuration

node-red blynk contrib websockets url

De retour dans le Node write :

  • Sélectionnez la connexion dans la liste.
  • Indiquez le Pin virtuel (juste le nombre).
  • Donnez un nom
  • Enregistrez

 node red blynk websocket mysensors write virtual pin

Faites de même pour l’humidité. Branchez le Node Write sur le filtre d’extraction de la mesure. Voici ce que vous devez obtenir

node-red mysensor blynk gateway passerelle

Le code complet du flow

Déployez le flow et ouvrez l’application Blynk sur votre smartphone iOS ou Android. Vous recevez maintenant les données en provenance de vos objets MySensors sans aucune modification du code de ces dernières.

blynk mysensors node-red gateway

 

  • JJ

    Vivement les vacances pour tester ça !
    Encore un super article, bravo !

    • Merci beaucoup JJ. En tout cas, ça fait 2 jours que je suis à la fête, mon blog était bien planté ! Désolé pour les dysfonctionnements. A très bientôt

      • JJ

        Tu as de la chance, je ne suis pas passé à ce moment là.
        C’est marrant, j’ai eut un soucis la semaine dernière qui m’a fait couper le mien pendant deux jours également.

        • J’ai surtout transpiré. J’ai plusieurs blogs qui pompent mes articles en les traduisant (enfin traduire est un bien grand mot!) mais ils pointent sur mes images… Seul problème, en plus de devoir réparer, mon serveur était à genoux. Au moins je sais (un peu) comment faire pour la prochaine fois 🙂 ++

          • JJ

            Faut dire que tes tutos sont de qualité !
            D’ailleurs je me suis souvent demandé comment tu faisais pour en sortir autant, j’imagine que ton métier y est un peu pour quelque chose ?

  • Nicolas_Luchier

    Bonjour,

    Je viens de tomber sur votre site, je pense que je vais prendre un peu de temps pour creuser un peu la masse d’information qu’il y a par ici.

    Je débute un peu dans cet internet des objets. J’avais repéré mysensors il y a quelque temps pour mettre un place un réseau de capteurs à la maison. Par contre, pour le plus grand nombre, ça reste tout de même technique.

    node-red m’avait aussi tapé dans l’œil dans ma recherche du serveur “parfait” pour aller avec mysensor.

    Quelques points restent flous pour moi cependant, et notamment : quel avantage de passer par node-red et blynk par rapport à installer un jeedom ou autre (outre la beauté du geste) ?

    Quel serait le chemin le plus ‘user friendly’ pour mettre en place un réseau de capteur ? Je cherche à mettre en place des ateliers d’initiation pour ado/adulte, mais je voudrais parler au plus grand nombre et donc un procédé le moins technophile possible.

    Merci et bravo pour vos articles.

    • Bonjour Nicolas et merci beaucoup. Effectivement, Projets DIY est plus orienté vers les technologies de développement (électronique, code, serveur…) que vers l’emploi de produits commerciaux. J’essai de rester dans cette philosophie le plus possible sauf lorsque des produits du commerces sont plus adaptée, surtout lorsqu’on touche le 220V en fait ou la sécurité (incendie gaz dangereux…). Vous avez posé beaucoup de questions et une seule. Je vais essayer d’y répondre le mieux possible. N’hésitez pas à creuser d’avantage si ce n’est pas assez clair !:
      – MySensors : oui c’est un peu technique. Il faut maitriser le code Arduino d’un coté, coder l’objet, la gateway, les traitement coté serveur… MySensors est adapté pour la communication extérieure (plus longue portée que le WiFi). Pour des objets d’intérieur, la communication WiFi avec un broker (serveur) MQTT est plus facile à mettre en oeuvre.
      – Node-RED est une bonne approche pour l’apprentissage (à condition de ne pas être bloqué par l’anglais) et le prototypage. On peux sans problème développer son propre serveur domotique. Par contre, ça reste encore un outil en développement.
      – Blynk est une brique logicielle et un serveur qui va simplifier la communication entre une application mobile et un projet Arduino/ESP8266. Il n’y a donc pas besoin de développer son application mobile iOS / Android. On peut piloter ses objets, recevoir des données hors de chez soi.
      – Jeedom et les autres serveurs domotiques (Home Assistant, Domoticz). Il permettent de créer des tableaux de commande, avoir un synthèse de tous les appareils domotiques, avoir un historique des états/mesures/actions et créer des scénarios (fermer les volets s’il commence à pleuvoir ou si la nuit tombe…). Les logiciels domotique prennent en charge des protocoles de communication. Dans le DIY, ce sera par exemple Mysensors, MQTT…
      Donc pour conclure, on choisira sa/ses techno(s) en fonction :
      * Des conditions de communication disponibles et de la finalité. En extérieur ou difficile, la techno radio peut convenir (MySensors). En intérieur, on peut rester en WiFi : MQTT, HTTP
      * De l’objet à développer
      * De vos objectifs : pouvoir piloter/recevoir des données en 3G/4G à l’aide d’un smartphone…
      * Des compétences (programmation, linux…)

      Ca mérite quelques articles, vous ne pensez pas ? A très bientôt