Récupérer la consommation d'eau (ESP8266 + LJ18A3)

Mon problème

Bonjour à tous,
J’aimerais récupérer ma consommation d’eau. Pour cela, j’ai acheté un ESP8266 + un capteur LJ18A3.

J’ai suivi le tuto disponible sur le site.

J’ai bien réussi à intégrer mon ESP dans HA avec ESPHome, réaliser les mises à jour, etc…

J’ai fais les branchements, sauf que je dois me brancher sur le 3V pour que la LED du capteur s’allume. Actuellement il est pas « collé » à mon compteur, je suis sur mon bureau et je « joue » avec le capteur.

Seulement dans les logs, il ne se passe pas grand chose :

[13:31:24][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[13:31:24][D][sensor:093]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[13:31:28][D][sensor:093]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[13:31:30][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[13:31:30][D][sensor:093]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[13:31:34][D][sensor:093]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[13:31:36][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[13:31:36][D][sensor:093]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy

Sauf quand je débranche les cables la (je précise si je « joue » avec le cable Ground ou 3V" en le placant vers le haut du PIN) :

[13:59:22][D][sensor:093]: 'Water Pulse Meter': Sending state 338.48871 liter/min with 2 decimals of accuracy
[13:59:22][D][sensor:093]: 'Water Meter Total': Sending state 0.92300 m³ with 3 decimals of accuracy
[13:59:22][D][sensor:093]: 'Water Pulse Meter': Sending state 43783.63672 liter/min with 2 decimals of accuracy
[13:59:22][D][sensor:093]: 'Water Meter Total': Sending state 0.92900 m³ with 3 decimals of accuracy
[13:59:22][D][sensor:093]: 'Water Pulse Meter': Sending state 3075.31982 liter/min with 2 decimals of accuracy
[13:59:23][D][sensor:093]: 'Water Meter Total': Sending state 0.93000 m³ with 3 decimals of accuracy
[13:59:23][D][sensor:093]: 'Water Pulse Meter': Sending state 60.67452 liter/min with 2 decimals of accuracy

J’utilise des cables Dupont, c’est ptet ça ? (ce qui est bizarre c’est que je débranche côté GPIO) donc les cables sont bien enfoncés.

Avez-vous des idées ?

Edit : alors normalement il devrait se branche sur le VIN mais si je fais ça, le capteur ne s’allume pas.
Ensuite, en approchant un objet métallique (selon moi) la led devrait clignoter, mais la il ne se passe rien.
Les valeurs affichés quand je débranche sont peut être lié a des variations électriques…

Salut

Alors que sur le site du tuto :

a spinning wheel that contains a magnet

J’en deduis que c’est normal que rien ne se passe du coup.

Ps, je n’ai pas encore fait ce montage mais je compte bien m’y mettre quand j’aurai un peu plus de temps dispo.

Merci :slight_smile:

J’ai essayé aussi avec un aimant… mais même résultat et j’ai essayé de le mettre sur le capteur d’eau, même résultat

J’utilisais les mauvais GPIO pour l’alimentation ! Vu que je l’alimente en USB, je devais le brancher sur VU.
La j’ai le fonctionnement attendu ! Maintenant faut que j’arrive à le fixer au compteur :wink:

Bonjour @dje68
Je cherche désespérément une solution pour mon installation qui semble être identique à la tienne.
J’ai également suivi à la base ce tuto: Build a cheap water usage sensor using ESPhome and a proximity sensor - PieterBrinkman.com

Le code du tuto ne veux pas que jutilise 3 fois le même PIN.

Pourrais tu partager ton code ?

J’ai ça actuellement mais ça ne réagit pas comme souhaité.

# Utilisation d'un capteur GPIO pour compter les pulsations du capteur de proximité

binary_sensor:
  - platform: gpio
    pin: GPIO12
    name: "Water Pulse Sensor"
    id: water_pulse_sensor
    filters:
      # Débounce pour stabiliser la lecture des pulses
      - delayed_on: 100ms
      - delayed_off: 100ms
    on_press:
      # Ajouter un enregistrement de pulsation à chaque fois que l'eau passe
      then:
        - lambda: 'id(water_pulse_total).publish_state(id(water_pulse_total).state + 1);'

# Compteur total d'eau en litres
sensor:
  - platform: template
    name: "Water Pulse Total Liters"
    id: water_pulse_total
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:water"
    lambda: |-
      return id(water_pulse_total).state;
    update_interval: 6s

# Calculer l'eau en mètres cubes à partir des litres
  - platform: template
    name: "Water Total Cubic Meters"
    unit_of_measurement: "m³"
    accuracy_decimals: 3
    lambda: |-
      return id(water_pulse_total).state / 1000.0;
    update_interval: 6s

J’utilise le GPIO12, et le GNV et 5V de l’ESP.
Ai-je fait une erreur ? (dois-je mettre une résistance entre le 5V et GPIO12)
Le capteur réagit bien (led qui s’allume) mais rien n’apparait dans les logs de ESPhome.
Les logs restent sur « nan ».
A quoi correspond « VU » dans ton dernier commentaire ?
Merci beaucoup.

Salut,

Je crois que pour régler le problème de PIN c’est la ligne : allow_other_uses: true

Voici mon code :

esphome:
  name: esp-water-usage

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxx"

ota:
  - platform: esphome 
    password: "xxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-Water-Usage Fallback Hotspot"
    password: "xxx"

captive_portal:

sensor:
  - platform: pulse_counter
    pin: 
      number: GPIO12
      allow_other_uses: true
    update_interval : 6s
    name: "water pulse"
    id: water_pulse

  - platform: pulse_meter
    pin: 
      number: GPIO12
      allow_other_uses: true
    name: "Water Pulse Meter"
    unit_of_measurement: "liter/min"
    icon: "mdi:water"
    total:
      name: "Water Total"
      unit_of_measurement: "liter"

  - platform: pulse_meter
    pin: 
      number: GPIO12
      allow_other_uses: true
    name: "Water Pulse Meter"
    unit_of_measurement: "liter/min"
    icon: "mdi:water"
    total:
      name: "Water Meter Total"
      unit_of_measurement: "m³"
      id: water_meter_total
      accuracy_decimals: 3
      device_class: water
      state_class: total_increasing
      filters:
        - multiply: 0.001

  - platform: template
    name: "Water Usage Liter"
    id: water_flow_rate
    accuracy_decimals: 1
    unit_of_measurement: "l/min"
    icon: "mdi:water"
    lambda: return (id(water_pulse).state * 10);
    update_interval: 6s
    

Dans les logs de l’ESP tu dois voir des lignes défilées, avec ta consommation, sinon c’est que c’est pas bon ^^

Bon courage àtoi