[Article] Gestion de sa consommation d'eau

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)

1 « J'aime »