Il y a quelques semaines, un client nous a contacté pour savoir comment envoyer les données de ses capteurs Yoctopuce sur le service cloud FRED de sensetecnic. Nous avons publié un nouveau firmware pour que les YoctoHubs soient compatibles avec ce service. Nous en profitons cette semaine pour vous expliquer comment utiliser un senseur Yoctopuce dans FRED.
FRED est un service cloud basé sur Node-RED qui permet de réaliser ses propres petites applications de domotique en reliant des "briques logiques" entre elles. Les plus attentifs se souviendront que nous avons déjà parlé de Node-RED en janvier dernier. Nous avions même publié un nœud YSensor qui permet d’accéder aux senseurs Yoctopuce sur un réseau local.
Note: Dans cet article, nous allons parler de Node-RED et de MQTT. Comme nous avons déjà publié des articles qui expliquent comment utiliser ces services, nous n'allons pas nous attarder sur leur fonctionnement. Si vous n'avez jamais utilisé Node-RED ou MQTT, il est fortement conseillé de commencer par lire les deux articles suivants:
Utiliser MQTT avec Node-RED
Il y a deux problèmes qui empêchent d'utiliser notre nœud YSensor sur FRED. D'une part il n'est pas disponible sur le serveur FRED, et d'autre part qu'il faudrait configurer son routeur ADSL pour ouvrir un port afin que Node-RED puisse contacter le YoctoHub. Heureusement, le service FRED est composé à la fois d'un serveur Node-RED et d'un serveur MQTT. La solution est de configurer le YoctoHub pour qu'il se connecte et envoie les valeurs mesurées à un serveur MQTT dans le cloud et d'utiliser un nœud MQTT dans le schémas Node-RED.
Cette solution résout les deux problèmes d'un coup. Plus besoin de modifier la configuration de son routeur car c'est le YoctoHub qui établit la connexion au serveur MQTT, et plus besoin d'installer un plugin car Node-RED supporte nativement le protocole MQTT.
Dans cet article, nous allons configurer un YoctoHub pour qu'il envoie les données d'un Yocto-Meteo sur FRED. Nous allons réaliser un simple graphique qui va afficher la température d'une pièce.
Note: Avant de commencer, il faut vous assurer que vos YoctoHubs ou VirtualHub soient à jour. Les anciennes versions ne permettaient pas de spécifier le Client ID MQTT qui est nécessaire pour s’authentifier sur les serveurs MQTT de sensetecnic.
La configuration du service STS-MQTT
Il faut tout d'abord créer un compte sur le site fred.sensetecnic.com et souscrire à l'une des formules payantes. Malheureusement, la formule gratuite "FRED Short" n'inclut pas le service STS-MQTT qui permet au YoctoHub de se connecter.
Une fois logué sur le site, il faut cliquer sur le lien STS-MQTT dans la barre de gauche, ce qui permet d’accéder au panneau de configuration du serveur MQTT. Sur cette page, il y a plusieurs opérations à effectuer.
Le bouton STS-MQTT permet d’accéder au panneau de configuration du serveur MQTT
Premièrement, il faut créer deux clients. Le premier client est utilisé pour identifier le YoctoHub et le deuxième est utilisé pour le nœud MQTT de notre schéma Node-RED. L'opération est relativement simple, dans l'onglet "client", il faut cliquer sur le signe + en haut, ce qui ouvre un pop-up avec les informations du client. Avant de cliquer sur le bouton "Add", pensez à copier la Client Key et le Client ID car nous en aurons besoin plus tard.
Avant de cliquer sur le bouton Add, pensez à copier la Client Key et le Client ID car nous en aurons besoin plus tard
La deuxième étape est de créer un topic par senseur. Dans l'onglet "Topics", il faut cliquer sur le + en haut, ce qui ouvre un pop-up qui permet de définir le nom du topic. Attention, on ne peut pas utiliser n'importe quel nom de topic. Le nom doit se conformer aux règles du YoctoHub et du service STS-MQTT.
Les YoctoHubs publient les valeurs des senseurs selon la syntaxe MODULE/FONCTION. MODULE correspond au numéro de série du module Yoctopuce ou à son nom logique s'il a été défini. FONCTION correspond au fonction ID du senseur ou à son nom logique s'il a été défini.
En d'autres termes, le topic correspond à ce que retourne la méthode get_friendlyName() d'un senseur. Si vous n'avez jamais utilisé de module Yoctopuce, il est conseillé de lire cet article dans lequel nous expliquons la structure logique des modules Yoctopuce.
Dans cet exemple, nous utilisons le capteur de température d'un Yocto-Meteo avec le numéro de série METEOMK1-1E76B, et aucun nom logique n'a été configuré sur le Yocto-Meteo, le topic doit donc s'appeler METEOMK1-1E76B/temperature.
Le nom du topic doit correspond au friendly name du senseur
Notez que même si la valeur du champs topic est METEOMK1-1E76B/temperature, le nom affiché est users/yoctopuce/METEOMK1-1E76B/temperature. Le service STS-MQTT préfixe toujours le topic de users/USERNAME où USERNAME correspond au login FRED. Par conséquent, si votre login est myFunkyLogin, le topic sera users/myFunkyLogin/METEOMK1-1E76B/temperature
La configuration du YoctoHub
Une fois que la configuration du serveur MQTT est faite, il faut configurer le callback HTTP du YoctoHub pour qu'il se connecte au serveur MQTT. La page de configuration du callback MQTT se trouve dans la page de configuration du YoctoHub. Il faut utiliser un callback de type MQTT et remplir les champs avec les informations suivantes :
- broker host: mqtt.sensetecnic.com
- broker port: 1883
- Client Id: Il faut utiliser le client ID qui a été défini plus haut.
- Username: Il faut utiliser le nom d'utilisateur de votre compte FRED/STS-MQTT. Dans notre cas, c'est "yoctopuce".
- Password: Il ne faut pas utiliser le mot de passe du compte, mais la Client Key qui a été définie pour ce client.
- Root topic: Il faut utiliser users/USERNAME où USERNAME correspond à votre nom d'utilisateur. Dans notre cas, la valeur du champ doit être users/yoctopuce.
Les paramètres de configuration du callback du YoctoHub
Si tous les paramètres sont corrects, et que vous cliquez sur le bouton "Test", le YoctoHub doit afficher le message "Connected to MQTT Broker". Si ce n'est pas le cas, regardez si des messages d'erreurs sont affichés dans la fenêtre de log du serveur MQTT.
Le schéma Node-RED
Maintenant que le YoctoHub et le serveur MQTT sont configurés, il ne reste plus qu'à définir le schéma Node-RED. Pour cet exemple, nous allons simplement modifier le schéma par défaut et remplacer le nœud qui génère des valeurs aléatoires par un nœud MQTT input qui va utiliser les valeurs du Yocto-Meteo que le YoctoHub envoie au serveur MQTT.
La première étape est d'ajouter un nœud MQTT input au schéma et de le configurer. Pour accéder au panneau de configuration du nœud, il faut double-cliquer dessus. Tout comme pour le YoctoHub, il faut entrer l'adresse du serveur, le port, le client ID, et les paramètres d'authentification. Il faut cependant utiliser les paramètres du deuxième client MQTT que nous avons défini.
Les paramètres de connexion pour le nœud MQTT
Il faut ensuite entrer le nom du topic. Comme nous l'avons expliqué, FRED préfixe tous les topics du nom d'utilisateur, il faut donc utiliser users/yoctopuce/METEOMK1-1E76B/temperature et cliquer sur "Done".
Une fois les anciens nœuds supprimés, il suffit de router ce nouveau nœud MQTT vers les trois nœuds de sortie qui utilisaient les valeurs aléatoires.
Le nouveau shéma avec le nœud MQTT input
Il ne reste plus qu'à déployer le schéma à l'aide du bouton "deploy" en haut à droite et accéder au dashboard à l'aide de l'URL https://{your-username}.fred.sensetecnic.com/api/ui/.
Une fois le schéma deployé, l'interface utilise la valeur du capteur de température
Conclusion
Le service FRED permet facilement d'utiliser des senseurs Yoctopuce dans Node-RED. Ce qui rend surtout cette offre intéressante, c'est la possibilité d'utiliser directement leur serveur MQTT, sans avoir à configurer son propre Broker MQTT. Cela permet de créer facilement une application IoT avec des capteurs dans différents lieux sans avoir à gérer un serveur, ni écrire de code.