Dans ce tutoriel, nous allons fabriquer un instrument virtuel en combinant plusieurs mesures d’autres capteurs dans un Dummy Device du firmware ESP Easy R120. Un cas concret d’utilisation est de combiner la mesure d’humidité obtenue à l’aide d’un DHT11 ou DHT22 avec la mesure de pression atmosphérique réalisée à l’aide d’un BMP180.
Article actualisé le 21 avril 2020
En combinant les trois mesures, ou pourra simuler un BME280 très facile à intégrer dans Domoticz par exemple.
Avant de commencer, vous pouvez lire commencer par la lecture de ces tutoriels
Sommaire
ESP Easy (R120) ou ESP Easy Mega, attention à la confusion !
Il existe 2 branches (versions) d’ESP Easy ce qui peut entraîner une certaine confusion lorsqu’on débute.
ESP Easy est la version stable (R120) que l’on peut récupérer sur cette page. L’installation à partir de la compilation du code source est difficile (impossible) avec les versions récente de l’IDE Arduino. Suivez ce tutoriel qui explique étape par étape comment installer et configurer le firmware ESPEasy R120 sur un module ESP8266. En cas de problème, utilisez l’utilitaire ESP Tools d’Espressif. Tout est expliqué étape par étape dans ce tutoriel.
ESP Easy Mega est la version en cours de développement disponible ici. Elle embarque plus de plugins, une nouvelle interface et supporte (quelques) cartes de développement ESP32. Pour en savoir plus, vous pouvez lire cet article de présentation. Attention, pour fonctionner votre carte ESP8266 doit au moins disposer d’1MB de mémoire flash (attention à bien choisir votre module ESP-01).
Matériel utilisé
Tous les shields compatibles avec la LoLin d1 Mini
Circuit
Le tableau dci-dessous récapitule le repérage et de correspondance des broches entre Arduino et ESP8266. Vous pouvez également ajouter un écran OLED SDSD1306.
Composant | Broches | Repérage Arduino | Equivalence ESP8266 (Wemos D1 mini) |
DHT22 | VCC | 5V | 5V |
GND | GND | G | |
Data | GPIO-14 | G5 | |
BMP180 | VCC | 5V | 5V |
GND | GND | G | |
SDA | GPIO-4 | D2 | |
SCK | GPIO-5 | D1 | |
OLED SSD1306 0.96” | VCC | 5V | 5V |
GND | GND | G | |
SDA | GPIO-4 | D2 | |
SCK | GPIO-5 | D1 | |
Led activité WiFi | Pole + | GPIO-12 | D6 |
Pole – | GND | G |
Ajouts des Devices DHT22 et BMP180
J’ai repris le mini projet précédent à base de DHT22 et de BMP180. Vous devez disposez d’un Device appelé DHT22 qui possède 2 variables TempDHT22 et HumDHT22 (à modifier à votre convenance)
et un Device BMP180 avec une variable Pression
Préparer un capteur virtuel sous Domoticz
Sous Domoticz, créez un capteur virtuel de type Temp+Humidité+Baromètre. Donnez lui un nom et notez l’IDX en allant dans la liste des dispositifs.
Création du Device BME280 virtuel (sur ESP Easy)
Créez un nouveau Device et choisissez Dummy Device dans la liste puis :
- Name : donnez un nom. Par exemple BME280_Virtuel
- Delay : la fréquence d’actualisation (ou de publication) des valeurs
- IDX : l’identifiant du capteur virtuel Domoticz.
- Simulate Data Type : choisissez Sensor_type_Temp_Hum_Baro pour simuler un BME280
- Send data : cochez pour activer l’envoi des données vers Domoticz
- Decimals : choisissez le nombre de chiffres après la virgule
- Value name 1 : Temperature
- Value name 2 : Humidite
- Value name 3 : Pression
- Enregistrez avec submit
Dans l’éditeur de Rules, recopiez ce code
on DHT22#TempDHT22 do // A chaque actualisation de la mesure de température // Recopie dans le Device Dummy TaskValueSet 4,1,[BMP180#Temperature] // la température TaskValueSet 4,2,[DHT22#HumDHT22] // le taux d'humidité TaskValueSet 4,3,[BMP180#Pression] // et la pression atmosphérique endon
Que fait ce code ?
A chaque fois qu’une mesure est renvoyée par le DHT22, on recopie dans le Dummy Device la température et la pression atmosphérique du BMP180 ainsi que le taux d’humidité du DHT22 dans le Dummy Device n°4
La commande TaskValueSet s’écrit comme ceci
TaskValueSet ,,
- task nr : numéro du Device (récupéré dans le tableau Devices, colonne Task)
- taskvalue nr : index de la variable (1 à 4) du Dummy Device
- value ou formula : valeur affectée à la variable, ou formule de calcul avec les opérateurs + , – , / , * uniquement.
Retounez dans les Devices. A chaque actualisation de la température mesurée par le DHT22, le BME280 virtuel sera actualisé.
Afficher le BME280 virtuel sur Domoticz
Retournons maintenant sur Domoticz pour voir comment s’intègre le BME280.
Allons tout d’abord dans les dispositifs pour vérifier que nous recevons bien des mesures de l’ESP8266. L’ordre des variables est très important lors de la configuration du Dummy Device car le firmware publie les mesures du BME280 virtuel dans l’ordre des variables. Ici, on reçoit bien la température, l’humidité et la pression atmosphérique. Comme les unités sont métriques par défaut, nous n’avons aucune conversion à faire (sinon les formules sont là pour ça).
Allez maintenant sur la page Météo pour y trouver le baromètre.
Sur la page température, on a maintenant un nouvelle sonde qui affiche la température et le taux d’humidité dans l’air. C’est donc la combinaison de la température mesurée par le BMP180 (ou le DHT22, c’est égal) et le taux d’humidité du DHT22. On retrouve la mesure de la pression atmosphérique et le calcul du point de rosée.
Sur ce graphique, on peut voir l’intégration de la mesure du taux d’humidité. Pour conserver l’historique des mesures, il suffit de désactiver l’envoi des données (décocher la case Send Data) pour les Devices DHT22 et BMP180 et leur attribuer un IDX arbitraire (différent de l’IDX du BME280 attribué par Domoticz, ici 1 et 2). En désactivant l’envoi de données on évite de surcharger le réseau, on réduit la consommation (si on fonctionne sur batterie) et on ne pollue pas Domoticz inutilement. On attribue ensuite au BME280 virtuel l’IDX attribué par Domoticz au moment de la création du dispositif (dans le cas présent, c’est le 22).
Voici l’une des possibilités du Dummy Device très facile à mettre en oeuvre grâce au nouveau système de Rules d’ESP Easy.
Avez-vous aimé cet article ?