Domotiser sa consommation d’eau (<15€)

Il y a plusieurs façons de vérifier sa consommation d’eau, ici j’ai choisi de placer une turbine à effet hall à la sortie de mon ballon d’eau chaude (chauffe-eau), cette turbine est équipée d’un capteur de température, j’ai également mis une turbine sur le réseau à eau froide (facultatif).

Objectifs

  • Savoir combien d’eau chaude est consommée (en volume), connaitre le débit est possible mais je ne l’ai pas exploité
  • Connaitre la température de l’eau qui sort
  • Connaitre la consommation d’eau froide (avec une seconde turbine)
  • Que l’ensemble soit totalement autonome et interrogeable par wifi
  • Maitrise du coût de l’ensemble
  • Possibilité de remplacer des éléments actifs sans démontage

Matériels nécessaires et coût

Le D1 Mini est équipé de plusieurs entrées , on peut utiliser plusieurs turbines, soit par zone pour avoir les différentes consommations, soit l’eau chaude et froide (ce que j’ai choisi).

  • Un D1 Mini ESP8266 (entre 1 et 3€)

  • Une résistance de 100k ohms (R1)
  • Une résistance de 10k ohms (Facultative)
  • des connecteurs pour pouvoir débrancher les éléments actifs des éléments passifs (options, 1€) 2P+3P

Modification des fils de la turbine et de la sonde de température

Afin de permettre de détacher le D1mini et la sonde, j’ai préféré éviter de les souder ensemble.

Sur ma première turbine : J’utilise donc des connecteurs simples (je n’avais que des 4P sous la main) , ce qui donne :

  • La sonde de température est équipée de deux fils noirs, donc aucune difficulté, pas de sens, j’ai soudé un fil noir sur le fil blanc et un autre fil noir sur le fil jaune
  • Le capteur de débit est équipé de 3 fils, j’ai conservé les couleurs.

Sur la seconde turbine, j’ai choisi un modèle avec des connecteurs

J’ai donc acheté des connecteurs correspondants, encore plus simple à connecter donc.

Brochage du D1 Mini

Voici le câblage

Sur ce schéma, j’ai choisi de remplacer le fil jaune par un fil vert car le jaune n’était pas visible. Et pour éviter la confusion entre le 3.3V et 5V, j’ai représenté un en orange, l’autre en rouge. Cela sera à adapter aux connecteurs (facultatifs) expliqués au paragraphe précédent.

Quelques éléments de compréhension

La sonde de température est une thermistance, c’est à dire qu’elle change de valeur en fonction de la température. Je la teste donc sur un pont diviseur avec une résistance de 100ko et cette information analogique entre dans le D1Mini sur son entrée analogique A0

Le capteur de débit quant à lui donne une information digitale donc à connecter sur une entrée digitale, j’ai choisi D5 (et D7 pour la seconde), d’autres entrées on posé problème lors de mes tests. Il n’est alimenté qu’en 3.3v car 5V sur une entrée digitale grillerait le circuit. J’ai ajouté une résistance de tirage (Pull-up), elle n’est pas forcement utile, le Wemos a souvent une résistance intégrée, mais vu le prix d’une résistance, je n’ai pas hésité. Elle se trouve entre la borne data et le +3.3v. Sur la seconde turbine je n’ai pas mis de résistance pour tester la différence, il n’y en a finalement aucune.

Configuration de l’ESP D1 Mini

Il existe plusieurs méthodes pour exploiter les produits Wemos et compatibles, j’ai choisi d’utiliser ESP Easy que j’utilise déjà beaucoup avec les Sonoff. A noter que cette partie peut être adaptée à tout ESP. Mon objectif en prenant en D1 Mini était d’être indépendant donc je voulais éviter de me mettre un raspberry ou un arduino qui servirait aussi à autre chose.

L’alimentation du D1 mini, je la pique sur un USB d’un équipement informatique proche, sans alimentation usb à proximité, on peut utiliser un chargeur de téléphone ou tout système permettant d’avoir du 5v.

La configuration du D1 mini est détachée de ce tuto pour plus de simplicité, il faut l’objet d’articles dédiés, il faut donc :

Configuration de ESP Easy

Au delà des paramètres habituels à configurer dans ESP Esasy (spécifiés dans les lien ci-dessus), il est intéressant de faire un zoom sur les éléments spécifiques à ce tuto :

Onglet devices

  • Chaude correspond à la turbine sur le réseau d’eau chaude (à la sortie du ballon)

Elle est connectée sur l’entrée numérique D5 (donc GPIO14)

J’ai choisi de mettre un interval de refresh à 2s mais ce n’est pas obligatoire, c’est juste pour voir le compteur monté quand on ouvre l’eau.

Trois valeurs numériques sont données par la sonde, j’ai choisi de supprimer les décimales. La valeur de total est à diviser par 390, j’explique plus bas comment trouver le dénominateur de cette division.

 

  • Temperature correspond à la température de l’eau chaude

Nota 03/04/2022 Sur un conseil bienveillant de Seb821, j’ai remplacé la résistance R1 de 10k par une résistance de 100k sur le schéma. J’ai également connectée la thermistance sur le 3.3V et non le 5V. Je n’ai pas changé de résistance sur mon équipement qui était passé en prod, donc je ne sais pas si %value%/10 est la bonne formule. Je veux bien un retour d’expérience d’un de vous sur ce point sur le forum. Merci

Elle est connectée sur l’entrée analogique A0

J’ai choisi de ne prendre que les valeurs entières, cela limite les liens avec Jeedom et le stockage inutile d’informations.

 

  • Froide correspond à la turbine sur l’arrivée générale du réseau d’eau froide (facultative)

Elle est connectée sur l’entrée numérique D7 (donc GPIO13)

Trois valeurs numériques sont données par la sonde, j’ai choisi de supprimer les décimales. La valeur de total est à diviser par 408, j’explique plus bas comment trouver le dénominateur de cette division.

Onglet Hardware

Cela ne semble pas obligatoire mais j’ai pris l’habitude de spécifier ce que je compte faire des Pin du D1Mini, j’ai donc configuré ainsi les deux entrées numériques que j’utilise :

Comme on n’utilise pas I2C, je désactive tout :

Onglet Tools / Advanced

C’est totalement inutile mais c’est plus propre, je mets un serveur NTP pour que le D1 soit à l’heure (192.168.1.1 est mon Syno Router)

Désactiver le port série est une bonne pratique également

Calibrage des sondes (turbines)

Les sondes ont forcement un calibrage nécessaire, la turbine répond un nombre de tours par minute et nous voudrions des litres d’eau.

Il n’y a pas de recette miracle, chaque turbine ayant ses propres contraintes physiques, à notre niveau, un test de “remplissage de seau” permettra très bien de calibrer les sondes.

Voici la manière de faire :

  • Ne rien mettre dans la colonne Formula de TotalChaude

  • Relever la valeur de TotalChaude : (TC1=1000 par exemple)
  • Prendre un saut et remplir 5 litres d’eau (Saut=5 par exemple)
  • Relever la nouvelle valeur de TotalChaude : (TC2=2950 par exemple)

L’indice sera I=(TC2-TC1)/Saut soit (2950-1000)/5 ) = 390

Et la formule à ajouter sera %value%/390

Configuration dans le plugin ESP Easy

Le D1 Mini est donc un device du plugin ESP Easy

Les données des devices de ESP Easy arrivent comme commandes info dans le plugin :

Exploiter les données dans Jeedom

Ce paragraphe est très important. Il est nécessaire car les totaux (conso d’eau froide + conso d’eau chaude) mesurés ne sont pas conserver dans le D1Mini, en effet, en cas de coupure électrique, les compteurs repartent à zéro !!!

Pour cela, j’utilise 2 scénarios + 1 virtuel.

+

Scénario de calcul Total Eau chaude

Je décris uniquement le scénario de l’eau chaude, celui de l’eau froide est identique dans la logique.

C’est un changement dans la valeur TotalChaude qui provoque le lancement du scénario :

Voici le scénario dans sa globalité, je vais détailler en dessous :

Pour avoir la version texte complète :

– Nom du scénario : Eau chaude Calcul total
– Objet parent : Eau Chaude Froide
– Mode du scénario : provoke
– Evènement : #[Eau Chaude Froide][D1Mini][TotalChaude]#

SI #[Eau Chaude Froide][D1Mini][TotalChaude]# > variable(Total Eau chaude Précédente)
ALORS
(variable) Affectation de la variable : Total Eau chaude à variable(Total Eau chaude) +#[Eau Chaude Froide][D1Mini][TotalChaude]# – variable(Total Eau chaude Précédente)
SINON

SI #[Eau Chaude Froide][D1Mini][TotalChaude]# < variable(Total Eau chaude Précédente)
ALORS
(variable) Affectation de la variable : Total Eau chaude à variable(Total Eau chaude) + #[Eau Chaude Froide][D1Mini][TotalChaude]#
SINON

ACTION
(variable) Affectation de la variable : Total Eau chaude Précédente à #[Eau Chaude Froide][D1Mini][TotalChaude]#

Et désactivé :

ACTION
(variable) Affectation de la variable : Total Eau chaude Précédente à 0
(variable) Affectation de la variable : Total Eau chaude à 0

Avant d’expliquer le scénario, il est utile de préciser que la partie grisée (désactivée) est à activer une seule fois pour initialiser deux variables (Total Eau chaude Précédente et Total Eau chaude) à zéro.

  • La variable Total Eau chaude Précédente garde en mémoire la dernière valeur du compteur d’eau chaude

Le premier test vérifie que la nouvelle valeur du compteur Eau chaude est supérieur à la précédente valeur reçue du compteur (ce qui est le fonctionnement habituel)

Dans ce cas, la variable Total Eau chaude prend la valeur de : variable(Total Eau chaude) +#[Eau Chaude Froide][D1Mini][TotalChaude]# – variable(Total Eau chaude Précédente)

Exemple :

  • #[Eau Chaude Froide][D1Mini][TotalChaude]# = 809
  • variable(Total Eau chaude Précédente) = 808
  • variable(Total Eau chaude) = 3750

Total Eau chaude=3750+809-808=3751, la nouvelle valeur du compteur d’eau chaude sera de 3751

Le second test vérifie si la nouvelle valeur reçue du compteur Eau chaude est inférieur à la dernière valeur enregistrée, cela veut dire que le compteur du D1 est reparti à zéro entre temps.

Dans ce cas, la variable Total Eau chaude prend la valeur de : variable(Total Eau chaude) + #[Eau Chaude Froide][D1Mini][TotalChaude]#

Exemple :

  • #[Eau Chaude Froide][D1Mini][TotalChaude]# = 3
  • variable(Total Eau chaude Précédente) = 808
  • variable(Total Eau chaude) = 3751

Total Eau chaude=3751+3=3754, la nouvelle valeur du compteur d’eau chaude sera de 3754

Ce dernier bloc enregistre la dernière valeur du compteur d’eau chaude (#[Eau Chaude Froide][D1Mini][TotalChaude]#) dans la variable Total Eau chaude Précédente. Cette valeur est importante, c’est elle qui est testée pour savoir lequel des deux blocs précédents est utilisé pour calculer la valeur de Total Eau chaude.

Le Virtual Eau Chaude Froide

Rien de bien compliqué, on récupère les variables variable(Total Eau chaude) et variable(Total Eau froide)

Graphiques

Puisqu’on enregistre les valeurs de l’eau froide et de l’eau chaude, autant se faire plaisir en l’affichant sur son design

Voici des exemples de graphiques, chacun pourra faire ce qui lui plait.

  • Consommation de la journée

  • Consommation sur le mois

Ce graphique étant le plus intéressant, je le détaille :

On doit choisir le mode “Colonne” et choisir “Somme par jour”. Mettre une des deux échelles visible.

Changements et améliorations

  • Le 03/04/2022 : La thermistance est plutôt à raccorder au 3.3V, cela pour protéger l’entrée Analogique, schéma modifié, merci Seb821.
  • Le 03/04/2022 : La valeur de la résistance du pont diviseur de la résistance passe de 10k à 100k, merci Seb821.
  • A étudier une solution pour éviter le refresh à 2s, peut etre avec les règles (rules) de Esp Easy

Laisser un commentaire