Une solution complète de récupération des données Eau, Gaz et Electricite

Vérifie manuelle : non si ça fonctionne déjà avec le compteur gazpar.
C’est juste une méthode plus simple pour vérifier que tout fonctionne

Bonjour
Désolé de répondre si tard! Je n’arrive pas faire « tourner » l’automatisme autrement que par la config d’origine ( celle du tuto que j’ai suivi)
Du coup je me demandais comment l’automatisme recevait les infos du bouton zigbee si je passe de : platform: device où l’on configure l’id du device à « écouter »
à platform: state où l’on va juste retrouver le sensor qui peut faire le lien
merci

Si la config d’origine te va reste s en la.
Surveille simplement qu’il n’y a pas de déclenchements illogiques
C’est pour ça que j’ai modifié mon automatisme .
Il faut bien regarder dans les logs de z2m l’information que remonte le bouton
Phil

1 « J'aime »

Bonjour
Merci pour le conseil c’est ce que je pensais faire ! Et je vais surveiller les logs

Bonjour,
Petite question, n’est il pas possible d initialiser la valeur du compteur eau jour au démarrage de l esp avec la dernière valeur disponible dans HA car en cas de redémarrage de l’ESP le compteur redémarre a 0, ce qui est dommage quand ca arrive a 22h et que l ont perd la conso de la journée ?

sinon super projet qui fonctionne nickel

En fait rien n’est perdu sauf l’info temps réel provenant de l.esp.
A son redémarrage, les valeurs redémarrent de zéro mais se rajoutent à HA. Donc sauf pendant l.arrêt de l’esp, tu ne perds rien
Phil

Bonjour,

Pour récupérer les impulsions d’un compteur d’eau, je me suis inspiré de votre espérance et de deux autres tuto ici et .

Je suis sur un ESP32 AZ-Delivery, monté sur une platine et un capteur LJ18A3-8-Z/BX-5V.

Voici mon schéma de câblage :

Voici la configuration de mon ESP32

esphome:
  name: esp32-compteur-eau-cuve
  friendly_name: esp32-compteur-eau-cuve

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "onQ5/zC5DFgy57gHCFeRXbOmQmDF5ByhRSEM7tyCeUI="

ota:
  password: "e457cfl4e2475f14f30428ffa2f13c4d"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Compteur-Eau-Cuve"
    password: "o13MloK4FqJl"

captive_portal:

sensor:
  - platform: pulse_counter
    pin: 21
    update_interval : 6s
    name: "water pulse"
    id: water_pulse

  - platform: pulse_meter
    pin: 21
    name: "Water Pulse Meter"
    unit_of_measurement: "liter/min"
    icon: "mdi:water"
    total:
      name: "Water Total"
      unit_of_measurement: "liter"

  - platform: pulse_meter
    pin: 21
    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

Vous le log lorsque je me connecte sur l’ESP :

INFO Reading configuration /config/esphome/esp32-compteur-eau-cuve.yaml...
INFO Starting log output from esp32-compteur-eau-cuve.local using esphome API
INFO Successfully connected to esp32-compteur-eau-cuve.local
[18:16:26][I][app:102]: ESPHome version 2023.2.2 compiled on Feb 19 2023, 18:05:06
[18:16:26][C][wifi:504]: WiFi:
[18:16:26][C][wifi:362]:   Local MAC: 40:22:E4:E9:8N:7B
[18:16:26][C][wifi:363]:   SSID: [redacted]
[18:16:26][C][wifi:364]:   IP Address: 192.168.1.153
[18:16:26][C][wifi:366]:   BSSID: [redacted]
[18:16:26][C][wifi:367]:   Hostname: 'esp32-compteur-eau-cuve'
[18:16:26][C][wifi:369]:   Signal strength: -80 dB ▂▄▆█
[18:16:26][C][wifi:373]:   Channel: 6
[18:16:26][C][wifi:374]:   Subnet: 255.255.255.0
[18:16:26][C][wifi:375]:   Gateway: 192.168.1.1
[18:16:26][C][wifi:376]:   DNS1: 192.168.1.1
[18:16:26][C][wifi:377]:   DNS2: 0.0.0.0
[18:16:26][C][logger:293]: Logger:
[18:16:26][C][logger:294]:   Level: DEBUG
[18:16:26][C][logger:295]:   Log Baud Rate: 115200
[18:16:26][C][logger:296]:   Hardware UART: UART0
[18:16:26][C][template.sensor:023]: Template Sensor 'Water Usage Liter'
[18:16:26][C][template.sensor:023]:   State Class: ''
[18:16:26][C][template.sensor:023]:   Unit of Measurement: 'l/min'
[18:16:26][C][template.sensor:023]:   Accuracy Decimals: 1
[18:16:26][C][template.sensor:023]:   Icon: 'mdi:water'
[18:16:26][C][template.sensor:024]:   Update Interval: 6.0s
[18:16:26][C][pulse_counter:160]: Pulse Counter 'water pulse'
[18:16:26][C][pulse_counter:160]:   State Class: 'measurement'
[18:16:26][C][pulse_counter:160]:   Unit of Measurement: 'pulses/min'
[18:16:26][C][pulse_counter:160]:   Accuracy Decimals: 2
[18:16:26][C][pulse_counter:160]:   Icon: 'mdi:pulse'
[18:16:26][C][pulse_counter:161]:   Pin: GPIO21
[18:16:26][C][pulse_counter:162]:   Rising Edge: INCREMENT
[18:16:26][C][pulse_counter:163]:   Falling Edge: DISABLE
[18:16:26][C][pulse_counter:164]:   Filtering pulses shorter than 13 µs
[18:16:26][C][pulse_counter:165]:   Update Interval: 6.0s
[18:16:26][C][pulse_meter:074]: Pulse Meter 'Water Pulse Meter'
[18:16:26][C][pulse_meter:074]:   State Class: 'measurement'
[18:16:26][C][pulse_meter:074]:   Unit of Measurement: 'liter/min'
[18:16:26][C][pulse_meter:074]:   Accuracy Decimals: 2
[18:16:26][C][pulse_meter:074]:   Icon: 'mdi:water'
[18:16:26][C][pulse_meter:075]:   Pin: GPIO21
[18:16:26][C][pulse_meter:077]:   Filtering rising edges less than 13 µs apart
[18:16:26][C][pulse_meter:081]:   Assuming 0 pulses/min after not receiving a pulse for 300s
[18:16:26][C][pulse_meter:074]: Pulse Meter 'Water Pulse Meter'
[18:16:26][C][pulse_meter:074]:   State Class: 'measurement'
[18:16:26][C][pulse_meter:074]:   Unit of Measurement: 'liter/min'
[18:16:26][C][pulse_meter:074]:   Accuracy Decimals: 2
[18:16:26][C][pulse_meter:074]:   Icon: 'mdi:water'
[18:16:26][C][pulse_meter:075]:   Pin: GPIO21
[18:16:26][C][pulse_meter:077]:   Filtering rising edges less than 13 µs apart
[18:16:26][C][pulse_meter:081]:   Assuming 0 pulses/min after not receiving a pulse for 300s
[18:16:26][C][captive_portal:088]: Captive Portal:
[18:16:26][C][mdns:108]: mDNS:
[18:16:26][C][mdns:109]:   Hostname: esp32-compteur-eau-cuve
[18:16:26][C][ota:093]: Over-The-Air Updates:
[18:16:26][C][ota:094]:   Address: esp32-compteur-eau-cuve.local:3232
[18:16:26][C][ota:097]:   Using Password.
[18:16:26][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:16:26][C][api:138]: API Server:
[18:16:26][C][api:139]:   Address: esp32-compteur-eau-cuve.local:6053
[18:16:26][C][api:141]:   Using noise encryption: YES

Enfin, voici les logs sur le résultat. Si j’approche un aimant du capteur inductif, rien ne se passe…
0 pulse… :confused:


[18:16:32][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:16:32][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:16:32][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:16:38][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:16:38][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:16:38][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:16:44][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:16:44][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:16:44][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:16:50][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:16:50][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:16:50][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:16:56][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:16:56][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:16:56][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:17:02][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:17:02][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:17:02][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:17:08][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:17:08][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:17:08][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:17:14][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:17:14][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:17:14][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:17:20][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:17:20][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:17:20][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy
[18:17:26][D][pulse_counter:174]: 'water pulse': Retrieved counter: 0.00 pulses/min
[18:17:26][D][sensor:127]: 'water pulse': Sending state 0.00000 pulses/min with 2 decimals of accuracy
[18:17:26][D][sensor:127]: 'Water Usage Liter': Sending state 0.00000 l/min with 1 decimals of accuracy

C’est la 1ère fois que j’utilise un ESP.
Avez-vous une piste pour m’aider ?

Merci par avance.

Bonjour
Il n’est pas nécessaire d’utiliser un aimant. C’est un capteur inductif donc une simple pièce métallique suffit
Quand tu approches une pièce métallique, la led rouge du capteur s’allume t elle ? C’est le minimum
Ensuite : tu alimentes le capteur avec le 5 V de l’esp ou son 3,3 V ? De mémoire, il lui faut au moins le 5 V
Et dans ce cas, il faut un pont diviseur afin de limiter à 3,3 V l’entrée sur l’ESP. ( voir mon schéma )
Phil

1 « J'aime »

Merci pour m’avoir répondu.

J’ai testé 2 ESP32 mais aussi 2 capteurs et dans les 2 montages la led rouge ne s’est jamais allumée…

Pour l’alimentation je passe par l’Usb du PC.

EDIT : Je me suis trompé sur le montage. J’ai utilisé le fil bleu du capteur sur la pin CMD de l’ESP32 au lieu du GND :face_with_hand_over_mouth:

Hello
Donc ça fonctionne maintenant ? Mais attention si tu utilises la tension de l’USB, cela veut dire que tu vas envoyer du 5 V sur l’entrée de l’ESP. Il ne va pas aimer !
Utiles le pont diviseur comme sur mon schéma
Phil

Oui, il y a une grave erreur sur les ESP32 de AZ Delivery.
La pin « GND » en bas à gauche n’est pas une vraie masse mais PIN de commande « CMD ».
Plus d’info ici (vidéo) et (article).

Voici le bon montage :

En ce qui concerne le 5V, il faudrait que j’abaisse la tension d’entrée sur le pin 21 ? J’avoue ne pas avoir la fibre électronique de ton schéma. Mais je suis preneur d’info.

Bonjour a tous.
J’utilise un ESP32-WROOM-32U.
Le capteur est un LJ18A3-8Z/BX.
J’ai cette config :

sensor:
  - platform: pulse_counter
    pin: GPIO21
    update_interval: 6s
    name: "water pulse"
    id: water_pulse

  - platform: pulse_meter
    pin: GPIO21
    name: "Water Pulse Meter"
    unit_of_measurement: "liter/min"
    icon: "mdi:water"
    total:
      name: "Water Total"
      unit_of_measurement: "liter"

  - platform: pulse_meter
    pin: GPIO21
    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

Le capteur est configuré comme indiqué avec le fils noir sur le GPIO21.

Quand je passe un morceau de metal la led s’allume correctment mais je n’ai cucune information qui remonte dans HA;

MAIS

Quand je touche avec mon doigt le pin 21, j’ai l’info qui remonte correctement.
Je ne comprend pas ce que je fait de mal.

Pour completer un peut mon instalation, je me permet de mettre le shema de ma carte. Pour rappel j’utilise le GPIO21.



Merci

Bonjour
Le hic (c’est là qu’est l’os…) c’est que le capteur /BX est la version PNP, il ramène la tension d’alimentation, ici 5Vdc sur l’entrée GPIO de l’Esp… L’Esp n’accepte que des tensions de 3.3V, pas 5V…
En clair il va cramer si ce n’est pas déjà fait…
En mettant le doigt, cela fonctionne!? Probablement un faux-con, également un coup de chance pour la survie de l’ESP … :thinking:

Je viens de faire le test avec un multimetre. J’ai une tension sur les fils maron et bleu de 4.8V, donc le capteur est correctement alimenté.

Le fils noir, lui est a 4.6v quand la led est éteinte et passe a 4.8v quand la led est allumée.

Le fait de passer mon doigt sur le GPIO21 fonctionne et renvoie correctement l’info dans HA. Du coup mon probleme n’est pas lié a ma configuation (ou alors peut etre au GPIO21) mais plutot a mon capteur.

Je ne sais pas vraiment comment fonctionnent ces capteurs. Losque le capteur ne detecte pas de metal (led éteinte) la tension au fils noir ne devrais pas etre a zéro?

Pour info, la description de mon capteur : M18 8mm sensing DC 5V NPN NO LJ18A3-8-Z/BX-5V cylinder inductive proximity sensor switch work voltage 5VDC special for MCU
Je l’ai achaté sur ali : Sensor De Proximidade Indutivo M18 8mm, Tensão De Trabalho 5v Npn No Embutido/segundo Cilindro, Interruptor, Especial Para Mcu - Interruptores - AliExpress

Merci

Re
Pour les explications, le fil noir n’est pas un contact sec, mais un transistor (npn ici), tu devrais donc voir avec un multimetre numérique une tension de 0.7v environ entre le fil noir et le +5v avec la présence de métal, et rien (flottant) quand pas de métal…
Le coup du doigt… Hum j’imagine l’absence de résistance de pull down sur l’entrée GPIO…
Mais je crains tout même aveccce 4.3v sur l’entrée GPIO…
Ou alors tu as deux masses séparée???

Pour la mesure au multimetre, attention à l à polarisation, le multimetre ne mesurera rien en sens inverse… Je ne sais pas si je suis clair…

La tension est toujours de 4.8v entre le + et le fils noir. Presence de metal ou non.

C’est normal? Je ne pense pas au vu de tes explication. Je pense que je vais essayer avec un autre capteur. Une idée de ce que je doit acheter?

Merci

A dire, je prendrais la version PNP qui fait la même chose avec le GND, et donc pas d’emmerdes avec les tensions qui pourrait détruire l’ESP…
Pour la conf, pour activer les résistance de pull-up, ou pull-down:

Resistance sur les GPIO

En plus c’est cool, on peut filtrer les rebonds, pour limiter les faux-positifs ou vrai-negatifs, c’est selon… :hugs:

Je reste quand même inquiet avec du 5v sur les entrées de l’ESP…

Le fait de lettre le doigt, cela fonctionne…
Hum, c’est que c’est bon mais t’arrives pas à le confirmer avec tes mesures, pas grave…

Regarde plutôt avec la résistance de pull-down, ce qui doit certainement correspondre à ton doigt…
Je dirais que si cela fonctionne avec le doigt,c’est que l’entrée n’a pas cramé

Je ne comprend pas. Je doit essayer avec un autre GPIO?