Compteur d'Eau Connecté DIY avec ESPHome
Introduction
La surveillance de la consommation d’eau est l’un des projets de domotique les plus rentables. Il permet non seulement de suivre ses habitudes et de faire des économies, mais surtout de détecter les fuites de manière proactive avant qu’elles ne causent des dégâts ou des factures exorbitantes.
Bonne nouvelle : il n’est pas nécessaire d’être plombier ! Ce projet est non-invasif et consiste à “lire” le compteur existant à l’aide d’un capteur. Nous allons explorer la méthode la plus courante, basée sur un aimant, et son alternative optique.
Le Principe : Détecter la Rotation
La plupart des compteurs d’eau modernes possèdent une petite roue qui tourne proportionnellement au débit de l’eau. Cette roue contient souvent un petit aimant. L’idée est de capter chaque rotation de cette roue.
- 1 rotation = X litres (par exemple, 1 tour complet = 1 litre). Cette information est souvent indiquée sur le cadran du compteur.
Nous allons utiliser un capteur pour compter ces rotations (impulsions) et en déduire la consommation.

Méthode 1 : Capteur Magnétique (ILS / Reed Switch)
C’est la méthode la plus simple si votre compteur est compatible.
Le Composant : Un Interrupteur à Lame Souple (ILS), aussi appelé “Reed Switch”. C’est un interrupteur qui se ferme en présence d’un champ magnétique. On peut utiliser un simple ILS ou un module tout fait (souvent basé sur un comparateur LM393) qui fournit un signal numérique propre.
Matériel Nécessaire
- 🛒 Un capteur Reed Switch (simple ou en module) ~1€
- 🛒 Un WEMOS D1 Mini (ou autre ESP) ~2-3€
- 🛒 Du ruban adhésif double-face ou un support imprimé en 3D.
Montage et Câblage
- Localisez l’aimant : Approchez votre capteur du cadran. Vous devriez trouver un point où le capteur réagit à chaque passage de la roue (souvent une petite roue rouge, noire ou marquée d’un symbole d’aimant).
- Fixez le capteur : Le positionnement est crucial. Fixez le capteur solidement à l’endroit le plus réactif.
Câblage :
- Module LM393 : VCC -> 3.3V, GND -> GND, DO (Digital Out) -> D2 (GPIO4) du WEMOS.
- Simple Reed Switch : Une patte -> GND, l’autre patte -> D2 (GPIO4). Le pull-up interne de l’ESP fera le reste.

Le Code ESPHome
On utilise le composant pulse_counter
, parfait pour cette application.
esphome:
name: water_meter
friendly_name: water_meter
esp8266:
board: d1_mini
# ... (wifi, api, etc.)
sensor:
- platform: pulse_counter
pin:
number: D2
mode: INPUT_PULLUP # Important pour un simple Reed Switch
name: "Water Meter Pulse"
# Le filtre suivant est appliqué après 15s d'inactivité
filters:
- debounce: 1s
# Convertit les impulsions en litres.
# Si 1 impulsion = 1 litre, multiplier par 1.0
# Si 1 impulsion = 10 litres, multiplier par 10.0
# etc.
unit_of_measurement: 'L'
accuracy_decimals: 1
lambda: return x * 1.0;
total:
name: "Water Meter Total"
unit_of_measurement: 'm³'
accuracy_decimals: 3
device_class: water
state_class: total_increasing
filters:
- multiply: 0.001 # Convertit les Litres en m³
Méthode 2 : Capteurs Optiques (TCRT5000 / CNY70)
Si votre compteur n’a pas d’aimant, mais une roue avec une marque visuelle (un point noir, un patch réfléchissant), l’approche optique est la solution.
Le Composant : Un capteur de réflectance infrarouge comme le TCRT5000 ou le CNY70. Il émet de la lumière IR et mesure la quantité réfléchie. Une marque noire absorbera la lumière (pas de signal), tandis qu’une surface claire la réfléchira (signal).
Montage et Code : Le principe reste le même. Vous positionnez le capteur optique au-dessus de la marque à détecter. La sortie du capteur est connectée à un GPIO de l’ESP, et la configuration du pulse_counter
dans ESPHome est strictement identique à celle de la méthode magnétique. La seule différence est le type de capteur physique utilisé.
Méthode 3 : Compteurs avec Émetteur d’Impulsions
Certains compteurs d’eau sont directement équipés d’un “pulse emitter”. Ils disposent de deux bornes sur lesquelles on peut se brancher. Le compteur se charge lui-même de fermer le contact à chaque fois qu’un volume d’eau défini s’est écoulé (par exemple, une impulsion par litre).
Cette méthode est la plus fiable car elle est directement intégrée au compteur.
Câblage et Code
Le câblage est simple : les deux fils du compteur se branchent sur un GPIO et sur la masse (GND) de l’ESP. Une résistance “pull-up” entre le GPIO et le 3.3V est souvent nécessaire pour assurer un signal stable, bien que l’on puisse aussi utiliser le INPUT_PULLUP
interne de l’ESP.
Le code est très similaire, mais on peut utiliser la plateforme pulse_meter
pour obtenir un débit instantané, ou pulse_counter
pour le total. Voici un exemple inspiré de votre configuration qui utilise pulse_counter
pour la robustesse du comptage total :
sensor:
- platform: pulse_counter
pin: GPIO12 # Le GPIO où est branché le compteur
name: "Water Meter Pulses"
internal_filter: 100ms
# Le lambda suivant dépend des spécifications de VOTRE compteur.
# L'exemple ci-dessous correspond à un compteur qui émet 87 impulsions par litre.
# Adaptez cette valeur !
filters:
- lambda: return x / 87.0;
unit_of_measurement: 'L'
total:
name: "Total Water Consumption"
unit_of_measurement: "m³"
device_class: water
state_class: total_increasing
accuracy_decimals: 3
filters:
# On divise par 1000 pour passer de L à m³
- multiply: 0.001
Dans cet exemple, le lambda: return x / 87.0;
est crucial : il signifie que le code divise le nombre d’impulsions brutes par 87 pour obtenir un volume en litres. Vous devez trouver cette valeur (nombre d’impulsions par litre) dans la documentation de votre compteur d’eau.
De plus, pour ceux qui souhaitent une solution propre, il existe de nombreux designs de boîtiers pour Wemos D1 Mini sur des sites comme Thingiverse, ou vous pouvez concevoir le vôtre.
Intégration et Cas d’Usage
Une fois le code téléversé, une nouvelle entité sensor.water_meter_total
apparaîtra dans Home Assistant. Grâce au device_class: water
, vous pourrez l’ajouter directement au Dashboard Énergie pour un suivi détaillé.
Scénario 1 : Détection de Fuites Nocturnes
C’est LE scénario le plus important. Une fuite, même minime, se traduit par une consommation continue. Créez une automatisation qui vous alerte si de l’eau s’écoule pendant la nuit.
- Déclencheur :
numeric_state
dusensor.water_meter_pulse
> 0 (ou une petite valeur) pendant 30 minutes. - Condition : Uniquement entre 2h et 5h du matin.
- Action : Envoyer une notification critique sur votre téléphone : “Fuite d’eau suspectée !”
Scénario 2 : Alerte de Douche Interminable
Le besoin : Sensibiliser la famille à la durée des douches.
- Déclencheur :
numeric_state
dusensor.water_meter_pulse
> 10 L/min (débit de douche). - Action : Lancer un minuteur de 8 minutes. Si à la fin du minuteur le débit est toujours élevé, envoyer une notification, faire clignoter une lumière ou même… lancer une annonce vocale via un DFPlayer !
Scénario 3 : Suivi du Remplissage (Piscine, Baignoire)
Vous remplissez votre piscine ou votre baignoire ? Créez un script qui vous alerte lorsque le volume désiré est atteint.
- Action : Appeler le service
input_number.set_value
pour définir un objectif (ex: 200L). Une automatisation vous alertera lorsquesensor.water_meter_total
aura augmenté de cette valeur.
Conclusion
Fabriquer son propre compteur d’eau connecté est un projet à la fois simple, économique et incroyablement puissant. Il vous donne un contrôle total sur une ressource essentielle et peut vous faire économiser des centaines d’euros en détectant une fuite à temps. Que vous choisissiez la méthode magnétique ou optique, ESPHome et Home Assistant rendent ce projet accessible à tous.