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.

Nous allons utiliser un capteur pour compter ces rotations (impulsions) et en déduire la consommation.

Un capteur Reed positionné sur un compteur d’eau.

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

Montage et Câblage

  1. 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).
  2. Fixez le capteur : Le positionnement est crucial. Fixez le capteur solidement à l’endroit le plus réactif.

Câblage :

Câblage d’un module Reed et d’un Wemos D1 Mini.

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.

Scénario 2 : Alerte de Douche Interminable

Le besoin : Sensibiliser la famille à la durée des douches.

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.

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.