J’ai mis un ESP32 sur mon compteur d’eau… et j’ai vraiment divisé ma facture par deux en trois moisCela faisait des années que je regardais ma facture d’eau arriver tous les six mois avec une petite boule au ventre. Maison des années 80, plomberie fatiguée, trois ados qui prennent des douches interminables et un jardin qui boit comme un chameau l’été : tout était réuni pour que ça grimpe vite. J’avais bien un compteur divisionnaire dans le garage, mais lire les petits chiffres rouges tous les jours, très peu pour moi. Un soir, en scrollant les forums, je tombe sur un sujet où un gars explique qu’avec un débitmètre à 9 € et un ESP32 on peut suivre sa conso en temps réel dans Home Assistant, et surtout la voir apparaître directement dans le dashboard Énergie. Je me suis dit : si ça marche vraiment, c’est le projet le plus rentable de toute ma vie domotique. Trois semaines plus tard le colis AliExpress arrive, et je me lance… Capteur de débit YF-B6 : https://fr.aliexpress.com Sonde T° DS18B20 (20x7.5x3.6 Head) : https://fr.aliexpress.com/ ESP32 avec antenne Wifi : https://fr.aliexpress.com/ Comment j’ai installé ESPHome quand on part de rien À l’époque je tournais sous Home Assistant OS (sur un petit Intel NUC). Je n’avais jamais touché à ESPHome. Voici exactement ce que j’ai fait, étape par étape, et que tu peux copier-coller aujourd’hui sans réfléchir : Dans Home Assistant → Paramètres → Modules complémentaires → Boutique des modules complémentaires (en bas à droite) Recherche « ESPHome » → Installer la dernière version stable (à l’heure où j’écris c’est la 2025.11.2) Une fois installé, cliquer sur Démarrer et cocher « Afficher dans la barre latérale » L’interface ESPHome apparaît dans le menu de gauche. Clic sur le gros + orange « New Device » → donner un nom (j’ai mis « debit ») → Suivant → ESP32 → Skip (on flashera plus tard) Et voilà, en trois clics ESPHome est opérationnel. Aucun terminal, aucun SSH, rien à installer à la main. Le matériel que j’ai fini par garder Le grand classique : débitmètre YF-S201 en laiton rouge G3/¾", celui qui fait environ 300 impulsions par litre. Un ESP32 DevKitC ou WROOM-32 tout simple à 4-5 €. Une sonde DS18B20 étanche (facultatif mais pratique). Une boîte étanche 100 × 68 × 50 mm, un vieux chargeur 5 V 2 A, et surtout plus un seul câble Dupont dans la maison (je t’expliquerai pourquoi). Installation et mise en route : le guide pas-à-pas qui m’aurait fait gagner 3 soiréesJe vais te raconter exactement comment j’ai procédé du début à la fin, avec les choix que je referais aujourd’hui et ceux que je changerais. Le matériel que j’ai utilisé J’ai pris le débitmètre le plus répandu, le YF-S201 (filetage ¾" laiton rouge) qui fait environ 300 impulsions par litre. Coût ≈ 9 € sur AliExpress. Pour la carte, un ESP32 classique « DevKitC » ou « WROOM-32U » à 4-5 €. Une sonde DS18B20 étanche avec câble de 1 m (optionnelle mais je la recommande). Une petite boîte étanche 100 × 68 × 50 mm, un vieux chargeur 5 V 1-2 A, et surtout plus de câbles Dupont (on en reparlera). Le câblage définitif (plus jamais de faux contact) Au début j’avais tout branché en Dupont, ça a tenu trois semaines puis j’ai eu des coupures aléatoires. J’ai tout refait en fixe et depuis c’est du béton. Alimentation du débitmètre : fil rouge → 5 V de l’ESP (ou du chargeur) Masse : fil noir → GND commun Signal : fil jaune → GPIO13 + résistance pull-up 10kΩ entre le signal et le 5 V (j’ai mis la résistance directement sur la barrette à vis) Sonde DS18B20 : fil rouge → 3,3 V, fil noir → GND, fil jaune/blanc → GPIO23 + résistance pull-up 4,7 kΩ entre data et 3,3 V (classique) Tout est vissé sur une barrette à vis ou des Wago 221, gainé thermo, rangé dans la boîte étanche percée avec des presse-étoupe. L’ESP est alimenté par un vieux chargeur téléphone via le port micro-USB. Le YAML qui marche à tous les coups en 2025.11 Voici le fichier complet que j’utilise aujourd’hui. Tu le copies-colles tel quel, tu changes juste ton SSID/mot de passe Wi-Fi et l’IP fixe si tu veux. esphome:
name: debit
friendly_name: Débit Eau
esp32:
board: esp32dev
framework:
type: arduino
logger:
api:
encryption:
key: "eg92Kb6zRwUlHEbbvmFJUNLRSYuh9w/WpDEibQ="
ota:
- platform: esphome
password: "6d349cd3a4f9cb2e9ddcae0"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.0.93
gateway: 192.168.0.254
subnet: 255.255.255.0
fast_connect: true
ap:
ssid: "Debit Fallback"
password: "tAtcEw"
captive_portal:
one_wire:
- platform: gpio
pin: GPIO23
sensor:
- platform: wifi_signal
name: "WiFi Débit Eau"
update_interval: 300s
- platform: dallas_temp
name: "Température eau"
device_class: temperature
unit_of_measurement: "°C"
accuracy_decimals: 1
update_interval: 60s
icon: mdi:coolant-temperature
- platform: pulse_meter
name: "Débit eau instantané"
id: debit_eau
pin:
number: GPIO13
mode: INPUT_PULLUP
inverted: false
unit_of_measurement: "L/min"
device_class: water
state_class: measurement
accuracy_decimals: 2
icon: mdi:water-pump
timeout: 15s
filters:
- lambda: return x / 300.0;
total:
name: "Consommation eau totale"
id: conso_eau_total_m3
unit_of_measurement: "m³"
device_class: water
state_class: total_increasing
accuracy_decimals: 3
icon: mdi:water-outline
filters:
- lambda: return x / 300000.0;
time:
- platform: homeassistant
id: ha_time
button:
- platform: template
name: "Remettre à zéro compteur eau"
icon: mdi:counter
on_press:
then:
- pulse_meter.set_total_pulses:
id: debit_eau
value: 0
- lambda: id(conso_eau_total_m3).publish_state(0.0);
- homeassistant.service:
service: input_text.set_value
data:
entity_id: input_text.last_reset_compteur_eau https://fr.aliexpress.com/item/1005007272043498.html?aff_fcid=8a37210562f44b7eaba2ccc877648d6a-1764611022455-02886-_c3Mch87h&tt=CPS_NORMAL&aff_fsk=_c3Mch87h&aff_platform=shareComponent-detail&sk=_c3Mch87h&aff_trace_key=8a37210562f44b7eaba2ccc877648d6a-1764611022455-02886-_c3Mch87h&terminal_id=8506d2f27c78403fb5d3c198fe1b8d0d&afSmartRedirect=y
value: !lambda |
auto t = id(ha_time).now();
char str[20];
snprintf(str, sizeof(str), "%04d-%02d-%02d %02d:%02d",
t.year, t.month, t.day_of_month, t.hour, t.minute);
return std::string(str);Flasher et première mise en route Dans ESPHome dashboard → Add device → tu colles le YAML → Install → Wireless (ou USB la première fois directement sur ton home assistant). À la première compilation tu auras peut-être l’erreur de linker OneWire que tout le monde a eu avec la 2025.11 : il suffit de cliquer sur les trois points de l’appareil → Clean Build Files puis recompiler. Ça passe du premier coup ensuite. Une fois l’ESP en ligne, tu auras immédiatement dans Home Assistant : sensor.débit_eau_instantané sensor.consommation_eau_totale (celle qui apparaît toute seule dans le dashboard Énergie → Eau) sensor.température_eau Intégration dans le dashboard Énergie Paramètres → Tableaux de bord → Énergie → Ajouter consommation → Eau → tu sélectionnes Consommation eau totale → Valider. C’est tout. Pas de Riemann sum, pas d’utility meter, rien d’autre. Le petit plus que j’ai ajouté ensuite Un card Lovelace toute simple pour voir le débit en temps réel et le bouton reset : type: vertical-stack
cards:
- type: entities
entities:
- entity: sensor.débit_eau_instantané
- entity: sensor.consommation_eau_totale
- entity: sensor.température_eau
- entity: button.remettre_à_zéro_compteur_eauEt voilà. En une soirée (ou deux si tu fais l’erreur des Dupont comme moi) tu as un compteur d’eau ultra-précis, 100 % local, qui te suit au litre près et qui te fait économiser de l’argent dès le premier mois. Si tu suis ces étapes à la lettre, ça marche à tous les coups, même avec la dernière version d’ESPHome. Et surtout, tu n’auras plus jamais à y retoucher.