Flow debimeter avec ESP32

Mon problème

Bonjour a tous

Je possède un capteur de débit de ce type :

Les indication du capteur sont les suivante :

Je souhaite utiliser avec un ESP (car pas possible avec shelly uni), mais je n’y connais rien.

Je vous remercie par avance pour votre aide

Après plusieurs heures de recherche, il s’avère que le shelly n’est pas adapté pour utilisation que je voulais en faire.

Je me tourne maintenant vers ESP32, je sais que c’est réalisable notamment comme sur cette vidéo.

Mon souci c’est que j’y connais rien en esp32, donc je vais commencer par regarder des tutos et essayer de réaliser ce type de montage pour pouvoir utiliser le flowmeter et comptabiliser mon eau.

1 « J'aime »

Bonjour
J’ai installer ESP Home sur Home Assistant
J’ai du changer de navigateur, pour pouvoir utiliser interface web car par compatible avec firefox (problème webserial). Je suis donc passé sous chrome.

Mon premier souci est le suivant :
pour les ESP car il y a une multitude (ESP32 , ESP8266,…) de choix sur aliexpress et je ne sais pas lequel utiliser, pouvez vous me conseiller un modèle (avec lien achat) et si possible avec une carte de développement (bornier)

Je suis débutant sur ESP et en électronique aussi (Électricien t plombier de métier), donc quelque chose qui soit simple a prendre en main.

Merci par avance pour votre aide

Bonjour

Je sollicite votre aide, c’est mon premier montage en ESP 32 et en electronique aussi… :upside_down_face:

J’ai un module ESP de ce type :


Mon souci est pour le raccordement électrique de l’ensemble.
Je compte alimenté ESP par le port Micro Usb

Mais je ne sais pas comment raccordé le capteur de débit et la sonde de température cité plus haut sur ESP

Le pulse du capteur débit (fil jaune) doit être raccordé sur le GPI023 ce qui doit correspondre a la borne 23 de ESP
la sonde (fil noir) doit être raccordé sur le GPI035 ce qui doit correspondre à la borne 35 de ESP

Ou faut il brancher l’alimentation du capteur de débit (fil rouge et noir) en 3,3V ou 5V ?
Pour la sonde de température , faut il alimenter en 3,3V ou 5V et Faut il mettre une résistance 10Kohm ?

Mon code pour ESP :

Résumé
esphome:
  name: "esphome-cpt-eau"

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:


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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:


captive_portal:


# Example configuration entry

binary_sensor:
  - platform: template
    name: “Waterpump is Flowing"
    id: template_isflowing
    lambda: |-
     if (id(sensor_waterpump_litres_per_min).state > 0) {
       // Water flowing
       return true;
     } else {
       // Water not flowing
       return false;
     }

# statut
  - platform: status
        name: "Statut"

sensor:
  - platform: pulse_meter
    pin: GPIO23
    name: "Waterpump-Litres per min"
    id: sensor_waterpump_litres_per_min
    unit_of_measurement: "L/min"
    timeout: 10s
    filters:
      - multiply: 0.001818

    total:
      name: "Waterpump-Litres Total"
      unit_of_measurement: "L"
      accuracy_decimals: 3
      filters:
        - multiply: 0.001818

  - platform: adc
    pin: GPIO35
    name: “Waterpump-Temperature Raw Volts"
    id: waterpump_temperature_raw_volts
    update_interval: 15s
    accuracy_decimals: 5
    attenuation: auto

  - platform: resistance
    sensor: waterpump_temperature_raw_volts
    configuration: DOWNSTREAM
    resistor: 50kOhm
    reference_voltage: 3.3V
    name: "Waterpump-Resistance Sensor"
    id: waterpump_temperature_resistance_sensor

  - platform: ntc
    sensor: waterpump_temperature_resistance_sensor
    calibration:
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 47kOhm
    name: "Waterpump-Temperature NTC"
    id: waterpump_temperature_ntc
	
# Qualité du signal
  - platform: wifi_signal
    name: "Signal Wifi"
    update_interval: 60s

# Temps de fonctionnement
  - platform: uptime
    name: "Allumé depuis (s)"
    id: uptime_sec
       
switch:
# Bouton de redémarrage
  - platform: restart
    name: "Redémarrage"

# Transformation des secondes en jours
text_sensor:
  - platform: template
    name: "Allumé depuis (j)"
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
    icon: mdi:clock-start
    update_interval: 60s

bonjour

Pouvez vous me dire si mon schéma est correct :

J’ai bien une mesure de température, mais quand je souffle dans le capteur de debit, je n’ai pas de comptage

Merci pour votre aide

salut @pascal_ha a ta place, je ferai juste le raccordement du debit metre pour etre sur que cela fonctionne dans 1er temps avec ton code esphome , et juste pour cette partie là, oui ton cablage a l’air bon. Si tu veux le code du fichier esphome, tu me demanderas, on l’avais revu avec seb2docky à l’époque de sa video.

1 « J'aime »

Merci pour ton aide…

J’ai fait un essai, mais j’ai vu une subtilité chinoise dans le câblage


Le câblage est inversé entre les 2 connecteurs, malheureusement je ne l’ai vu qu’après avoir raccordé… :astonished: du coup le capteur a effet hall est H.S.

Mais j’ai fait un essai avec un capteur a effet hall d’adoucisseur et cela fonctionne


…sa compte. Sa compte faux mais sa compte…
Le montage fait peur a voir :rofl:

Il faut que je recommande un capteur…

Le fait d’alimenter le capteur en 5V, sa ne pose pas de problème pour ESP ?

Voici le code que j’utilise actuellement.

Résumé
esphome:
  name: "esphome-test-adoucisseur"

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  
  # ...
  manual_ip:
    # Set this to the IP of the ESP
    static_ip: 192.168.1.190
    # Set this to the IP address of the router. Often ends with .1
    gateway: 192.168.1.1
    # 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: "Esphome-Web-D21Af8"
    password: "7WEw5SrMsT5u"

captive_portal:


# Example configuration entry

binary_sensor:
  - platform: template
    name: “Waterpump is Flowing"
    id: template_isflowing
    lambda: |-
     if (id(sensor_waterpump_litres_per_min).state > 0) {
       // Water flowing
       return true;
     } else {
       // Water not flowing
       return false;
     }

# statut
  - platform: status
    name: "Statut ESP"
        
sensor:
  - platform: pulse_meter
    pin: GPIO22
    name: "Waterpump-Litres per min"
    id: sensor_waterpump_litres_per_min
    unit_of_measurement: "L/min"
    timeout: 10s
    filters:
      - multiply: 0.001818

    total:
      name: "Waterpump-Litres Total"
      unit_of_measurement: "L"
      accuracy_decimals: 3
      filters:
        - multiply: 0.001818

  - platform: adc
    pin: GPIO35
    name: “Waterpump-Temperature Raw Volts"
    id: waterpump_temperature_raw_volts
    update_interval: 15s
    accuracy_decimals: 5
    attenuation: auto

  - platform: resistance
    sensor: waterpump_temperature_raw_volts
    configuration: DOWNSTREAM
    resistor: 50kOhm
    reference_voltage: 3.3V
    name: "Waterpump-Resistance Sensor"
    id: waterpump_temperature_resistance_sensor

  - platform: ntc
    sensor: waterpump_temperature_resistance_sensor
    calibration:
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 10kOhm
    name: "Waterpump-Temperature NTC"
    id: waterpump_temperature_ntc

# Qualité du signal
  - platform: wifi_signal
    name: "Signal Wifi"
    update_interval: 300s 
    
# Temps de fonctionnement
  - platform: uptime
    name: "Allumé depuis (s)"
    id: uptime_sec    

switch:
# Bouton de redémarrage
  - platform: restart
    name: "Redémarrage ESP"

# Transformation des secondes en jours
text_sensor:
  - platform: template
    name: "Allumé depuis (j)"
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
    icon: mdi:clock-start
    update_interval: 3600s    
    
  • Mais je n’ai pas réussi a faire fonctionner le code pour faire la sauvegarde journalière …

je veux bien votre code Esphome révisé afin d’essayer d’avoir quelque chose de fonctionnel.

  • Y a t’il moyen que ESP garde en mémoire la valeur de comptage, sans que sa reparte a zéro quand on coupe l’alimentation ?

Merci pour ton aide

Je rencontre un souci, le flow meter compte de façon éradique, des fois il ne se stop pas, malgré que je n’ai plus de tirage d’eau… J’utilise un ESP32-vroom-32D celui ci est il bien adapté ?
J’ai testé avec un premier capteur de débit…mais suite a un branchement erroné celui ci ne compte pas…

J’ai fait un test avec une turbine adoucisseur (n’ayant aucune info je l’ai testé en 3,3V et 5V , cela fonctionne, mais des fois le comptage ne se stop pas et continu à compter malgré qu’il n’y a pas de tirage d’eau.

J’utilise la carte de développement suivante :
https://fr.aliexpress.com/item/1005004285791004.html?spm=a2g0o.order_list.0.0.203e5e5bAiSeQJ&gatewayAdapt=glo2fra

J’utilise un esp32-wroom-32D
https://fr.aliexpress.com/item/1005002196907572.html?spm=a2g0o.order_list.0.0.203e5e5bAiSeQJ&gatewayAdapt=glo2fra

L’ESP32S serait il mieux ?
https://fr.aliexpress.com/item/1005001855273414.html?spm=a2g0o.cart.0.0.59f5378dDv1ozf&mp=1&gatewayAdapt=glo2fra

Je suis novice en esphome et esp32. Merci de votre aide ou de vos conseils

j’utilise un esp32 Vroom devkit, mais a mon avis tu devrais d’abord faire le calibrage, c’est a dire de prendre un pichet ou une bouteille d’un litre ou un verre mesureur, le remplir au robinet et faire le delta entre ce que ta sonde t’indique et les 1 litre réelle :
cette exemple tu le retrouves dans mon code esphome :

    filters:
     - lambda: return (x / 5.48);
    unit_of_measurement: "l"
    filters:
    - sliding_window_moving_average:
        window_size: 7
        send_every: 1
    - lambda: return ((x - 0.1)*1.333333*10);
code
esphome:
  name: debit_chaude
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "topodoco"
  password: "remplacelesopardesu"
  manual_ip:
    static_ip: 192.***.***.**
    gateway: 192.*..**.**
    subnet: 255.255.0.0
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Debit Chaude Fallback Hotspot"
    password: "qfsdfsdfvfdbdgbdfvdffgfdhbdggfhdghfnfhbdhgvfbgdnbgdfgfvngj,jhbdfsfsvstsgfvrfgshI7bE"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:


time:
  #- platform: sntp
  #  id: my_time
    
  - platform: homeassistant
    id: homeassistant_time  
    
    on_time:
      - seconds: 57
        minutes: 59
        hours: 23
        then:  
          - sensor.template.publish:
              id: template_efs_veille
              state: !lambda return id(daily_efs).state;
              
switch:
  - platform: restart
    name: "debit_chaude_restart"       
    
sensor:         
  - platform: adc
    pin: A0
    name: "debit_chaude_pression"
    update_interval: 10s
    unit_of_measurement: "bar"
    icon: mdi:gauge
    accuracy_decimals: 3
    filters:
    - sliding_window_moving_average:
        window_size: 7
        send_every: 1
    - lambda: return ((x - 0.1)*1.333333*10);
    #- lambda: return ((x - 0.1)*1.49993*10);
    
  - platform: pulse_counter
    id: water_flow_meter
    pin: GPIO02
    name: "debit_chaude_water_flow_meter"    
    update_interval: 1s
    icon: mdi:water
    filters:
     - lambda: return (x / 5.48);
    unit_of_measurement: "l"
    
  - platform: total_daily_energy
    name: "debit_chaude_conso_du_jour"
    power_id: water_flow_meter  
    unit_of_measurement: "l"
    accuracy_decimals: 2
    id: daily_efs
    
  - platform: template
    name: "debit_chaude_conso_veille"
    id: template_efs_veille
    unit_of_measurement: "l"
    accuracy_decimals: 2
    icon: mdi:water
    update_interval: 10s
    
  - platform: wifi_signal
    name: "debit_chaude_wifi_puissance"
    update_interval: 10s
    
  - platform: uptime
    name: "debit_chaude_uptime"
    update_interval: 10s
    
    
binary_sensor:
  - platform: status
    name: "debit_chaude_status"  

et ce code là qui fonctionne chez moi à été repris sur les tuto de seb2dock (e2nommy sur Youtube) dans sa video 10 ou 11 de mémoire

J’ai pas bien compris cette partie du code ? :rofl:

Le capteur de débit, il faut l’alimenter en 3,3V ou 5V ?

1 « J'aime »

Lol au lieu de masquer des infos perso je marques toujours des bêtises ^^

C est du 3v pour moi :slight_smile:

J’arrive un peu tard mais pour les branchements il y a cet article sur sigalou domotique

http://jeedom.sigalou-domotique.fr/domotiser-sa-consommation-deau

1 « J'aime »

Merci pour votre aide

Mais après plusieurs essais je pense que mon capteur a effet hall est HS.
Je vais en commander un nouveau et refaire des tests.