Flow debimeter avec ESP32

Niquel cela fonctionne. Merci à toi.
En revanche j’ai min debit instantané d’eau qui n’arrete pas de m’afficher des valeurs différentest tte les secondes alors que l’eau est coupée.

image
En 2 Minutes, alors que la vanne d’arret est coupée.

normalement si tu n’a pas de tirage d’eau au bout d’une minute tu devrais avoir 0 l/mm

Pour mon compteur, Je me suis inspirée de ce sujet : Une solution complète de récupération des données Eau, Gaz et Electricite

Mais tu as aussi cet article de Argonaute :

voici mon code, Je me sert de pulse-meter pour avoir l’information de débit l/mm, mais pour le comptage je me sert du binary_sensor, car j’utilise un compteur à impulsion (1L par impulsion) et pas un compteur à effet hall.

J’utilise ce code avec un shelly uni, il faudra adapté les GPIO pour ton Esp

mon code
esphome:
  name: shelly-uni 


esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_key

ota:
  password: !secret ota_password 

# Enable Web server (optional).
web_server:
  port: 80
  auth:
    username: !secret auth_login
    password: !secret auth_password


# Wifi Config
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  
  # ...
  manual_ip:
    # Set this to the IP of the ESP
    static_ip: !secret ip_su1
    # Set this to the IP address of the router. Often ends with .1
    gateway: !secret ip_gateway
    # The subnet of the network. 255.255.255.0 works for most home networks.
    subnet: 255.255.255.0  

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid:  "Shelly-Uni Fallback Hotspot" #!secret ap_ssid_su1  
    password: !secret ap_password_su1 

captive_portal:


##########################
# Device Specific Config
##########################

# Name device mask
substitutions:

  friendly_name1: "Sensor ECS"
  friendly_name2: "Compteur ECS"

globals:
    
  - id: ecs_pulse_counter
    type: float #Le counter n'est pas integer car il sert aussi pour la division m3
    initial_value: "0" 

#################
# Binary Sensor #
#################

# Binary sensor utilisé pour comptage des impulsions et Totalisateur
binary_sensor:

  - platform: gpio
    pin:
      number: GPIO13
      allow_other_uses: true
      mode: INPUT_PULLUP
      inverted: True
    filters:
      - delayed_on: 50ms
      - delayed_off: 50ms 
    name: "${friendly_name1} counter state"
    id: ecs_counter_state

    on_press:
      then: 
        - lambda: |-
            // increment le compteur ECS puis publish mqtt
            id(ecs_pulse_counter) += 1;
            id(ecs_counter_pulse).publish_state(id(ecs_pulse_counter));
            id(ecs_counter_l).publish_state(id(ecs_pulse_counter)/1);
            id(ecs_counter_m3).publish_state(id(ecs_pulse_counter)/1000);

   
####################################
# Sensors with general information.
####################################
sensor:

# Débit d'eau instantané l/mm (0 après 10s)
# Ne pas utiliser pour comptage (comptage erroné)
  - platform: pulse_meter
    name: "${friendly_name1} pulse"
    id: pulse_id_ecs
    pin:
      number: GPIO13
      allow_other_uses: true
      inverted: true
      mode:
        input: true
        pullup: true
    internal_filter: 500ms    
    icon: mdi:water
    timeout: 300s
    unit_of_measurement: 'L/mn'
    filters:
      - multiply: 1

# Comptage impulsion  
  - platform: template
    name: "${friendly_name2} counter pulse"
    id: ecs_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: ecs_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: ecs_counter_m3
    unit_of_measurement: 'm³'
    accuracy_decimals: 3  # Précision en entiers
    state_class: total_increasing
    device_class: water    
      
############Pour Flash shelly uni -- Tasmota --- Esphome-- mode OTA
# https://ghost.canaletto.fr/flasher-un-shelly-1-avec-esphome/
# http://shellyip/ota?url=http://dl.dasker.eu/firmware/mg2tasmota-ShellyUni.zip   

Merci à toi.
Mon problème de débit « foufou » venait du pin.
Changement de port et du pin dans la config et tout est bon.
Reste à calibrer plus précisément mais cela à l’air d’être déja assez précis.

1 « J'aime »

Bonjour,

Je suis en train d’installer un débitmètre à effet hall (YF-B5) avec un capteur de température. J’aurais besoin d’un avis sur le câblage du capteur de température.

Le capteur c’est une thermistance et le but c’est donc de mesurer la variation de cette résistance avec un pont diviseur. Dans mon cas, la thermistance est alimentée en 5V avec une résistance fixe de 10k. Voici mon schéma:

Je ne connais absolument pas les caractéristiques du capteur (rien sur le site marchand).

Comme j’envoie du 5V sur le capteur, je dois être sur de ne jamais avoir plus de 3,3V en entrée de mon ESP32. Comme je ne connais pas la plage de valeur de la thermistance impossible de savoir si la tension va dépasser. Quel est votre avis sur mon montage ?

Le capteur est déjà monté sur mon alimentation d’eau froide. La tension que je mesure est de 0,4V correspondant donc à une valeur de thermistance de 870 ohm

tu as testé ce shema ?

à prioris il abien une mesure de t°

Le cablage fonctionne mais ne connaissant pas la plage de valeur de la thermistance il est possible d’avoir plus de 3,3V en sortie et cramer l’esp32.
Si le capteur peut fonctionner en 3,3v cest bingo (je ne sais pas) sinon javais dans l’idée de mettre un deuxieme pont diviseur juste avant l’entrée du GPIO et ensuite d’appliquer un facteur multiplicateur dans esphome

Dans le schéma de @pascal_ha le capteur est sur 3,3v donc essaye.

1 « J'aime »

Salut,

Je suis effectivement branché en 3,3v.
Mais je n’ai pas réussi à avoir une valeur fiable.

Jai vu sur le sur internet le rajout d’un condensateur entre le 3,3v et la masse pour reduire le bruit sur signal du capteur NTC

J’ai vu cela aussi, mais n’ayant pas de condensateur, j’ai pas testé.
Je vais passer sur des sonde ds18b20.

J’ai repris mon installation en basculant sur le dernier D1 Mini V4 et avec ESP Home

Ca marche au top.

Salut,

j’ai regardé ton post, c’est super intéressant, mais j’aurais bien aimé avoir une précision conrernant la ressitance entre GND et la pin data reliée à la thermistance:

Sur la page ali du débimètre que j’ai commandé (mais pas encore reçus), je lis les spec suivantes:

TABLEAU TEMPÉRATURE VS RÉSISTANCE
Résistance 50k Ohms à 25deg. C
Valeur B 3950K à 25/50 degrés. C
Temp. Gamme:-40-+ 150 ℃

Je dois donc:

1 - mettre une resistance de 50K entre GND et la pin data reliée à la thermistance

2 - utiliser « Valeur B » dans calibration => b_constant du sensor

Voici le signal de la tension sur l’ADC avec le condensateur:

Cette tension correspond à une valeur de la thermistance de 1080 ohm.
En partant du principe que c’est une NTC 50k 3950 j’obtiens 146 °C…

Mon eau doit être en dessous de 10°C donc je trouve la résistance beaucoup trop basse pour une sonde NTC

le montage était bon et le soucis venait du code de la platform resistance. J’avais oublié que j’étais en upstream et non downstream sur mon montage.