09 July 2020

blog diy nodemcu domoticz domotique arduino nodered

Cadre du projet

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.

Ingrédients

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 :

Mise en oeuvre

Matériel utilisé

Pour le moment, j'utilise l'ordinateur principal de la maison pour le broker MQTT et le travail de prototypage de l'adaptation.

Logiciels utilisés

Just go

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é :

Cablage

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.

Montage node MCU, DHT 22 et LED sur breadboard

Derniere aventure, n'ayant pas de résistance 220 ohm, je met en série deux résitances de 100 ohms.

Flashage

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.

Arduino version 2:1.0.5

Les préférences ne permettent pas d'afficher un champ de saisi d'URL :

Préférences Arduino 2:1.0.5

J'installe en local dans un répertoire temporaire la version XXXX.

Arduino version 1.8.13
Préférénces Arduino 1.8.13

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

Configuration de domoticz pour recevoir les données du capteurs

Ajout d'une passerelle MQTT avec le serveur de la machine de développement.

Domoticz - Ajout d'un hardware MQTT

Ajout d'un hardware "Virtual" pour pouvoir ajouter des périphériques virtuels.

Domoticz - Ajout d'un hardware Virtual

On obtient la liste de hardware suivants :

Domoticz - Liste des hardwares configurés

On peut ajouter des périphériques virtuels, en appuyant sur le bouton, et en choisissant un type de device.

Domoticz - Ajout d'un device Virtual

Après l'ajout d'un bouton, d'une sonde de temperature, une sonde d'humidité et une sonde combinée temperature/humidité.

Domoticz - Liste de devices

Les devices sur la page d'acceuil.

Domoticz - Tableau de bord

La courbe de suivi de l'humidité.

Domoticz - Courbe de suivi humidité

MQTT et NodeRed pour mapper les informations pour domoticz

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"}

NodeRed Capteurs séparés

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.