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