H2EAU
Le module H2EAU, basé sur une carte MULTI32 permet de visualiser sur un smartphone (ou un afficheur déporté) le comptage en temps
réel en litres de la consommation d'eau d'un compteur pouvant être équipé d'une sortie IMPULSIONS.
Comme l'application LPD (Linky
Power Display), les données sont affichées par An, mois, jour et jour précédent en litres.
Un affichage de Heure à Zéro permet de détecter
d'éventuels fuites d'eau.
- 1 carte MULTI32
- 1 capteur IZAR-PULSE (ou équivalent)
- 1 sonde DS18B20
- 1 cordon chauffant
MATERIEL
Comment ça marche ?
Un capteur à effet hall (IZAR-PULSE) va détecter les rotations d'une piece métalique sur le compteur d'eau
et générer une impulsions (à la masse - transistor à collecteur ouvert) par litre.
Le logiciel va compter ces impulsions et incrémenter
une série de compteurs, annuels, mensuels, journaliers et par heure à chaque litre.
La consultation des datas de comptage est
disponible au format web sur un smartphone ou sur un PC avec un navigateur.
Les données sont mises en forme avec un tableau récapitulatif,
permettant aussi de comparer avec l'année précédente.
Les données sont aussi envoyées via une liaison UDP au DATALOGGER pour
un relevé statistique heures par heures et l'afficheur général. (General Display).
Un contrôle de passage à zero pendant
un nombre d'heures paramétrable permet de détecter d'éventuelles fuites et d'envoyer un message d'alarme via whatsapp.
Une sonde
de temperature DS18B20 permet de mesurer la température et si cette derniere est inférieure à 2°C d'enclencher un relais qui commande
un élément chauffant (Hors Gel).
Toutes les données sont modifiables via la liaison TCP avec un logiciel type Terminal.
LOGICIEL
L'électronique est organisée autour de la carte MULTI3, avec un ESP32, une carte horloge RTC et un module relais.
Les entrées
impulsions sont câblées sur l'entrée optocoupleur de la carte, ceci afin d'assurer à la fois une isolation optique mais aussi d'assurer
un pull-up de 5v pour le capteur (valeur minimum selon le fabricant).
Une résitance de pull-up de 680 Ohm doit être rajoutée en externe.
Cette
entrée sera programmée en mode interruptions pour être certain de ne pas perdre de données de comptage.
Le capteur de températureDS18B20 sera câblé sur l'entrée GPIO04 (en mode 1wire).
Le cordon chauffant directement connecté au 220v a travers les contacts NO
du relais.
Un buzzer à été connecté, uniquement à des fins de debug.
J'ai utilisé un vernis de protection plastique pour protéger
le dessous du circuit imprimé et le module convertisseur 230V/5V.
Comme d'habitude, prendre les précautions d'usage pour le câblâge
du 230v et les manipulations sous tension. (toujours couper le courant pour manipler).
Le logiciel développé sous environnement IDE/ARDUINO doit assurer
- La connexion au réseau wificlient avec le wifi de la box.
- Ouverture
d'une routine d'interruptions sur l'entrée IN1 pour le comptage.
- Mise en place d'une liaison UDP sortante.
- Mise en place d'un serveur
Web avec une page HTML.
- Mise en place du serveur client TCP.
- Gestion de l'horloge temps réel.
- Gestion de la sonde de température Dallas.(DS18B20).
- Compter les impulsions et gérer les différents compteurs.
- Assurer la détection d'heures à zéro (anti-fuite).
La principale particularité
du programme est dans la gestion du comptage sous interruptions. En effet le programme doit toujours compter les litres, même s'il
est en train d'exécuter une autre tache (web, param ...).
il y a donc une routine de gestion d'interruption (Int_compteur) totalement
indépendante du reste du programme.
En plus de compter les litres le programme assure :
- Toutes les heures, l'envoi des données
au DATALOGGER (pour historique).
- Toutes les 20 secondes l'envoi des données à l'afficheur général.
- Le changement de jour pour
la mise à jour des différents totalisateurs mois et an.
- La gestion des requêtes reçues (pour paramétrage) via le canal TCP. (protocole
GS-NET).
- L'envoi à une demande par internet (webserveur) d'une page d'information de consommation en temps réel avec tableau
récapitulatif sur un an.
- L'affichage en temps réel, plus des informations sur la consommation de la veille et des mois
précédents (an -1)
- Le comptage d'heures à zéro litres, avec envoi d'un message whatsapp en cas de seuil bas détecté (2 par défaut).*voir
explications Heures à zéro.
Les adresses IP et ports UDP sont en "phase" avec le plan général GS-NET pour ne pas entrer en conflit
avec les autres modules.
H2EAU fait partie d'un ensemble domotique permettant aussi l'affichage des informations de consommation électrique, l'automate de
gestion d'une piscine, le contrôle d'un portail électrique, la détection d'arrivé d'un courrier, le relevé de température et d'autres
informations de contrôle de la maison.
Développé autour des modules ARDUINO puis ESP8266, ils sont maiintenant tous à base deESP32 autour d'une carte développée sur mesure : La MULTI32.
DETECTION DE FUITES (Heures à zéro).
Pour détecter et enclencher une alarme en cas de fuite, le logiciel totalise le nombre
d'heures avec zéro consommation sur 24H.
Par expérience, en maison individuelle (et encore plus pour un appartement), entre 23H et
6H du matin il y a au moins 2 heures sans consommation d'eau, même si un adoucisseur fait son nettoyage automatique ou un lave-vaisselle
actif et si il n'y a personne dans la maison on retrouve ces heures à zéro dans la journée (le nombre est plus grand).
C'est très
visible avec les données du DATLOGGER.
Avec un arrosage automatique nocturne le système fonctionne moins bien.
Le fait d'afficher
le nombre d'heures a zéro permet de voir la pertinence de ce principe.
Le système ne pourra pas détecter une fuite à moins de 0.5
litre heure.
L'alarme enclenche l'envoi d'un message whatsapp. (voir
POSTMAN pour l'application CallMeBot) et sur
l'affichage web HZ (Heures
à Zéro) passe en rouge.
Cela à déjà fonctionné dans mon cas (fuite enterrée).
Librairie Préférence
La gestion des données stockées en mémoire non volatile (conservées en mémoire flash en cas de coupure
de courant) est grandement facilitée avec la librairie préférence.h.
Elle permet de gérer les différentes variables par leur nom, avec
stockage au format de la variable par défaut (Char, Long ...).
La lecture ou l'écriture se font pa de simples commande GET et PUT.
Seule
limitation à priori : 256 octets.