ESP Easy (Rules) : consigne pour thermostat connecté (Jeedom, Domoticz, Node-RED…)

Voici un autre exemple d’application des Rules d‘ESP Easy qui va nous permettre de créer un mini thermostat connecté 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.

Matériel utilisé

esp8266 Wemos D1 mini Module ESP8266 ESP-12. Par exemple Wemos D1 Mini
chargeur raspbery pi 3 5v 3000ma Alimentation 5/3A micro-usb
mini switch Boutons poussoir (x3 mini switchs)

 

Broches DHT22 Capteur de température et d’humidité (optionnel, pour connaître la température de la pièce)

DHT11 ou DHT22

oled ssd1306 ecran i2c Ecran OLED monochrome 168×64 pixels 0.96″

SSD1306

jumper dupont Jumper Dupont
breadboard Breadboard

Circuit

Sur la Wemos D1 mini, l’écran OLED SD1306 se branche sur les broches D1 (SCK) et D2 (SDA). 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.

iot thermostat ESP EASY

Configuration des Devices ESP Easy

Nous allons créer 4 Devices :

  • UP : associé au bouton poussoir augmenter
  • DOWN : associé au bouton poussoir diminuer
  • CONSIGNE : un Dummy device qui contiendra la valeur de la consigne
  • OLED : un affichage permettant de voir la valeur de la consigne à chaque changement.

Voici la configuration terminée.

https://www.projetsdiy.fr/wp-content/uploads/2017/01/5-esp-easy-consigne-setpoint-configuration-finale.png

Bouton augmenter (Switch Input, UP)

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

  • Name : UP
  • Delay : inutile d’attribuer un délai, il faut laisser ESP Easy gérer la détection
  • IDX : 1 (ou un autre numéro mais différente de 0)
  • GPIO : le numéro de la broche sur lequel est branché le bouton, ici D4 (GPIO2)
  • Cochez Pull UP et Inversed (inversé)
  • Type : Switch
  • Switch button Type : ici on utilise un bouton poussoir, on souhaite incrémenter la consigne lorsqu’on appuie dessus, donc choisir Push Button Active Low
  • Décochez Send data pour ne pas publier inutilement chaque appui sur le bouton poussoir
  • Value name : val (ou un autre nom)
  • Enregistrez avec submit

esp easy consigne setpoint bouton up augmenter

Bouton diminuer (Switch Input, DOWN)

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

  • Name : DOWN
  • Delay : 0
  • IDX : 2 (ou un autre numéro mais différente de 0)
  • GPIO : le numéro de la broche sur lequel est branché le bouton, ici D3 (GPIO0)
  • Cochez Pull UP et Inversed (inversé)
  • Type : Switch
  • Switch button Type : idem, Push Button Active Low
  • Décochez Send data
  • Value name : val
  • Enregistrez avec submit

esp easy consigne setpoint bouton down diminuer

Consigne (Dummy Device, SENSOR_TYPE_SINGLE)

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

  • Name : CONSIGNE (en majuscule)
  • Delay : 1 seconde, on souhaite probablement que le logiciel domotique connaisse rapidement la valeur de la nouvelle consigne
  • IDX : 3
  • Simulate Data Type : choisir SENSOR_TYPE_SINGLE
  • Value name : consigne (en minuscule)
  • Cochez Send Data
  • Decimal : choisissez le nombre de décimales pour la consigne. Ici 1 décimale.
  • Enregistrez avec submit

espeasy consigne setpoint dummy device sensor_single_type

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 :

  • Name : OLED par exemple
  • Delay : délai d’actualisation de l’affichage, 1 seconde
  • Consigne : pour afficher la valeur de la consigne sur une ligne (Line), on récupère la valeur de la variable comme ceci [CONSIGNE#consigne]
  • Display button : on peut convoquer l’affichage de l’écran à l’aide d’in bouton. Ici, il est branché sur la broche D5 (GPIO14). L’écran reste affiché durant 30 secondes.
  • Enregistrez avec submit

esp easy consigne setpoint affichage diplay oled ssd1306

Rules

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

esp easy activer rules

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>

  • 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.

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

esp easy setpoint consigne boutons

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.

     

    Print Friendly, PDF & Email

    Inscrivez-vous à la newsletter hebdomadaire

    Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous désinscrire à tout moment.

    Comparateur de prix

    Bons plans

    Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

    Tags:

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