Voilà, je t’ai mis le code de mon ESP.
J’ai enlevé la partie gestion de mon adoucisseur pour ne laisser que la partie comptage eau froide et les sensor facultatif (wifi, restart, durée,etc…)
Dis-moi, si c’est bon, mais je ne pourrais te répondre que ce soir tard ou demain.
# ESPHOME ESP1 WATER
# Date: 24072024_V1
esphome:
name: "esphome-esp1-water"
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: !secret api_key
ota:
- platform: esphome
password: !secret ota_password
# Enable Web server (optional).
web_server:
port: 80
auth:
username: !secret auth_login
password: !secret auth_password
#############################
# Wifi #
#############################
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# ...
manual_ip:
# Set this to the IP of the ESP
static_ip: !secret ip_esp1
# 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: !secret ap_ssid_esp1
password: !secret ap_password
######################################################
# Les Lignes 1 à 50 sont à adapter a ta configuration
######################################################
captive_portal:
############################
# Device Specific Config #
############################
# Name device mask
substitutions:
name: Compteur
friendly_name2: "Compteur EF"
friendly_name5: "ESP Compteur EF"
globals:
- id: ef_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 comptage impulsion eau froide
binary_sensor:
##############
# EAU FROIDE #
##############
- platform: gpio
pin:
number: GPIO32
allow_other_uses: true
mode: INPUT_PULLUP
inverted: True
filters:
- delayed_on: 50ms
- delayed_off: 50ms
name: "${friendly_name2} 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);
## Status ESP connexion
- platform: status
name: ${friendly_name5} status
#####################################################
# sensor #
#####################################################
sensor:
#####################################################
# EAU FROIDE #
# Débit d'eau instantané (0 après 10s) #
# Ne pas utiliser pour comptage (comptage erroné) #
#####################################################
- platform: pulse_meter
name: "${friendly_name2} 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
###########################################
# Sensors with general information #
###########################################
## Signal Wifi
- platform: wifi_signal
name: ${friendly_name5} Wifi signal
update_interval: 10min
## ESP Durée fonctionnement
- platform: uptime
name: ${friendly_name5} uptime
update_interval: 10min
id: esp1_uptime_sec
###########################################
# SWITCH #
###########################################
switch:
## reboot esp
- platform: restart
name: ${friendly_name5} restart
###########################################
# Text Sensor #
###########################################
# Transformation des secondes en jours
text_sensor:
- platform: template
name: ${friendly_name5} Allumé depuis (j)
lambda: |-
int seconds = (id(esp1_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: 30min
# Info Wifi IP
- platform: wifi_info
ip_address:
name: "${friendly_name5} IP"
update_interval: 60min
#####################################
# END #
#####################################
Encore merci pour ton code, cela fonctionne très bien. Le seul problème maintenant, c’est le redémarrage intempestif de mon ESP32 qui fait que je perds parfois une minute parfois plusieurs heures de données pourtant ma box est à 4m de l’esp. Je ne comprends pas pourquoi j’ai ces déconnexions. Y aurait moyen de l’empécher de redémarrer quand l’esp perd la connexion wifi ?
GPIO 32 comme toi et GRND. Alim de 2A. Câblage ok et fils bien serrés. Je ne vois pas ce qui déconne. Je vais essayer de passer sur ESP ethernet pour régler le problème de connexion
Bonjour,
Je ne me suis pas connecté depuis un moment au forum HACF.
Après avoir installé 4 panneaux solaires je me suis intéressé à ma consommation et production électrique, puis à ma consommation de gaz (gazpar). Je découvre aujourd’hui 24 octobre 2024 ce fil de discussion sur la consommation d’eau. Est-ce que l’article d’Argonaute est à jour avec notamment les indications de Pascal ? Où peut-on se procurer, en ce moment, le compteur Granola 1/4l ? J’ai commandé l’ESP32 chez AZ-Delivery. Pour la pose du compteur il faut que j’en parle à mon plombier !!
Salut,
Pour information, suite aux retours d’un certain nombre de personnes et après différents tests, j’ai mis à jour l’article : le calcul de la consommation utilisant un pulse_meter a été remplacé par la proposition de code de @pascal_ha. Un incrément est directement fait dans le code à chaque impulsion détectée.
Merci à lui pour cette proposition pertinente, qui éviter des décomptes fantômes en cas de faibles débits.
Bonjour @Argonaute
Merci de la modification de ton article. Comme mon plombier n’est pas encore passé pour installer le compteur Gioanola mais comme j’ai déjà créé mon esp-eau sur un esp32 et qu’il est connecté au wifi, est-ce qu’il suffit que j’édite mon esp-eau et que je remplace le code existant par le nouveau code ?? Rien d’autre à modifier ?
J’ai aussi sur un autre esp32 créé un esp-puits pour mesurer la production d’eau venant de mon puits et qui est GRATUITE. Le « compteur » est à effet hall qui lui, en principe, mesure 1L par impulsion, donc j’en tiendrai compte dans le code.
J’ai fait imprimer 3D deux boitiers un bleu pour l’esp-eau et un gris pour l’esp-puits.
Je te tiens au courant quand l’installation de ces 2 esp sera faite.
Mais je précise que le code n’est pas de moi, je l’ai trouvé je ne sais plus ou…et je ne sais plus de qui
J’ai juste extrait la partie du code qu’il me fallait et adapté a mon besoin.
Oui, tu peux juste copier-coller. Les variables générées sont les mêmes.
J’ai rajouté dans l’article une petite mention précisant ce qu’il faut modifier pour un compteur avec 1 pulse / litre.
Tu seras donc beta testeur de l’article modifié (bon j’ai testé chez moi avant…)
Bonjour Argonaute, excellente gestion de l’eau !
N’ayant pas encore reçu le compteur idoine, je fais les tests avec un micro-switch manipulé qui me remonte bien 0.25l par impulsion.
Toutes les valeurs remontent correctement, j’ai bien dans HA (affiché dans une fenêtre dédiée) toutes les valeurs tel que décrit dans l’article.
Par contre je bute sur le point « détecter les fuites importantes ».
J’ai tenté de copier le code indiqué pour créer le sensor dans configuration.yaml, sans succès, je ne retrouve pas ce sensor.
Et je ne trouve pas d’autre fichier yaml où insérer ce code …
En farfouillant un peu, j’ai trouvé qu’on pouvait maintenant créer dans HA un sensor type history_stats par le menu Paramètres~Entrées~Créer une entrée~type HistoryStats.
Ceci ouvre une fenêtre dans laquelle indiquer tous les paramètres repris dans le code donné.
Mais je ne trouve toujours pas le sensor demandé.
J’ai contrôlé les formules qui sont correctes et donnent bien un délai de 1 heure.
Lorsque j’interroge Paramètres~Entrées, je vois bien le sensor mais avec une erreur: (!) en début de ligne.
Je peux envoyer un printscreen de l’écran si nécessaire.
Voilà, là je sèche, le sensor n’est pas créé …
Bon, ce n’est pas d’une importance capitale, mais ce serait bien si je pouvais résoudre ce souci et surtout trouver le pourquoi …
Bonjour @YvMa57 mais aussi @Argonaute et @pascal_ha qui suivent ce sujet.
J’ai deux esp32 esp-eau sur compteur Gioanola et esp-puits sur compteur effet hall
mais mon plombier n’étant toujours pas passé je fais mes essais ainsi :
sur esp-eau avec un magnet de frigo sur le capteur destiné à être enfilé sur le compteur
sur esp-puits en soufflant fort dans le « compteur »
J’ai créé ceci dans le configuration.yaml sous sensor:
# Ratio d'usage de l'eau sur la dernière heure
- platform: 'history_stats'
name: 'Ratio usage eau froide'
unique_id: 'eau_froide_ratio_usage'
entity_id: binary_sensor.eau_froide_tirage_actif
state: 'on'
type: ratio
start: "{{ now() - timedelta(hours=1) }}"
end: "{{ now() }}"
# Ratio d'usage de l'eau du puits sur la dernière heure
- platform: 'history_stats'
name: 'Ratio usage eau du puits'
unique_id: 'eau_puits_ratio_usage'
entity_id: binary_sensor.eau_puits_tirage_actif
state: 'on'
type: ratio
start: "{{ now() - timedelta(hours=1) }}"
end: "{{ now() }}"
Et la copie d’écran de la partie « eau » de mon lovelace. Je n’ai mis que 4 tirages dans la carte Logbook au lieu de 50. Le -114L pour l’eau froide vient de « consommation eau froide annuel » que j’ai supprimé et recréé en « eau froide annuel »
Bon ben voilà; tout fonctionne.
En fait je n’allais pas voir au bon endroit pour vérifier le présence du sensor !
Et il est bien crée, et fonctionne.
Désolé de vous avoir dérangé pour mon étourderie et merci de vos réactions.
Amicalement
N/B le compteur est arrivé ce matin, plus qu’à trouver un plombier car je n’ai pas l’outillage pour.