Bonjour
Pour éviter ce problème. J’ai modifié le code pour le comptage, j’utilise un binary_sensor pour compter, au lieu du pulse_meter.
J’ai un résultat plus précis et un écart mensuel inférieur a 1% sur un mois de consommation d’eau.
J’ai conservé le pulse Meter, uniquement pour avoir le débit L/mm.
Le code est à adapter à tes besoins, notamment pour les friendly_name
Code pour compteur
# binary sensor comptage impulsion eau froide et adoucie
##############################################
binary_sensor:
- platform: gpio
pin:
number: GPIO32
allow_other_uses: true
mode: INPUT_PULLUP
inverted: True
filters:
- delayed_on: 50ms
- delayed_off: 50ms
name: "${friendly_name1} counter state"
id: ef_counter_state
on_press:
then:
- lambda: |-
// increment le compteur EF puis publish mqtt
id(ef_pulse_counter) += 1;
id(ef_counter_pulse).publish_state(id(ef_pulse_counter));
id(ef_counter_l).publish_state(id(ef_pulse_counter)/1);
id(ef_counter_m3).publish_state(id(ef_pulse_counter)/1000);
sensor:
#######################################
# Débit d'eau instantané (0 après 10s) #
# Ne pas utiliser pour comptage (comptage erroné) #
###########################################
- platform: pulse_meter
name: "${friendly_name1} pulse"
id: pulse_id_ef
pin:
number: GPIO32
allow_other_uses: true
inverted: true
mode:
input: true
pullup: true
internal_filter: 100ms
icon: mdi:water
timeout: 100s
unit_of_measurement: 'l/mn'
filters:
- multiply: 1
# Comptage impulsion
- platform: template
name: "${friendly_name2} counter pulse"
id: ef_counter_pulse
unit_of_measurement: ''
accuracy_decimals: 0 # Précision en entiers
icon: "mdi:counter"
#update_interval: 5s # Mise à jour sur changement de valeur
# Comptage litres
- platform: template
name: "${friendly_name2} counter l"
id: ef_counter_l
unit_of_measurement: 'L'
accuracy_decimals: 0 # Précision en entiers
state_class: total_increasing
device_class: water
# Comptage m³ (utilisé pour le compteur services HA)
- platform: template
name: "${friendly_name2} counter m3"
id: ef_counter_m3
unit_of_measurement: 'm³'
accuracy_decimals: 3 # Précision en entiers
state_class: total_increasing
device_class: water
Tu peux retrouver le code complet ici : (dans code esp32)