Connecter un adoucisseur d'eau et récupération info débitmètre

Bonjour,

Je me suis lancé il y a quelques semaine dans un petit projet à base d’ESP32 (que j’ai découvert pour l’occasion, c’est génial) afin de « domotiser » enfin plutôt « connecter » mon adoucisseur d’eau (Vanne Fleck 5800 SXT).

L’objectif était de récupérer différentes informations comme l’état de la génération, l’état du niveau de sel et surtout l’information du débitmètre intégré, j’y suis parvenu et je vous partage tout cela.

Le plus gros problème a été la récupération de l’info du débitmètre intégré (12V), j’avais laissé tombé pour partir sur un débitmètre externe (suite à la vidéo de @SeByDocky que je remercie au passage pour son aide) mais après installation je constate que ce dernier commence à compatibilisé la consommation d’eau qu’a partir de 1,5L/Minutes en moyenne ce qui est loin d’être précis dans le cas d’utilisation sur l’arrivé d’eau générale d’une habitation, par exemple le lave vaisselle déclenche rarement le comptage, idem pour les robinets ouvert très légèrement, du coup tout est faussé, et exit l’automatise prévu de détection d’une éventuelle fuite lente, donc retour à la case départ afin d’essayer de récupéré l’info du débitmètre de mon adoucisseur d’eau qui est bien plus précis et comptabilise la moindre goute d’eau :slight_smile:

Matériel :

1 x ESP32 Dev Kit V1 (NodeMCU WROOM)
1 x Sonde DS18B20
1 x Capteur ultrason
1 x Adoucisseur Fleck 5800 SXT avec débitmètre intégré
ou
1 x Débitmètre externe (3/4 YF-B6 ou 1" YF-B10)

Le débitmètre intégré (3 fils, +12V, GND et Signal) de mon adoucisseur Fleck 5800 SXT est alimenté en 12V directement par la carte électronique de l’adoucisseur. Le débitmètre en direct sur l’ESP32 fonctionne, j’avais bien des valeurs mais il me fallait récupérer ces valeurs tout en le laissant connecté à l’adoucisseur.

Afin d’avoir un signal 3.3V pour l’ESP32, @SebByDocky m’a parlé du pont diviseur 3K et 7K, j’ai donc réalisé le montage, j’ai testé le pont avec une alim 12V et j’avais bien une tension de 3.3v en sortie, mais une fois mis en place ça ne fonctionnait pas, la valeur obtenu est inférieur à 1V :frowning:

La carte de l’adoucisseur délivre bien 12V quand le débitmètre n’est pas connecté mais quand il est connecté il n’y a que 10V environ, du coup, j’ai adapté le pont diviseur et là même résultat, valeur à peine supérieur à 1V, insuffisant pour l’ESP.

Alors j’y suis allez en tâtonnant et j’ai mis 2.7K en R1 et 9.1 en R2 et là j’obtient en moyenne 2.58V en sortie et ça fonctionne !!!
L’ESP détecte bien les impulsions du débitmètre de l’adoucisseur et ce dernier est effectivement bien plus précis, le moindre tirage est bien détecté, parfait pour détecter les éventuelles fuites lentes, cependant je n’explique pas ces valeurs, si vous avez des explication ça m’intéresse de comprendre :slight_smile:

Ensuite, afin d’avoir une valeur conforme, il faut calculer la valeur à renseigner en « lambda » dans ESPHOME :

  • Prévoir une bouteille ou un récipient de 1 litre
  • Ouvrir le robinet à moitié et remplir le récipient jusqu’à 1 litre
  • Relevé dans « total_dayli_energy » la différence entre la valeur avant avoir écoulé les 1 litres et après
  • (Mettre 3 décimales sur ce capteur le temps de l’étalonnage pour plus de précisions)
  • Ajouter la valeur obtenue dans le lambda du filtre du capteur

J’ai effectué cette étalonnage 10 fois, puis j’ai pris la moyenne, dans mon cas 0.62 pour 1 litre.

Maintenant que le débitmètre est fonctionnel , voici mon schéma général.

L’objectif est atteint et j’arrive à récupérer :

  • L’information du débitmètre, et donc la consommation d’eau général de l’habitation grâce à un utility meter (merci @SeByDocky)
  • L’état de la régénération à partir du relais inutilisé de l’adoucisseur, le relais s’active le temps de la régénération (voir notice installateur pour l’activer)
  • Le niveau de sel (contacteur avec un poids pour le moment, capteur à ultrason en route)
  • La température approximative de l’eau (via une sonde DS18B20 placé en contact avec un accord laiton) + delta de -2
  • La température de la pièce (via une autre sonde DS18B20)
  • J’ai aussi installé deux LED afin d’avoir un voyant pour l’état de la régénération et le niveau de sel

Matériel utilisé :

  • 1 x ESP32 Dev Kit V1 (NodeMCU WROOM-32)
  • 2 x Sonde DS18B20
  • 1 x Contacteur
  • 1 x Capteur ultrason (en route, remplacera le contacteur)
  • 2 x LED
  • 1 x Adoucisseur Fleck 5800 SXT avec débitmètre intégré

Fichier yaml de mon esp32 :


# Carte ESP

esphome:
  name: esp_adoucisseur
  platform: ESP32
  board: esp32dev

  
  
# Configuration du WIFI  

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


  # Point d'accès de secours
  
  ap:
    ssid: !secret ap_ssid
    password: !secret ap_password


# Activation du WEB Serveur

captive_portal:

web_server:
  port: 80


# Activation des Logs

logger:

# Activation de l'API Home Assistant

api:
  password: !secret api_password

# Activation de la mise à jour OTA

ota:
  password: !secret ota_password


time:
 
  - platform: homeassistant
    id: homeassistant_time
 
    on_time:
      - seconds: 57
        minutes: 59
        hours: 23
        then:  
          - sensor.template.publish:
              id: esp_adoucisseur_consommation_eau_hier_fleck
              state: !lambda return id(esp_adoucisseur_consommation_eau_du_jour_fleck).state;
              
# Activation sonde DS18B20 (D14)

dallas:
  - pin: 14

# Boutons
  
switch:
  - platform: restart
    name: "ESP Adoucisseur (Reboot)"


# LEDs  (D18 et D19)

  - platform: gpio
    pin: 18
    name: "ESP Adoucisseur (LED Bleu)"
    id: esp_adoucisseur_led_bleu
    restore_mode: RESTORE_DEFAULT_ON
    
  - platform: gpio
    pin: 19
    name: "ESP Adoucisseur (LED Rouge)"
    id: esp_adoucisseur_led_rouge
    restore_mode: RESTORE_DEFAULT_ON


# Capteurs numériques
  
sensor: 

# Puissance du Signal WIFI de l'ESP

  - platform: wifi_signal
    name: "ESP Adoucisseur (Puissance WIFI)"
    update_interval: 60s
 
# Durée de disponibilité de l'ESP
 
  - platform: uptime
    name: "ESP Adoucisseur (Uptime en seconde)"
    id: uptime_sec

# Sonde DS18B20 (D14)

  - platform: dallas
    address: 0x7AC0985441E67GF98
    name: "ESP Adoucisseur Temperature Eau"
    filters:
      - offset: -2.0  # Necessaire car la sonde est en contact avec le laiton et non directement avec l'eau
 
  - platform: dallas
    address: 0xBH7A6E241G64GF58
    name: "ESP Adoucisseur Temperature Local"
    

 
# Débimètre
    
  - platform: pulse_counter
    id: debimetre_fleck
    pin: GPIO27
    name: "ESP Adoucisseur Débimètre Fleck"
    update_interval: 1s
    icon: mdi:water
    filters:
      - lambda: return (x / 0.62); # Pour obtenir cette valeur, faire couler 1 litre d'eau robinet mi-ouvert et relevé la valeur de du capteur "total_daily_energy" 
    unit_of_measurement: "l/hr"

 
# Consommation Total d'Eau Journalière
 

  - platform: total_daily_energy
    name: "ESP Adoucisseur Consommation Eau du Jour Fleck"
    power_id: debimetre_fleck
    unit_of_measurement: "l"
    accuracy_decimals: 2 # mettre à 3 pour l'étalonnage
    id: esp_adoucisseur_consommation_eau_du_jour_fleck
 
# Consommation Total d'Eau de la Veille 
    
  - platform: template
    name: "ESP Adoucisseur Consommation Eau Hier Fleck"
    id: esp_adoucisseur_consommation_eau_hier_fleck
    unit_of_measurement: "l"
    accuracy_decimals: 2
    icon: mdi:water
    update_interval: 10s 
 
# Capteur Binaires

binary_sensor:

# Statut de l'ESP

  - platform: status
    name: "ESP Adoucisseur (Statut)" 
    
    
# Entrée pour le statut de la régénération (D4)

  - platform: gpio
    name: "ESP Adoucisseur (Régénération)"
    pin:
      number: 4
      inverted: True
      mode: INPUT_PULLUP    
    on_press:
      then:
        - switch.turn_on: esp_adoucisseur_led_rouge 
    on_release:
      then:
        - switch.turn_off: esp_adoucisseur_led_rouge
        
# Entrée pour le niveau du sel (D5)      
      
  - platform: gpio
    name: "ESP Adoucisseur (Niveau Sel)" 
    pin:
      number: 5
      inverted: True
      mode: INPUT_PULLUP
    on_press:
      then:
        - switch.turn_on: esp_adoucisseur_led_bleu 
    on_release:
      then:
        - switch.turn_off: esp_adoucisseur_led_bleu 
        
text_sensor:
  - platform: template
    name: "Esp Adoucisseur (Uptime)"
    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) +" Jours, " + String(hours) +" h, " + String(minutes) +" m, "+ String(seconds) +" s").c_str() };
    icon: mdi:clock-start
    update_interval: 113s
    



utility_meter.yaml (pour avoir le comptage par semaine, mois, année ) :

utility_meter:

#Compteur dernière heure
  eau_consommation_heure:
    source: sensor.esp_adoucisseur_consommation_eau_du_jour_fleck
    cycle: hourly

#Compteur journalier
  eau_consommation_jour:
    source: sensor.esp_adoucisseur_consommation_eau_du_jour_fleck
    cycle: daily

#Compteur semaine
  eau_consommation_semaine:
    source: sensor.esp_adoucisseur_consommation_eau_du_jour_fleck
    cycle: weekly
    
#Compteur mensuel
  eau_consommation_mois:
    source: sensor.esp_adoucisseur_consommation_eau_du_jour_fleck
    cycle: monthly
    
#Compteur annuel
  eau_consommation_annee:
    source: sensor.esp_adoucisseur_consommation_eau_du_jour_fleck
    cycle: yearly
    

Rendu Lovelace :

Prochaine étape, mettre des résistances sur les LEDs (il parait qu’il en faut) et surtout pouvoir savoir à l’avance quand l’adoucisseur va se régénérer, je vais créer un nouveau post pour ce sujet car là je bloque sur un point.

Bonne bidouille :slight_smile:

Source d’inspiration (merci @SeByDocky) :

https://www.youtube.com/watch?v=o_D95vliSd4&list=WL&index=5&t=1156s

4 « J'aime »

Heureux que ca marche :slight_smile:

Effectivement, bizarre que tu aies eu 1V après le premier pont diviseur… Bon après, au moins de risque de griller l’ESP32. Par contre, il y avait peut être un moyen de mettre un gain sur la pin pour ramener entre [0-3V3]. En tout, ta solution fonctionne nickel

Ouaip, je pige pas trop non plus mais bon, l’essentiel c’est que ça fonctionne :slight_smile:

Merci en tout cas :wink:

Bonjour,
J’ai reçu mon capteur ultrason (HC-SR04) pour le niveau de sel alors une petite update du code de l’ESP est nécessaire.

sensor:

  - platform: ultrasonic
    id: capteur_ultrason  
    trigger_pin: GPIO18
    echo_pin: GPIO19
    name: "ESP Adoucisseur (Niveau Sel)"
    update_interval: 60s
    filters:
      filter_out: nan

binary_sensor:

  - platform: template
    name: "ESP Adoucisseur (Statut Sel)"  
    device_class: safety
    lambda: |-
      if (id(capteur_ultrason).state > 0.4) {
        // Manque de sel
        return true;
      } else {
        // Sel OK
        return false;
      } 
    on_press:
      then:
        - switch.turn_on: esp_adoucisseur_led_bleu # La LED s'allumera quand le niveau de sel sera faible
    on_release:
      then:
        - switch.turn_off: esp_adoucisseur_led_bleu # La LED s'allumera quand le niveau de sel sera ok

Voila, lorsque le niveau de sel sera en dessous de 40cm la LED bleu mise en place s’allumera et le capteur binaire passera à ON, il reste plus qu’a faire un automatisme HA pour une notification :wink:

bonjour
Je dispose d’un adoucisseur type prestige bio. celui ci est équipé d’un débitmètre a ILS;
La tension mesurée entre les 2 bornes est de 4 V environ. celle chute à 0 régulièrement des qu’il détecte du flux d’eau.
Je pensais pouvoir réutiliser un circuit destiné initialement à la teleinfo Linky en branchant l’entrée de l’optocoupleur en parallèle sur le débitmètre.
Malheureusement la tension chute à presque 0 V. donc l’entrée de ce débitmètre se fait à très haute impédance et la charge du circuit de l’optocoupleur effondre la tension.
Je pourrais entrer directement sur un GPIO de l’ESP32 avec un petit pont diviseur mais je crains de perturber l’électronique de l’adoucisseur.

Un conseil dans ce cas d’utilisation ?

Merci d’avance
Cdlt
Philippe

Salut,

Techniquement je ne suis pas assez caller pour répondre mais personnellement je testerai dans un premier temps uniquement le debimetre directement vie une entrée de l’ESP pour voir comment ça se comporte.

Dans mon cas la tension variait également un peu dans tous les sens.

Oui c’est ce que je vais faire .
J’ai tenté de shunter loptocoupleur et d’attaquer directement le BS170 via des résistances de 1Mohms mais le mosfet se comporte comme un court circuit devant de telles résistances ! Et il voit toujours 0 volts
Prochaine étape …. Directement sur l’entrée De lesp32
Phil

Édit: il y a des résistances de pull up et pull down de l’ordre de 50K sur les entrées . Donc ça ne fonctionnera pas car déjà avec 100 k, la tension aux bornes du débitmètre s’effondre .

Je n’y coupe pas d’ajouter une porte logique à haute impédance d’entrée ……

Après un 3ème BS170, ça fonctionne
reste a utiliser maintenant

Bonjour,

Je viens d’installer un adoucisseur et j’aimerais bien partir sur un montage similaire au tien…

Est-ce que c’est possible d’avoir des photos de ton installation?
Est-ce que tu peux apporter des précisions sur la partie « relais régénération »? Tu utilise quel matériel exactement? J’ai du mal à saisir le fonctionnement…

Et pour ce qui est des LED, si je comprends bien:
La bleue pour avoir une idication visuel du niveau de sel
La rouge sert à quoi, dans ton installation?

Merci beaucoup pour le partage!

Honnêtement j’ai arrêté d’utiliser cette solution pour plusieurs raison :
C’est intrusif au niveau de l’adoucisseur
La précision est approximative
Pendant la régénération, le débitmètre est court-circuite !
J’utilise maintenant directement l’information venant du compteur

https://forum.hacf.fr/t/une-solution-complete-de-recuperation-des-donnees-eau-gaz-et-electricite/6507

Amitiés
Philippe

Salut, pas possible pour les photos, mon ESP est maintenant encastré, de toute façon il n’y a pas grand chose à voir, le schéma est là pour ça.

Concernant le relais de régénération, j’avais indiqué :

  • L’état de la régénération à partir du relais inutilisé de l’adoucisseur, le relais s’active le temps de la régénération (voir notice installateur pour l’activer)

Cela signifie que sur mon adoucisseur il y a un relais inutilisé qui peut être activé via sa configuration :wink:

Concernant la LED rouge, l’utilité est indiqué dans le code :

# Entrée pour le statut de la régénération (D4)

  - platform: gpio
    name: "ESP Adoucisseur (Régénération)"
    pin:
      number: 4
      inverted: True
      mode: INPUT_PULLUP    
    on_press:
      then:
        - switch.turn_on: esp_adoucisseur_led_rouge 
    on_release:
      then:
        - switch.turn_off: esp_adoucisseur_led_rouge

Bon bidouillage :wink:

Bonjour, petit retour après plusieurs mois d’utilisation.

Concernant la fiabilité :

  • Depuis la mise en service tout fonctionne bien et aucun problème particulier avec l’adoucisseur ou encore le capteur à ultrason, sachant que le capteur à ultrason est le modèle le plus basique, non étanche, j’ai sont évolution en stock au cas où.

  • Le niveau de Sel est bien retranscris, j’ai juste réduit « update_interval » à 60 minutes car il est inutile de mesurer le niveau de Sel toutes les minutes.

  • Concernant le débitmètre, avec une erreur d’environ 50L sur 3200L, je suis jusqu’à présent correctement informé que mon adoucisseur va se régénérer le lendemain à 11h ce qui permet de prévoir de ne pas mettre en route la machine à laver ou le lave vaisselle.

Seul problème depuis quelques jours mais pas lié directement à l’adoucisseur, les deux sondes Dallas DS18B20 fonctionnent aléatoirement, un coup l’une, un coup l’autre, peut être lié à une MAJ de ESPHOME et que la conf est à revoir, ou bien les résistantes ou les sondes HS, pour le moment je n’ai pas creusé car cette fonction était optionnelle, à voir :wink:

A l’usage nous apprécions :

  • Les diodes permettant de connaitre le statut de l’adoucisseur en complément des notifications sur mobiles.
  • Avoir un suivi journalier de la consommation d’eau.

Evolution depuis le tuto :

J’ai intégré un tout petit écran OLED (avec un poussoir pour l’allumer et/ou l’éteindre) afin d’afficher quelques informations, comme :

  • Date de la dernière régénération
  • Consommation restante avant régénération
  • Le niveau de Sel

Cela évite de sortir son smartphone devant l’adoucisseur pour avoir ces infos.

En passant, je reste toujours bleuffé par l’ESP32 et ces possibilités, des projets plein la tête :slight_smile:
Voilà, si vous avez des questions n’hésitez pas.

2 « J'aime »

Bonjour, merci pour ce beau projet. As-tu un retour d’expérience à faire plus d’un an après, des choses que tu aurais modifié ? Un bout de configuration à partager :slight_smile:

1 « J'aime »

Bonjour et merci pour le partage.

Mon adoucisseur est de 2006, je ne pense pas qu’il soit compatible, je ne vois même pas de débitmètre dessus. C’est un North Star, j’ai un petit espoir car il est géré électroniquement il faut que je creuse.

Est ce que cette pièce est le connecteur du débitmètre ?

image

J’ai trois fils dessus, rouge, noir et blanc.

C’est ceux là qui renverraient le signal d’eau consommée?

A+ Philippe

@Antigrav Bonjour, depuis mon dernier message, aucune évolution, tout fonctionne parfaitement, c’est devenu transparent :wink:

@PhilippeLrq Bonjour, désolé je ne sais pas, il faut tester mais déjà si il y 3 fils c’est bon signe.

1 « J'aime »

Merci Xek, je teste bêtement au metrix? c’est assez lent pour être visible?

A+

Philippe

oui, un simple multimètre :wink:

Bonjour,
Merci pour le tuto, j’ai pu faire l’installation sur un adoucisseur équipé d’un débimètre associé à un bloc FLECK 5600.
La tension entre les bornes GND et + du débitmètre est pour ma part de 18 V.
La tension entre les bornes GND et Signal quand je tire de l’eau est d’environ 5 V, je ne comprend pas trop l’écart par rapport à la tension d’alimentation du débimètre.
J’ai donc adapté le pont diviseur pour avoir environ 2,6 V en entrée de l’ESP 32, cela à l’air de bien fonctionner; à vérifier sur le long terme.