09 July 2020
blog diy nodemcu domoticz domotique arduino nodered
Cette note s'inscrit dans le cadre d'un projet pour m'amuser. J'y vois déjà des tas de prolongements possibles.
J'ai essayé de lister les objectifs de ce projet, histoire de ne pas partir dans tous les sens.
L'idée est de n'utiliser que des logiciels libres et de maintenir un minimum de sécurité au terme de l'installation. Je m'autorise à faire des choix plus trashs dans la partie exploratoire.
L'idée est d'avoir des capteurs dans la maison, dans un premier temps, et de trouver un moyen efficace de les relier.
En vrac, voici les ingrédients :
Pour le moment, j'utilise l'ordinateur principal de la maison pour le broker MQTT et le travail de prototypage de l'adaptation.
Sur le Rpi
Sur l'ordinateur de développement
Il s'agit de brancher correctement le DHT 22 sur le Node Mcu.
Je décide de suivre l'exemple suivant, qui parrait correctement détaillé et illustré :
Premier eccueil, il ne s'agit pas du même modèlé de ESP82266, le montage proposé utilise un LoLin WeMos D1 Mini, mais bon en suivant le brochage du Node MCU, on s'en sort.
Il n'y a pas d'entrée 5V. La broche Vin correspond à autre chose. Je branche sur une broche 3,3V. A vérifier, s'il l'on a la même précision dans ces conditions.
Le Node MCU est pénible à brancher sur une plaque breadboard, puisqu'il prend toute la hauteur des lignes verticales, et qu'il ne reste pas pour brancher quoi que ce soit. Heureusement, on faisant attention au brochage, on voit que l'on peut ne brancher qu'un coté dans la breadboard.
Derniere aventure, n'ayant pas de résistance 220 ohm, je met en série deux résitances de 100 ohms.
La version 1.0.5 de arduino installée sur mon ordinateur est trop ancienne. Contrairement à ce que l'on pourrait croire en regardant le numéro de version, il s'agit d'une version plus ancienne.
Les préférences ne permettent pas d'afficher un champ de saisi d'URL :
J'installe en local dans un répertoire temporaire la version XXXX.
Ensuite, il faut installer un nouveau fournisseur de board dans les préférences et redémarrer l'IDE. On peut ensuite accéder au boards ESP82266 comme cible.
Il y a plus de détails sur cette opération ici :
Il faut également installer les bibliothèques. La bibliothque DHT est celle d'Adafruit, qu'il faut installer avec les dépendances.
Je créé un Wifi invité et le place le SSID et mdp dans le sketch. Je laisse les user / mdp vides pour la connexion à MQTT.
Je vois un premier problème ici : il faut configurer le sketch à chaque fois que l'on change la configuration.
Ls messages de debug sur la sortie série sont utilies pendant la mise au point. Ne bas oublier de régler le bon débit pour avoir un affichage correct.
Fonctionne casiment du premier coup.
Pour monitorer les envois sur MQTT :
> mosquitto_sub -t "#" -v
sensor/temperature 21.90
sensor/humidity 71.90
Ajout d'une passerelle MQTT avec le serveur de la machine de développement.
Ajout d'un hardware "Virtual" pour pouvoir ajouter des périphériques virtuels.
On obtient la liste de hardware suivants :
On peut ajouter des périphériques virtuels, en appuyant sur le bouton, et en choisissant un type de device.
Après l'ajout d'un bouton, d'une sonde de temperature, une sonde d'humidité et une sonde combinée temperature/humidité.
Les devices sur la page d'acceuil.
La courbe de suivi de l'humidité.
La programmation du NodeMCU est faite de la manière suivante :
Les topics publiés sont :
sensor/temperature 22.40
sensor/humidity 51.60
Et le topic consommé suivant :
homeassistant/switch1
La valeur pouvant être ON ou OFF.
Et domoticz veut souscrit au topic suivant :
domoticz/in
Et publie sur
domoticz/out
Je bidouille dans NodeRed pour publier à partir des messages du capteur les entrées suivantes :
domoticz/in {"idx":10,"svalue":"22.50 C"}
domoticz/in {"idx":9,"nvalue":52,"svalue":"0"}
Comme Domoticz peut également entrer les deux valeurs sur un même capteur, je bricole aussi une intégration des deux signaux entrants, ce qui donne :
sensor/dht22 {"sensor/humidity":"52.30","sensor/temperature":"21.10"}
Enfin, j'utilise l'API du genre restful de Domoticz pour écrire directement les valeurs intégrées du capteur.
J'ajoute une commande du switch pour faire l'accusé de reception des données.