Domotique et objets connectés à faire soi-même

ESP Easy R120. Utiliser les Rules pour créer la consigne d’un thermostat connecté (Jeedom, Domoticz, Node-RED…)

ESP Easy R120 (et Mega) dispose d’un moteur de script (Rules) qui va permettre de créer un mini thermostat connecté et 100% DIY . Vous pourrez par exemple utiliser cette Rule pour augmenter ou diminuer la consigne du thermostat. Vous pourrez récupérer très facilement cette consigne sur un logiciel domotique (Jeedom, Domoticz…) ou un projet Node-RED ou Javascript.

 

Pour ce tutoriel, nous allons utiliser deux boutons poussoirs (augmenter, diminuer) ainsi qu’un écran OLED SSD1306 pour afficher la consigne. L’affichage OLED sera piloté par un bouton poussoir.

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é

LoLin WeMos D1 Mini (compact et économique) ou n’importe quel autre ESP8266 ESP-12
Alimentation 5/3A micro-usb
Ecran OLED monochrome 168×64 pixels 0.96″

SSD1306

Ecran OLED officiel Wemos. Compact à empiler sur la D1 Mini.

environ 4,40€

DHT22
Boutons poussoir (x3 mini switchs)
Jumper Dupont (optionnel)
Breadboard (optionnel)

Tous les shields compatibles avec la LoLin d1 Mini

Circuit

Par défaut, le bus I2C est connecté au broches D1 (SCK) et D2 (SDA) de la LoLin Wemos d1 mini. Il est possible de modifier les broches mais dans ce cas, il ne faudra pas oublier d’appliquer les changements sur la page Hardware d’ESP Easy. Il n’y a aucun réglage particulier pour le boutons. Attention à bien utiliser la sortie 3V3 pour ne pas détériorer le GPIO de l’ESP8266.

 

Configuration des Devices ESP Easy R120

Nous allons créer 4 Devices :

Voici la configuration terminée.

Bouton augmenter (Switch Input, UP)

Ajoutez un nouveau Device et choisissez le type Switch input dans la liste puis configurez le comme ceci :

Bouton diminuer (Switch Input, DOWN)

Ajoutez un nouveau Device et choisissez le type Switch input dans la liste puis configurez le comme ceci :

Consigne (Dummy Device, SENSOR_TYPE_SINGLE)

Ajoutez un nouveau Device et choisissez le type Dummy Device dans la liste puis configurez le comme ceci :

Affichage OLED (SSD1306)

Enfin, nous allons ajouter un affichage pour faciliter le réglage de la consigne. Ajoutez un nouveau Device et choisissez Display – OLED SSD1306. Pour trouver l’adresse de l’écran OLED sur le bus I2C, vous pouvez la trouver avec le scanner I2C qui se trouve dans les Tools. Configuration :

Rules (script du thermostat connecté)

Si l’onglet Rule n’est pas visible, allez sur l’onglet Tools puis System -> Advanced et cochez Rules (en bas des réglages).

Activer l’onglet Rules d’ESPEasy

Comment nous l’avons vu dans le tutoriel précédent dans lequel nous avons créé un BME280 virtuel, pour créer une consigne, l’astuce consiste à créer un Dummy Device. Nous utiliserons le système de Rule pour incrémenter et diminuer la consigne. Pour que cela fonctionne, il faut mettre entre parenthèses la formule de calcul. Comme d’habitude, on récupère la valeur actuelle de la consigne en suivant le formaliste [DEVICE#variable]. On affecte ensuite la nouvelle valeur de la consigne à l’aide de la commande TaskValueSet qui s’écrit comme ceci

TaskValueSet <task nr>,<taskvalue nr>,<value|formula>

Ce qui va donner par exemple pour incrémenter le compteur

TaskValueSet 3,1,([CONSIGNE#consigne]+0.5)

On déclenche l’incrément à l’aide du déclencheur on UP#val do . On fait de même pour diminuer on DOWN#val do . Pour éviter que la consigne reste dans une certaine plage, par exemple entre 15°C et 30°C, il suffit d’ajouter un petit test, par exemple si la consigne dépasse 30°C

if [CONSIGNE#consigne]>30
  TaskValueSet 3,1,30
endif

Remarque. Il faut bien respecter les espaces et ‘coller’ les opérateurs sinon ça ne fonctionne pas.

Au démarrage, on ne souhaite pas que le chauffage s’arrêt, on va donc initialiser la consigne à une valeur par défaut, par exemple 19°C.
on System#Boot do
  // Consigne par défaut au démarrage - default value at boot
  TaskValueSet 3,1,19 
endon

Il ne reste plus qu’à coller dans la Rule ce code complet

 

 

on System#Boot do
 // Consigne par défaut au démarrage - default value at boot
 TaskValueSet 3,1,19 
endon

on UP#val do 
 // Augmente la consigne - Up setpoint 
 TaskValueSet 3,1,([CONSIGNE#consigne]+0.5)
 if [CONSIGNE#consigne]>30
 TaskValueSet 3,1,30
 endif
endon

on DOWN#val do 
 // Diminue la consigne - down setpoint
 TaskValueSet 3,1,([CONSIGNE#consigne]-0.5)
 if [CONSIGNE#consigne]<15
 TaskValueSet 3,1,15
 endif
endon

Voilà, on dispose maintenant d’un petit thermostat connecté fabriqué à moindre coût pour piloter le chauffage depuis un serveur domotique. Il reste quelques petites améliorations à apporter. Il faut maintenir le bouton (+, -) au moins une seconde (c’est probablement à cause de la fréquence de rafraichissement limitée à une seconde au minium du dummy device). Il serait utile de pouvoir récupérer la valeur actuelle du chauffage.

 

Avez-vous aimé cet article ?
[Total: 1 Moyenne: 4]
Quitter la version mobile