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
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
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
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
Source d’inspiration (merci @SeByDocky) :
https://www.youtube.com/watch?v=o_D95vliSd4&list=WL&index=5&t=1156s