Intro
Dans un article précédent, je vous présentais un module de gestion de la filtration et traitement d’une piscine développé sous APP DAEMON. J’ai depuis, pour simplifier la mise en oeuvre, migré vers ESP Home. Je vous invite quand même à le parcourir, tout n’est pas à jeter.
Dans ce nouveau projet, j’ai développé une solution complète pour automatiser la gestion de ma piscine à l’aide d’un ESP32 programmé avec ESPHome. Ce système contrôle la filtration, la régulation du pH et du chlore, le niveau d’eau, le volet roulant, et même une protection hors gel, le tout intégré à Home Assistant. Voici les détails de cette réalisation, du matériel au code, pour ceux qui voudraient s’en inspirer !
Update:
- 28/08/2026:
- Alignement de l’article sur le code actuel (pH, chlore, appoint d’eau, couverture flottante, mesure de pression)
- Passage du calcul chlore en ppm au pilotage réel (Auto Volume / Auto ORP)
- Correction du facteur et de la durée max d’injection pH (50%, 380s)
- Correction des délais réels de la couverture flottante (1s, 20s) et ajout du mode « At_f »
- Correction du bug de seuil de pression (1.5 bar) et réactivation de la calibration du capteur
- 09/06/2025:
- Suppression des {‘$device_name} dans les définitions d’entités (simplification des noms)
- Séparation du module « mesure_pression » du module principal
- Ajout compteur de litres dans ph et chlore
- Mise à jour du schéma (Brochage ADS1115)
- 21/05/2025:
- refonte du programme: Séparation des fichiers ph, chlore, Appoint_eau, gestion volet. Cela permet de les installer uniquement si nécessaire.
- 18/05/2025:
- Intégration d’une fonction de conversion d’un int en HH:MM:SS
- Refonte de la régulation pH
- Refonte de l’injection Chlore
- Ajout d’un script de pilotage de la couverture flottante
Objectif du Projet
L’idée était de centraliser et d’automatiser toutes les fonctions essentielles de ma piscine (volume : 50 m³) :
- Filtration : adapter la durée en fonction de la température de l’eau, avec plusieurs modes (Palier, Classique, Abaque, Horaire).
- Régulation chimique : maintenir le pH et le chlore à des niveaux cibles via des pompes doseuses.
- Niveau d’eau : gérer l’appoint automatiquement avec une électrovanne.
- Volet roulant : ouverture/fermeture via relais.
- Sécurité : surveiller la pression du filtre, le dosage du chlore liquide, et activer un mode hors gel en hiver.
- Monitoring : notifications Telegram, journalisation locale des événements, et affichage local sur un écran LCD.
Le tout repose sur une carte ESP32 et un circuit imprimé maison pour simplifier les raccordements.
Matériel Utilisé
- Carte ESP32 : J’ai choisi une carte avec 8 relais intégrés, disponible sur AliExpress. Elle offre assez de sorties pour piloter la pompe de filtration, les pompes doseuses, l’électrovanne, et le volet.

- Circuit Imprimé Personnalisé : Conçu pour connecter facilement les capteurs (température, pH, pression) et les actionneurs via des borniers.
- Capteurs :
- Sonde Dallas DS18B20 (température eau).
- Un module mesure de ph EZO
- Une sonde pH EZO. J’utilise celle ci mais il existe des modèles compatibles industriels beaucoup plus chers et des modèles chinois beaucoup moins chers, c’est selon l’importance et le budget que vous accorderez à la fiabilité et la pérennité de la mesure.
- Un module d’isolation galvanique EZO.
- Sonde ORP EZO ou Ali Express.
- Capteur de pression ADS1115 (filtre).
- un module PZEM-004T 100A permettant de mesurer des courants de 0-100A sous une tension alternative de 80-260V.
- Détecteurs de niveau (LSH, LSL via SX1509). Voir article sur la mesure de niveau
- Actionneurs : Relais pour pompe filtration (12 m³/h), pompes doseuses (pH-, chlore), électrovanne eau, et volet roulant.
- Afficheur LCD 16×2 I2C : Pour un suivi local (pH, pression, température).
Conception du Circuit Imprimé
Pour éviter un câblage anarchique, j’ai conçu un PCB qui regroupe toutes les connexions nécessaires. Voici une vue du PCB final, conçu avec EasyEda et fabriqué par JLCPCB :

Le PCB inclut :
- Connecteurs pour capteurs : Borniers pour la sonde Dallas (température eau), les sondes EZO (pH et ORP), l’ADS1115 (pression), et les détecteurs de niveau (LSH, LSL).
- Interfaces de communication : I2C pour l’afficheur et les EZO, UART pour le PZEM-004T.
- Extension SX1509 : Pour gérer plus d’entrées/sorties (niveaux, LEDs).
- Alimentation : Régulateurs 12V/5V/3.3V pour alimenter l’ESP32 et les capteurs.
- Sorties vers les relais : Connecteurs pour piloter la pompe de filtration, les pompes doseuses, l’électrovanne, et le volet roulant.
- Connecteurs supplémentaires : Pour des extensions futures (ex. : capteur ORP).
Le PCB est étiqueté clairement (ex. : « PZEM-004T », « ADS1115 », « PH-EZO ») pour faciliter les raccordements. Les borniers à vis permettent de brancher/débrancher facilement les capteurs et actionneurs sans soudure. La conception a été finalisée le 25/07/2024, comme indiqué sur le PCB.
Le Gerber et la liste du matériel sont disponibles ici: https://github.com/remycrochon/domo.rem81/tree/main/extension_platine-relais_esp32
Schéma de Câblage
Pour mieux comprendre les connexions, voici le schéma de câblage réalisé sous Easyeda :
Au format EasyEDA:
Et le PCB au format EasyEDA
Au format PNG:

Le schéma montre :
- ESP32 : Cœur du système, connecté via GPIO aux capteurs et actionneurs.
- Capteurs :
- Sonde Dallas (GPIO16) pour la température de l’eau.
- EZO pH/ORP via I2C (SDA GPIO15, SCL GPIO22).
- ADS1115 (pression filtre) sur I2C.
- PZEM-004T (puissance) via UART (RX GPIO3, TX GPIO1).
- Détecteurs de niveau (LSH, LSL) via SX1509.
- Actionneurs :
- Relais pour la pompe de filtration (GPIO32), pompes doseuses (GPIO33, GPIO25), électrovanne (GPIO12), et volet roulant (GPIO27, GPIO14).
- Extensions :
- SX1509 pour gérer les entrées/sorties supplémentaires (niveaux, LEDs).
- Afficheur LCD 16×2 sur I2C.
- Alimentation : Régulateurs 12V/5V/3.3V pour l’ESP32 et les capteurs.
Ce schéma est essentiel pour comprendre comment tout est interconnecté et pour reproduire le projet.
Fonctionnement et Code ESPHome
Le programme ESPHome (ESP178) est structuré autour de plusieurs scripts et capteurs.
Le corps principal du programme gère les différents modes de filtration. Vous pouvez insérer ou pas les sous programmes suivants en commentant la ligne correspondante sous l’instruction « Includes »:
- packages:
- ph: !include pack_esp178/ph.yaml
- chlore: !include pack_esp178/chlore.yaml
- volet: !include pack_esp178/couverture_flottante.yaml
- appoint_eau: !include pack_esp178/appoint_eau.yaml
- hors_gel: !include pack_esp178/hors_gel.yaml
- mesure_elec: !include pack_esp178/mesure_elec.yaml
- mesure_pression: !include pack_esp178/mesure_pression.yaml

Les fichiers .yaml doivent stockés dans un sous_dossier de ESPhome, « pack_esp178 » dans mon cas.
Filtration :
Quatre modes de fonctionnement:
Palier : Durée fixée par paliers.
- la durée est calculée manuellement par rapport au volume de la piscine: Vol=9*4*1.4=50.4 m3
- et le débit de la pompe: Qppe Théorique=12m3/h -> retenu:12m3/h
- donc 1 cycle= 50.4/12=4.2h
- il faut filtrer au minimum:
- T°eau<10° = 1h de filtration (sécurité minimale, indépendante du calcul par cycle)
- 10°<T°eau<15° = 1 cycle = 4.2h => 4h
- 15°<T°eau<20° = 2 cycles = 8.4h => 8h
- 20°<T°eau<25° = 3 cycles = 12.6h => 12h
- 25°<T°eau = 3 ou 4 cycles = 12.6h => 12h
- T°eau>25° => 14h
Classique : Durée = température / 2 (min 5h, max 23h).
Solution largement. Exemple : À 20°C, durée = 10h.
Abaque : Durée calculée par une formule polynomiale cubique :

Horaire : Plage horaire fixe (ex. : hiver).
Régulation pH :
Dans ce chapitre, je vous explique comment j’ai mis en place un système intelligent pour ajuster automatiquement le pH en injectant un produit acidifiant, avec des notifications et une gestion fine des durées. L’objectif est de maintenir un pH optimal (généralement entre 7.2 et 7.6), essentiel pour le confort des baigneurs et l’efficacité du chlore.
Contexte et objectif
Ma piscine est équipée d’une pompe doseuse pour injecter un produit pH- (acidifiant) lorsque le pH mesuré dépasse la cible définie. Je récupère la valeur mesurée du pH via id(g_memoire_ph) et la cible via id(_ph_cible). L’idée est de calculer une durée d’injection proportionnelle à l’écart entre la mesure et la cible, en utilisant les caractéristiques de ma piscine (43,2 m³) et du produit pH Moins Ultra (0,2 l pour 0,1 unité de pH pour 10 m³). Le système s’active uniquement en mode automatique et lorsque la filtration est en marche.
La configuration ESPHome
Voici le script que j’ai intégré dans mon fichier ESPHome pour réguler le pH de manière précise et automatisée.
Vous trouverez le code complet fin d’article.
Ce script est appelé une fois par jour, à une heure unique et configurable via l’entité Heure Injection pH.
Fonctionnement détaillé
Ce script, exécuté en mode single, régule le pH de manière intelligente. Voici comment il opère étape par étape :
Condition d’activation
Le script se déclenche uniquement en mode Auto. Il vérifie si le pH mesuré (g_memoire_ph) dépasse la cible (_ph_cible) de plus de 0,1 unité (définie dans _ph_hysteresis), si la filtration est active, et qu’une temporisation de recirculation (flag_tempo_ppe_filtre) est bien écoulée, afin de laisser le temps à la mesure de pH de se stabiliser avant d’autoriser une injection.
Calcul de la durée d’injection
L’écart entre la mesure et la cible est calculé, et la durée d’injection est déterminée directement en fonction de cet écart, du volume de la piscine, et du débit de la pompe :
- Quantité nécessaire : On calcule la quantité de produit à injecter pour corriger l’écart total, en se basant sur les données du produit (0,2 l pour 0,1 unité de pH pour 10 m³). Pour ma piscine de 43,2 m³, cela représente 0,864 l pour 0,1 unité de pH.
- Durée théorique : On détermine le temps nécessaire pour injecter cette quantité, en fonction du débit de la pompe (
_debit_ppe_moins, par exemple 4,272 l/h, soit environ 1,187 ml/s). - Facteur de correction : Pour éviter une sur-correction, seule une fraction de l’écart est corrigée par cycle. Ce facteur est ajustable via un paramètre (
facteur_correction_ph), fixé par défaut à 50 %. - Limites : La durée est bornée par un maximum configurable (
duree_max_injection_phmoins), réglable entre 60 et 600 secondes et fixé par défaut à 380 secondes, pour éviter une surdose.
Conversion et affichage
Le temps calculé est converti en heures, minutes et secondes, puis affiché via un composant datetime (duree_injection_ph) pour une lecture facile dans Home Assistant.
Gestion de la pompe
Si une durée positive est calculée, la pompe (cde_ppe_ph_moins) s’active pour cette durée. Des notifications Telegram sont envoyées au début et à la fin de l’injection, avec les détails du pH mesuré, de la cible et de la durée. Si aucune action n’est requise, la pompe reste éteinte. Une sécurité complémentaire interrompt l’injection en cours si le pH mesuré repasse sous la cible avant la fin du cycle.
Logs et suivi
Des messages de log permettent de suivre les valeurs mesurées, les quantités calculées, le débit, le facteur de correction et la durée finale, facilitant le débogage.
Exemple pratique
Supposons que ma cible soit 7.4 et que le pH mesuré soit 8.0 (écart de 0.6) :
- Quantité nécessaire : (0,6 / 0,1) x 0,2 x (43,2 / 10) = 5,184 l (soit 5184 ml).
- Débit de la pompe : 4,272 l/h = 1,187 ml/s.
- Durée totale : 5184 / 1,187 = 4368 secondes (environ 73 minutes).
- Avec un facteur de correction de 50 % : 4368 x 0,5 = 2184 secondes, mais limité à 380 secondes (durée maximale par défaut).
- Résultat : La pompe s’active pendant 380 secondes, injectant environ 451 ml, et le processus se répète au prochain cycle jusqu’à atteindre la cible.
Conseils pour adapter cette solution
- Ajustez le facteur de correction : Modifiez
facteur_correction_ph(fixé par défaut à 50 %, par exemple passez à 70 % pour une correction plus rapide) selon la réactivité de votre produit pH-. - Vérifiez le débit : Assurez-vous que le débit de la pompe (
_debit_ppe_moins) est correct et ajustez-le si nécessaire. - Validez les mesures : Utilisez un kit d’analyse pour confirmer les ajustements et affinez si besoin.
Un dispositif similaire a été décrit dans ces articles :
- https://domo.rem81.com/index.php/2021/08/14/ha-gestion-piscine-5_regulation-du-ph/
- https://domo.rem81.com/index.php/2021/05/11/home-assistant-gestion-piscine-4_mesure-ph/
Injection Chlore :
L’objectif est de piloter précisément l’injection de chlore liquide (javel à 9.6%) via une pompe doseuse connectée, selon deux stratégies possibles : un volume cible à injecter chaque jour (mode « Auto Volume »), ou un asservissement proportionnel à la mesure ORP (mode « Auto ORP »). Voici comment j’ai procédé.
Contexte et objectif
Ma piscine est équipée d’une pompe doseuse connectée via ESPHome, qui injecte de la javel à 9.6% de chlore actif (96 g/L). Je voulais un système capable de calculer automatiquement le temps d’injection, soit en fonction d’un volume cible de chlore liquide à injecter chaque jour (mode « Auto Volume »), soit en fonction de l’écart par rapport à une consigne ORP en mV (mode « Auto ORP »), et du débit de la pompe. De plus, j’ai ajouté des fonctionnalités pour afficher le temps sous forme lisible (heures, minutes, secondes) et envoyer des notifications via Telegram.
La configuration ESPHome
Voici le script que j’ai intégré dans mon fichier ESPHome pour gérer l’injection de chlore. Ce script fonctionne dans différents modes (automatique, manuel forcé, ou arrêté forcé) et s’active uniquement lorsque la filtration est en marche.
Vous trouverez le code complet fin d’article.
Ce script est appelé une fois par jour, à une heure unique et configurable via l’entité Heure Injection Chlore.
Fonctionnement détaillé
Le script s’exécute dans un mode single, ce qui garantit qu’il ne se répète pas indéfiniment. Voici comment il fonctionne étape par étape :
Calcul du dosage :

Conversion du temps :
- Le temps calculé est converti en heures, minutes, et secondes, puis affiché via un composant datetime (duree_injection_chlore). Cela me permet de visualiser facilement la durée dans Home Assistant.
Gestion de la Pompe:
- En mode Auto, si un temps positif est calculé et que la filtration est en marche, la pompe (cde_ppe_chlore) s’active pour la durée calculée, et une notification Telegram est envoyée avec le temps d’injection.
- Si aucun temps n’est requis ou si la filtration est arrêtée, la pompe s’arrête.
- En mode Ma_f (manuel forcé), la pompe s’active tant que la filtration est en marche, quelle que soit la concentration.
- En mode At_f (arrêt forcé) ou si la filtration est désactivée, la pompe s’arrête automatiquement.
Logs et débogage
- Des messages de log sont générés à chaque étape (début du script, temps calculé, activation/arrêt de la pompe), avec des détails comme la quantité injectée et le temps. Cela me permet de suivre l’opération en temps réel.
Mesure de Pression:
- Le capteur de pression est relié à l’entrée N°0 (A0) du convertisseur Analogique ADS1115
- Le dispositif a été décrit dans cet article https://domo.rem81.com/index.php/2022/05/13/ha-gestion-piscine-7_mesure-de-pression/
Appoint d’Eau :
L’objectif ici est d’assurer automatiquement le maintien du niveau d’eau dans la piscine grâce à une électrovanne commandée par un ESP32 sous ESPHome, tout en prenant en compte les différents niveaux d’eau détectés par des sondes de niveau. Le tout fonctionne de manière autonome ou manuelle, avec un suivi des durées d’ouverture et une protection contre les défauts.
Le dispositif mis en oeuvre a été décrit dans cet article: https://domo.rem81.com/index.php/2021/04/02/home-assistant-gestion-piscine-1_mise-a-niveau-automatique/
Contexte et objectif
Ma piscine est équipée de deux sondes de niveau connectées à un module d’extension SX1509 (LSH = haut, LSL = bas), permettant de détecter quatre états : niveau haut, intermédiaire, bas, ou défaut (cas incohérent). Une électrovanne pilotée par un relais ESP32 se charge d’ajouter de l’eau quand nécessaire. L’objectif est de gérer l’appoint d’eau de manière fiable, avec une sécurité anti-débordement et une logique de fonctionnement automatique ou forcée.
Trois modes sont proposés via une entité select dans Home Assistant :
- Auto : Appoint automatique uniquement si la couverture est ouverte, sans défaut, et en fonction du niveau mesuré.
- Ma_f (manuel forcé) : Ouverture manuelle de l’électrovanne tant que ce mode est actif.
- At_f (arrêt forcé) : Blocage total de l’appoint d’eau, utile en hiver ou lors de maintenance.
La configuration ESPHome
Un script principal _regul_eau pilote l’ouverture/fermeture de l’électrovanne selon les niveaux d’eau détectés, les conditions de sécurité, et le mode choisi. Ce script peut être déclenché automatiquement ou via un bouton virtuel dans Home Assistant.
Un second script _calcul_niveau_eau, exécuté toutes les 5 secondes, analyse l’état des deux sondes pour déterminer précisément le niveau global de la piscine (haut, intermédiaire, bas ou défaut).
Un compteur duty_time mesure quotidiennement le temps d’ouverture de l’électrovanne, remis à zéro chaque nuit à minuit grâce à une synchronisation SNTP.
Vous trouverez le code complet fin d’article.
Fonctionnement détaillé
Analyse des niveaux d’eau
Les deux sondes permettent d’interpréter 4 états logiques :
- Niveau haut : LSH = ON, LSL = ON
- Niveau intermédiaire : LSH = OFF, LSL = ON
- Niveau bas : LSH = OFF, LSL = OFF
- Défaut : LSH = ON, LSL = OFF (état incohérent)
Chaque état est publié via un binary_sensor pour un affichage clair dans Home Assistant.
Régulation de l’eau
- En mode Auto :
- Si le niveau est bas ou intermédiaire, et que le volet est ouvert, l’électrovanne s’ouvre automatiquement, avec une coupure de sécurité au bout de 15 minutes si le niveau ne remonte pas, et une durée maximale absolue de 60 minutes dans tous les cas (deux timeouts de sécurité distincts).
- Deux déclenchements automatiques supplémentaires existent : à une seconde heure configurable (
Heure Appoint Eau Auto 2, 17h00 par défaut), et automatiquement quelques minutes après l’ouverture du volet. - Si le niveau est haut ou en défaut, la vanne est immédiatement fermée.
- Une sécurité renforcée surveille en continu les sondes incohérentes, un niveau haut persistant, une absence de montée du niveau, et le dépassement de la durée maximale, avec coupure automatique de la vanne et alerte Telegram en cas de défaut.
- Le tout est logué en détail (mode actif, état de la vanne, etc.).
- En mode Ma_f (manuel forcé) :
- L’électrovanne s’ouvre dès que ce mode est activé, quel que soit le niveau, tant que la filtration est en fonctionnement.
- En mode At_f (arrêt forcé) :
- La vanne reste fermée en toute circonstance.
Logs et surveillance
Chaque activation de la vanne est horodatée et consignée dans les logs. Le capteur duty_time permet de visualiser le temps d’ouverture cumulé sur la journée, un bon indicateur de fuite éventuelle ou de sur-remplissage.
Enfin, l’ensemble de cette logique est complètement intégrée dans Home Assistant avec affichage des niveaux, du mode actif, du bouton d’appoint manuel, et des durées de fonctionnement.
Fonctionnement Hors Gel : Protection Automatisée de la Piscine en Hiver
Afin de protéger le local technique et le circuit hydraulique de la piscine contre le gel, j’ai mis en place une fonction de hors gel intelligente dans ESPHome. Cette logique permet d’enclencher automatiquement la pompe de filtration en cas de température extérieure négative, selon deux seuils personnalisables.
Objectif
Lors de températures proches ou en dessous de zéro, le risque de gel dans les canalisations est réel, en particulier si l’eau est stagnante. La circulation de l’eau suffit généralement à empêcher ce phénomène. Plutôt que de laisser tourner la pompe en continu, j’ai opté pour un fonctionnement ponctuel conditionné par la température extérieure, avec des alertes Telegram à chaque déclenchement.
Principe de fonctionnement
Le fonctionnement repose sur deux seuils configurables depuis Home Assistant :
- Seuil 1 : en dessous duquel la pompe tourne pendant 15 minutes,
- Seuil 2 : en dessous duquel elle tourne pendant 30 minutes.
La logique est testée toutes les 15 minutes. Un flag interne empêche que plusieurs cycles ne soient lancés simultanément.
Intégration dans ESPHome
Vous trouverez le code complet fin d’article.
Notifications et suivi
À chaque déclenchement ou arrêt d’un cycle hors gel, une notification Telegram est envoyée. Cela me permet de suivre à distance l’activité hivernale de la piscine.
Automatisation de la couverture flottante
Dans ce chapitre je vous explique comment j’ai automatisé la gestion de la couverture flottante de ma piscine grâce à ESPHome. Cette couverture protège l’eau des impuretés, réduit l’évaporation et conserve la chaleur, mais l’ouvrir et la fermer manuellement peut être fastidieux. J’ai donc créé un système qui pilote automatiquement l’ouverture et la fermeture en fonction de l’heure et du mode de fonctionnement.
Pour information ma couverture flottante est un :https://www.abriblue.com/solutions/immax/
J’ai raccordé un contact NO des relais de commande d’ouverture et de fermeture en parallèle sur le boitier à clef fourni avec le volet.
Attention:
Ce n’est pas conforme de fermer un volet sans visuel, mais je le fais en connaissance de cause et je vous conseille de modifier les scripts de fermeture: Vous pouvez automatiser l’ouverture et déclencher la fermeture manuellement avec un visuel sur le volet
Contexte et objectif
Ma piscine est équipée d’une couverture flottante motorisée, contrôlée par deux interrupteurs : cde_volet_ouverture pour ouvrir et cde_volet_fermeture pour fermer. Je voulais automatiser ce processus selon deux modes :
- Mode « Horaire » : L’ouverture et la fermeture se font à des heures fixes, définies par
h_ouv_voleteth_ferm_volet. - Mode « Auto » : L’ouverture est déclenchée 15 minutes après le démarrage de la filtration (selon ses modes : « Horaire », « Palier », « Classique », ou « Abaque »), et la fermeture 30 minutes après la fin de la filtration — ces horaires calculés sont indépendants de
h_ouv_volet/h_ferm_volet, qui ne servent qu’au mode « Horaire ». - Mode « At_f » (arrêt forcé) : bloque tout mouvement automatique du volet, utile pour une intervention manuelle ou une maintenance.
De plus, j’ai ajouté un éclairage (cde_eclairage) qui s’allume après la fermeture pour des raisons de sécurité, et un script pour arrêter manuellement le mouvement si nécessaire. Par sécurité, l’ouverture et la fermeture sont également bloquées si les sondes de niveau d’eau signalent un défaut ou un niveau bas.
La configuration ESPHome
Vous trouverez le code complet fin d’article.
Fonctionnement détaillé
Ce script pilote la couverture flottante de manière intelligente, en fonction de l’heure et du mode choisi. Voici les étapes principales :
Vérification de l’heure :
- Le script utilise
sntp_timepour récupérer l’heure actuelle et s’assure qu’elle est valide. Des logs permettent de comparer l’heure actuelle avec les heures programmées pour l’ouverture (h_ouv_volet) et la fermeture (h_ferm_volet).
Mode « Horaire » :
- Si le mode est défini sur « Horaire », le script vérifie si l’heure actuelle correspond à l’heure d’ouverture ou de fermeture définie. Si c’est le cas, il exécute respectivement
script_ouv_voletouscript_ferm_volet.
Mode « Auto » :
- En mode « Auto », l’ouverture est déclenchée 15 minutes après l’heure de démarrage de la filtration (
h_debut), mais uniquement si la filtration est configurée dans un mode compatible (« Horaire », « Palier », « Classique », ou « Abaque »). - La fermeture est déclenchée 30 minutes après l’heure de fin de filtration (
h_fin), indépendamment deh_ferm_voletqui ne sert qu’en mode « Horaire ».
Scripts d’ouverture et de fermeture :
- Ouverture (
script_ouv_volet) : Si le niveau d’eau n’est pas en défaut, éteint la commande de fermeture, attend 1 seconde, active la commande d’ouverture pendant 1 seconde, puis l’éteint (impulsion relayée ensuite par le boîtier à clé du volet). - Fermeture (
script_ferm_volet) : Si le niveau d’eau n’est pas en défaut, éteint la commande d’ouverture, attend 1 seconde, active la commande de fermeture pendant 1 seconde puis l’éteint, puis allume l’éclairage pendant 20 secondes avant de l’éteindre. - Arrêt (
script_stop_volet) : Arrête les deux moteurs, effectue une petite impulsion de fermeture pour sécuriser, et éteint l’éclairage.
Exemple pratique
Imaginons que je configure mon système ainsi :
- Mode « Horaire ».
- Heure d’ouverture : 8h00 (
h_ouv_volet). - Heure de fermeture : 20h00 (
h_ferm_volet).
À 8h00 précises, le script script_ouv_volet s’exécute : une impulsion d’1 seconde déclenche l’ouverture de la couverture, laissant la piscine accessible. À 20h00, script_ferm_volet se déclenche : une impulsion d’1 seconde déclenche la fermeture, et l’éclairage s’allume pendant 20 secondes pour des raisons de sécurité. Si besoin, je peux arrêter manuellement avec script_stop_volet.
Conseils pour adapter cette solution
- Ajustez les durées : Modifiez les délais (impulsions d’1 seconde pour l’ouverture et la fermeture, 20 secondes pour l’éclairage) selon la vitesse de votre moteur.
- Ajoutez des notifications : Comme pour mes autres scripts, vous pouvez intégrer des messages Telegram pour être informé de chaque ouverture ou fermeture.
- Testez les modes : Essayez le mode « Auto » pour voir s’il convient à votre routine de filtration, et ajustez les heures si nécessaire.
- Ne pas reproduire la fermeture automatique
Monitoring :
- Rapports journaliers Telegram à 23h59 (filtration à 23:59:00, pH à 23:59:05, chlore à 23:59:40 — temps de filtration, conso, etc.).
- Alerte si la pression du filtre dépasse le seuil réglable
pression_max(1,5 bar dans la configuration actuelle), et suivi du dosage du chlore liquide.
Mesures Électriques : Surveillance de la Consommation de la Piscine
Afin de surveiller avec précision la consommation électrique de l’ensemble du local technique piscine (pompe de filtration, électrolyseur, régulation, etc.), j’ai intégré un module PZEM-004T (version TTL 100A) à mon ESP32. Ce module permet de mesurer en temps réel la tension, le courant, la puissance active, et l’énergie consommée.
Objectif et contexte
Mon objectif était de disposer d’un suivi précis de la consommation électrique de la piscine pour :
- Détecter un fonctionnement anormal (pompe bloquée, consommation excessive…),
- Calculer le coût réel de fonctionnement,
- Optimiser la planification de certaines tâches en fonction du tarif horaire de l’électricité.
Le PZEM est connecté au circuit principal d’alimentation de la piscine, et communique avec l’ESP32 via l’interface UART (RX/TX).
La configuration ESPHome
Vous trouverez le code complet fin d’article.
Fonctionnement et visualisation
Les valeurs mesurées sont mises à jour toutes les 30 secondes et affichées dans Home Assistant via ESPHome. Cela me permet de :
- Visualiser la puissance instantanée consommée,
- Accéder à l’historique de l’énergie consommée chaque jour.
Avantages
Cette mesure pourrait me permet, par exemple, de détecter rapidement un dysfonctionnement de la pompe de filtration, qui tourne à vide suite à un désamorçage. Le courant absorbé étant anormalement bas, une alerte pourrait être générée, évitant un fonctionnement prolongé inutile.
Ce n’est qu’une suggestion car inutile dans mon cas.
Code ESPHOME
Programme Principal:
Pour information, les codes ci-dessous ne sont certainement pas à jour, de ce fait vous les trouverez en téléchargement sur:
La dernière version du programme principal est disponible ici:
https://github.com/remycrochon/home-assistant/blob/master/esphome/esp178-piscine.yaml
Et les sous programmes ici:
https://github.com/remycrochon/home-assistant/tree/master/esphome/pack_esp178
Intégration dans Home Assistant
L’ESP178 s’intègre via l’API ESPHome. Dans HA, j’ai créé un dashboard avec :
- Graphiques : pH, température, pression, puissance.
- Réglages : consignes pH/chlore, modes filtration, seuils hors gel.
- Notifications Telegram via un text_sensor dédié.
Notification avec Telegram
N’ayant pas trouver de programme de notification « Télégram » fonctionel dans ESP Home, j’utilise ma notification telegram fonctionnelle dans HA. Un automatisme surveille un changement de valeur dans le « sensor.esp178_message_notif_telegram » et notifie en cas de chanement de valeur.
alias: Notification message Telegram de ESP178
description: " Notifie sur Telegram le message mis à jour par l'ESP178 Piscine"
mode: single
triggers:
- entity_id:
- sensor.esp178_message_notif_telegram
for:
hours: 0
minutes: 0
seconds: 0
trigger: state
conditions:
- condition: not
conditions:
- condition: or
conditions:
- condition: state
entity_id: sensor.esp178_message_notif_telegram
state: unavailable
- condition: state
entity_id: sensor.esp178_message_notif_telegram
state: unknown
actions:
- data:
message: "{{states('sensor.esp178_message_notif_telegram')}}"
title: Message ESP178!!!
action: notify.telegram
Exemple de carte HA

type: custom:pool-monitor-card
display:
compact: false
show_names: true
show_labels: true
show_last_updated: false
show_icons: true
show_units: true
gradient: true
language: fr
colors:
normal_color: "#00b894"
low_color: "#fdcb6e"
warn_color: "#e17055"
cool_color: "#00BFFF"
marker_color: "#000000"
hi_low_color: "#00000099"
sensors:
temperature:
- entity: sensor.esp178_temperature_eau
setpoint: 30
step: 3
ph:
- entity: sensor.esp178_ph_ezo
setpoint: 7.2
step: 0.2
free_chlorine:
- entity: sensor.my_sampling_point_pl_chlorine_free
setpoint: 2
chlorine_step: 1
total_chlorine:
- entity: sensor.my_sampling_point_pl_chlorine_total
setpoint: 3
step: 1
cya:
- entity: sensor.my_sampling_point_pl_cyanuric_acid
setpoint: 37.5
step: 12.5
alkalinity:
- entity: sensor.my_sampling_point_pl_alkalinity
setpoint: 90
step: 30
pressure:
- entity: sensor.esp178_pression_filtre
unit: bar
setpoint: 1
step: 1
product_weight:
- entity: sensor.esp129_poids_ph_moins
Vous pouvez utiliser « auto-entites », vous visualisez ainsi toutes les entités contenant « ESP178 » dans mon cas (c’est le nom de mon ESP).
type: custom:auto-entities
card:
type: entities
show_header_toggle: false
title: ESP 178
filter:
include:
- entity_id: "*esp178*"
options: {}
exclude: []
sort:
method: entity_id
Améliorations Possibles
- Ajouter une sonde ORP calibrée pour une régulation chlore plus précise.
- Intégrer une prévision météo pour ajuster la filtration.
- Tester le mode Ethernet (commenté dans le code) pour plus de stabilité.
Conclusion
Ce système offre une gestion autonome et personnalisable de ma piscine, avec un coût matériel raisonnable (< 100€ hors PCB). Le PCB maison et le schéma de câblage ont grandement simplifié l’installation et la maintenance. Le code est perfectible, mais il répond déjà à mes besoins. Si vous voulez les fichiers PCB, le schéma EasyEda, ou des précisions, laissez un commentaire !
Liste des publications en lien avec cet article:
- Filtration avec ESPHome et ESP32
- Filtration avec « AppDaemon »
- Filtration avec « Pool Pump Manager«
- Mesure de puissance électrique
- Mise à niveau automatique
- Mesure du pH
- Régulation du Ph
- Mise Hors Gel
- Mesure de pression
- Mesure consommation d’eau
- Panneau de contrôle avec un ESP32
- Analyse de l’eau avec PoolLAB2.0

Hello, j’apprécie ton article. J’aimerai me baser sur ton tuto pour l’utiliser chez moi avec un électrolyseur. pouvons nous en discuter ?
Bonjour, oui si je peux t’aider pourquoi pas.
Bonjour
Merci pour ce très beau post je voudrais bien le PCB
Bonjour et merci.
J’ai mis à jour l’article avec les fichiers Gerber, BOM et EasyEDA.
Bonne continuation
Bonjour,
Serait-il possible de m’envoyer les fichiers PCB correspondants ainsi qu’une liste complète des composants nécessaires à la réalisation ?
J’ai beaucoup apprécié votre projet et souhaiterais le reproduire moi-même.
Avec mes remerciements anticipés,
Bonjour et merci.
J’ai mis à jour l’article avec les fichiers Gerber, BOM et EasyEDA.
Bonne continuation
Je vous remercie beaucoup pour votre réactivité. Vous avez fait un excellent travail, continuez ainsi !
Bonsoir, serait-il possible d’avoir aussi une traduction du code YAML en anglais afin de mieux comprendre le code ?
Bonjour, vous pouvez demander la traduction des commentraires à chatgpt, j’ai essayé il le fait sans problème. Slts
Bonjour,
très beau projet , impressionnant!!!
Est il possible d’avoir les les fichiers PCB, le schéma EasyEda
merci
Cordialement
Bonjour, les liens de téléchargements sont dispo dans le chapitre « conception du ci ». Slts
Bravo ! je voulais créer un projet comme celui là, mais ceci est déjà fait et TOP. il a surtout les avantages que je voulais : esp32 sous esphome (hop l’OTA). permet d’être autonome grace au programme interne, mais utilisable avec/via/sous HA !
je salue ce beau travail.
on pourrait utiliser des sorties supplémentaires pour commander une cellule d’électrolyseur. Je viens de voir sur FB un utilisateur faire une mini version, juste avec un pont H et un arduino mini pro (oui oui). en fait, un peu de pwm, gestion de temps, et inversion de polarité via pont H, et hop, un electrolyseur. …
Si je dois me lancer dans ce projet (je ne vais quand même pas espérer que mon aquarite lite tombe en panne), je proposerai de participer à l’amélioration (suis electronicien).
Encore bravo, je bookmarque ce beau travail et merci pour le partage !!!!
Bonjour et merci pour vos encouragements. J’ai egalement vu l’article sur l’electrolyseur, ce serait hyper simple à controler avec EspHome, mais je traite au Chlore liquide donc c’est pas pour moi. Je travaille actuellement sur un nouveau PCB qui embarquerait les relais et un esp32 eth01. de plus j’ai amélioré le code générale, je publirai une mise à jour prochainement. Slts
En fait, j’utilise l’électrolyseur (via un aquarite), mais j’ai ajouté une pompe chlore (via HA), car sous 15°, l’électrolyseur ne fonctionne pas. Et pour mon hivernage, après plusieurs années de « laisse tout comma ça tu verras, c’est bon », j’ai retrouvé l’eau verdâtre…. que l’hivernage soit passif ou actif… donc j’ai ajouté une petite régu de la pompe chlore via HA (et la valeur orp de l’aquarite), pour maintenir le niveau de chlore lors d’un hivernage actif. Et là, eau cristalline à l’ouverture ! Eureka. Donc je pense que les 2 (chlore/électrolyseur) peuvent être complémentaires (comme chez moi). Cela permet aussi de faire un « mini chlore choc » (à la pompe chlore) quand la cellule ne suit pas ou qu’on a eu bcp de monde à la piscine.
Ton projet est vraiment enthousiasmant ! mon install est fonctionnelle (ma piscine n’a que 5 and et je n’y connaissait rien au départ), et j’ai (PRESQUE) envie de tout virer pour ceci !
Bonjour et merci pour le job !
j’utilise ta version daemonapp depuis 2 ans et j’en suis ravi mais j’aime le fait que ton nouveau projet rend autonome l’esp32 meme si HA est HS.
J’ai une question sur le PCB, tu dis utiliser une platine ESP32 avec relais. Mais ton PCB semble ne pas être compatible avec cette platine. Tu sais dire ce qu’il en est ?
Merci,
Yann
Bonsoir, je viens d’actualiser le lien vers une carte 8 relais compatible avec mon PCB. https://fr.aliexpress.com/item/1005003999413945.html?spm=a2g0o.productlist.main.1.4a111bceOzplYO&algo_pvid=4613c13a-4ea3-4ac3-ac96-385655633748&algo_exp_id=4613c13a-4ea3-4ac3-ac96-385655633748-0&pdp_ext_f=%7B%22order%22%3A%2265%22%2C%22eval%22%3A%221%22%7D&pdp_npi=4%40dis%21EUR%2115.29%2115.29%21%21%2117.20%2117.20%21%40211b876717506132233944049ee6a7%2112000033558811727%21sea%21FR%21833459399%21X&curPageLogUid=ecgq83LwQUCD&utparam-url=scene%3Asearch%7Cquery_from%3A
Pour info je travaille sur un PCB complet avec 7 relais, 4 ETOR, 4eANA et W32-ETH01
Slts
Bonsoir,
Tout d’abord un énorme bravo et merci pour ton travail. Je suis partagé entre la joie de trouver un projet aussi abouti et la déception de ne pas le faire vraiment moi-même… Bref, en cherchant des informations vous me coupez l’herbe sous le pied ! 🙂
Enfin bref.
Concernant le prochain PCB, que va-t-il apporter comme nouveautés ? des prédispositions à de futures évolutions ? Ou c’est « seulement » pour tout regrouper sur une seule et même carte ?
Merci,
Rémy
Bonjour et merci pour votre commentaire. l’idée est de tout regrouper sur une seule carte et d’ajouter par exemple le pesage et le comptage du volume d’eau utilisé par la mise à niveau, taches confiées pour le moment à deux esp séparés. le PCB est presque finalisé, cependant je cherche à optimiser son encombrement, les 7 relais prennent beaucoup de place.https://github.com/remycrochon/domo.rem81/blob/main/pcb_piscine_v07-2025.png
Super idée de tout regrouper sur la même carte, j’avais préparé quelque choses sur la base de ton projet deux ans en arrière et je ne l’ai jamais assemblé … (la pompe à PH- est toujours emballée!)
A quelle taille sort la carte globale?
Je suis impatient de le monter une bonne fois pour toutes et déposerait le gerber si je le modifie!
Concernant le PCB publié, je ne vois pas d’entrée?
Cela pourrait être utile :
Volet roulant : j’ai 1 contact piscine fermé qui permet de limiter la production de l’électrolyseur.
PAC : J’ai un contact pour asservir la température.
Bonjour, voici une nouvelle version du pcb avec un esp32 lolin, le PCB en l’etat mesure 207*108. Les 4 entrées TOR sont en bas à gauche. C’est une version Beta, , je penses utiliser un ESP32-mini plus facile à trouver, je vais ajouter une connection pour un module de pesage comme décrit dans l’article https://domo.rem81.com/index.php/2024/07/01/ha-module-de-pesage-du-bidon-de-ph-moins-avec-esphome/ et une connection pour le comptage du volume d’eau comme décrit dans cet article https://domo.rem81.com/index.php/2024/09/01/ha-mesurer-la-consommation-deau-de-ma-piscine-avec-un-esp8266-et-esphome/ nous aurons ainsi une solution complète tout en un. https://github.com/remycrochon/domo.rem81/blob/main/pcb_piscine_11-07-2025.png
Bonne continuation.
Je pense m’atteler à ce projet cet hiver. Merci en tous cas pour votre sens du partage.
Concernant le pesage de bidon, cela va-t-il peser 1 seul bidon (PH- si j’ai bien compris) ou deux (je pense au bidon de javel) ?
Bonjour, de mon coté j’ai bien avancé sur le sujet, j’ai publié le PCB sur le cloud EASYEDA (en attente d’appro), je mettrai le lien de partage ICI. Pour le pesage, je pense prévoir deux connecteurs, mais je veux tester si avec des longueurs de fil d’environ 2 metres c’est pas trop perturbé, sinon je laisse les pesages sur des esp32-c3 séparés. De toute façon je basculerai sur ce PCB debut 2026. Slts
Est-il possible d’intégrer une carte esp32-c6 mini histoire de pouvoir évoluer vers zigbee ou Matter un jour ou l’autre ce serait une bonne idée, est-il possible d’incorporer un port ethernet avec ou sans poe ?
En tous cas bravo pour le projet
Bonjour, tout est possible mais dans mon cas, le zigbee et poe du port ethernet me serait inutile, j’ai testé un Esp32-s3 et grosse galère pour le faire fonctionner sur ESPHome (alors que sous Arduino pas de problème) donc pas très chaud pour testter le zigbee ou matter. Sinon le rj45 (non POE) est prévu sur le PCB. Par contre personnellement je l’ai abandonné, trop sensible aux parasites (la comm plantait quand la pompe de filtration demarre et s’arrete!) j’ai choisi de fiabiliser mon réseau Wifi et depuis plus de décrochage WiFi avec du matos Unifi. Bon courage à vous. Slts
Bonjour, que diriez-vous d’utiliser un module RTC DS1307 comme source d’horloge, soit en remplacement du protocole SNTP, soit en combinaison avec celui-ci comme solution de secours ?
Bonjour, effectivement c’est possible de l’intégrer mais si vous pouviez m’éclairer sur son utilité, je suis preneur. Slts
Sur le serveur homeassistant il peut y avoir une horloge embarquée dans ces cas:
– Base PC intel/amd il y a le BIOS.
– raspberry PI 5 il y a un RTC embarqué qu’on peut secourir par une pile bouton.
sur un raspberry pi4, il n’y a pas d’horloge hardware mais l’horloge software se met à l’heure en ntp via internet.
il suffit de mettre dans esphome:
time:
– platform: homeassistant
id: my_time
et tous les devices esphome se règlent sur l’horloge de homeassistant qui se met à jour en ntp sur internet.
on peut également ajouter l’add-on chrony pour utiliser le serveur homeassistant comme serveur ntp pour tout le réseau local.
tout en local, mais quand même synchronisé avec les meilleurs serveurs de temps de la planète.
Bonjour rem81,
Je suis actuellement entrain de m’inspirer de ton code pour réaliser mon code pour l’automatisation de ma piscine.
Je viens de trouver un bug dans ton code, dans la partie Horaire fixe. Si tu met un départ à 8h40 avec une durée de 9h30, ton programme donne une heure de fin à 17h00 au lieu de 18h10.
Je reviens vers toi avec une solution
Bonsoir, merci pour ce retour de bugg. Effectivement c’est pas correct, c’est même n’importe quoi!, il faut convertir en minute
h_fin comme cela:
– datetime.time.set:
id: h_fin
time: !lambda |-
{
// convertir en minutes
int start_min = id(h_debut).hour * 60 + id(h_debut).minute;
int dur_min = id(duree_mode_horaire).hour * 60 + id(duree_mode_horaire).minute;
int total_min = start_min + dur_min;
uint8_t hour = (total_min / 60) % 24;
uint8_t minute = total_min % 60;
return { second: 0, minute: static_cast(minute), hour: static_cast (hour) };
};
– lambda: |-
char buf[20];
snprintf(buf, sizeof(buf), « %02u:%02u/%02u:%02u », id(h_debut).hour, id(h_debut).minute, id(h_fin).hour, id(h_fin).minute);
id(aff_heure_filtration).publish_state(buf);
– lambda: |-
ESP_LOGI(« filtration », « h_debut=%02u:%02u duree=%02u:%02u -> h_fin=%02u:%02u »,
id(h_debut).hour, id(h_debut).minute,
id(duree_mode_horaire).hour, id(duree_mode_horaire).minute,
id(h_fin).hour, id(h_fin).minute);
C’est OK pour moi, tiens moi informé STP.@+
Merci pour ton retour,
Voici ma version, on arrive à la même chose en utilisant la méthode, mais des fonctions différentes:
then:
– datetime.time.set:
id: filtration_hour_start
time: !lambda |-
return {second:0, minute: id(debut_mode_horaire).minute, hour: id(debut_mode_horaire).hour};
– lambda: |-
long long filtration_hour_end_ts = (id(debut_mode_horaire).hour * 60 + id(debut_mode_horaire).minute) * 60 + id(debut_mode_horaire).second;
long long duree_mode_horaire_ts = (id(duree_mode_horaire).hour * 60 + id(duree_mode_horaire).minute) * 60 + id(duree_mode_horaire).second;
filtration_hour_end_ts += duree_mode_horaire_ts;
ESP_LOGI(« Filtration », « Value of my datetime: %d », filtration_hour_end_ts);
// Mise en forme « HH:MM:SS »
char buf[20];
ESP_LOGI(« Filtration », « Value of hour: %d », (int)(filtration_hour_end_ts/3600));
sprintf(buf, « %02d:%02d:%02d »,((int)(filtration_hour_end_ts/3600)%24), (int)((filtration_hour_end_ts%3600)/60), (int)(filtration_hour_end_ts%60));
auto call = id(filtration_hour_end).make_call();
call.set_time(buf);
call.perform();
Bonjour,
Suite à la mise à jour du circuit et de la publication du gerber, pourrais-tu partager le fichier Board stp : je souhaiterai le modifier pour ajouter l’ORP EZO directement et faire d’autres petites modifications. Pour la dernière version de PCB, tu es parti sur un ESP32 classique et pas un ESP32 avec module Ethernet?
De plus, si je comprend bien sur le dernier PCB, les relais ont été externalisés sur une autre carte par rapport au PCB ici :
https://github.com/remycrochon/domo.rem81/blob/main/pcb_piscine_11-07-2025.png
tu prévoies d’enficher la carte relais avec son 2nd W32 sur le PCB?
Enfin, peux-tu me donner les livres/sources que tu as trouvé pour la relation ORP/Chlore Libre. Je trouve tout et son contraire et me serstoujours de ta vieille implémentation avec tableau qui me parrait plus juste sur les valeurs données
Merci beaucoup pour ton travail qui va me donner beaucoup de lecture et de temps à adapter à mon cas. Je ne manquerai pas de poster mes modifications!
Bonjour, j’utilise toujours la version de l’article (juillet 2024) qui exploite une carte esp 8 relais du commerce sur laquelle j’adapte le PCB extension comprenant les circuits supplémentaires exploitant les GPIO disponibles. Effectivement je travaille en parallèle sur un nouveau PCB constitué d’une seule et unique carte avec l’esp32, les entrées, les sorties relais, etc.. je l’ai publié sur https://oshwlab.com/rem81/extension-platine-relais-esp32_copy_copy mais ce n’est pas la version définitive, je ne me suis pas complètement fixé sur le type d’esp32, j’ai tenté un ESP32-S3 mais avec ESPHOME mais il n’est pas fiable plutôt instable. Pour info le code à jour de cet article est disponible ici https://github.com/remycrochon/home-assistant/blob/master/esphome/esp178-piscine.yaml . Tu devrais pouvoir telecharger le pcb de la version 2024 sur https://github.com/remycrochon/domo.rem81/blob/main/Platine%20gestion%20piscine%20juillet%202024/PCB_PCB-eth-V1_2025-08-27.json . Et concernant la relation ORP/chlore libre j’avais posé la question à ChatGPT: voici sa réponse https://chatgpt.com/c/68af1d9b-35f8-832b-90d6-85ff4323b083 je pense que tu dois y avoir acces. Bon courage à toi. Rémy
Bonsoir,
je reviens aux nouvelles. Sûrement que la sortie d’hivernage réveille en moi l’envie de relancer la copie de ce super projet. A tout hasard, as tu réussi à finaliser la carte que tu avais en évolution à l’automne dernier ?
Merci,
Rémy (aussi)
Bonjour Remy, j’ai finaliser la conception du PCB de la nouvelle carte mais je ne l’ai pas encore fait fabriquer et encore moins tester. Il faut que je m’y mette en attendant voici à quoi elle ressemble https://oshwlab.com/rem81/extension-platine-relais-esp32_copy_copy j’espere que tu peux ouvrir ce lien.Je vous tiens informé
Est ce que je peux aider d’une façon ou d’une autre ?
Je complète : Je suis bien équipé pour souder des composants, je soude depuis presque 30 ans maintenant. J’ai un oscillo si besoin, je programme un peu (mais je vais bien moins loin que toi). Bref, si par exemple tu voulais que je teste en parallèle de toi c’est possible. Je peux aussi commander, souder et te renvoyer une carte complète pour t’éviter ce travail.
Je vois qu’il y en a pour un peu moins de 14€/PCB (qté mini 5PCB). Je suis en revanche étonné du prix des composants, mais j’ai fait avec la génération automatique de easyEDA qui m’a redirigé vers LCSC pour la commande. Je vois que ce qui coute cher c’est cette référence x2 : testo 0560 5600. C’est quasi 200€ pièce. Je n’ai jamais essayé cette fonction pour la commande de composants. Ca fonctionne bien en général ou tu fais ta commande « à la main » ?
Bonjour Rémi,
Désolé pour cette réponse tardive, mais je consacre peu de temps à ce blog.
Sinon, les PCB ne sont effectivement pas très chers. Pour les composants, j’en récupère beaucoup sur l’ancienne carte. Cela étant, le minimum nécessaire reste l’ESP, les relais et les composants passifs.
Le matériel EZO coûte cher, mais il est fiable : ma sonde pH a au moins 4 ans. Je fais un étalonnage au début de chaque saison, et c’est reparti.
Pour le reste, j’achète généralement les composants moi-même sur AliExpress ou, si je suis pressé, sur Amazon.
Je te laisse avancer sur le projet. Personnellement, je ne pense pas basculer tout de suite, car mon ancienne carte fonctionne très bien.
Bon courage
J’adore ton projet ! je voulais réaliser ceci…
Juste une idée/question :
pourquoi ne pas inclure un écran (grosse conso d’IO), et passer la majorité des input/output en i2c ?
– soit via un petit touch genre ili9341
– soit via un petit module « jaune » (esp+screen+touch+alim+serial/usb) genre https://nl.aliexpress.com/item/1005007730940177.html?gatewayAdapt=fra2nld et qui fonctionne très bien sous espHome + LVGL(testé)
Ceci dit, je me propose de participer pour la partie électronique/pcb si ça peut aider (expérience aussi de machines complètes en esp32 + esp-idf)
échanges par mails volontiers pour ne pas polluer le blog. 😉
Salut et merci pour ton retour d’expérience. Il y a effectivement plusieurs solutions matérielles tout aussi intéressantes les unes que les autres. Mais je pense que la vraie valeur ajoutée dans ce projet est le code esphome facilement adaptable aux matériels utilisés,je l’ai fait évolué ces derniers temps, le git hub est à jour. Mon pcb avec la solution esp32S3 est quasi finalisée je encore quelques tests sur les alim et je le partagerai au plus vite. Slts
Bonjour,
Super projet, merci pour le temps que vous avez passé à documenter!
Pouvez-vous m’indiquer quel référence de pompes péristaltiques et de module d’acquisition ORP vous avez utilisé?
Bien à vous,
Ed
Bonjour, merci pour votre commentaire. Désolé pour la réponse tardive, vacances obligent. Concernant le matériel, je vous invite à consulter ces deux articles: https://domo.rem81.com/index.php/2021/05/11/home-assistant-gestion-piscine-4_mesure-ph/ et https://domo.rem81.com/index.php/2021/08/14/ha-gestion-piscine-5_regulation-du-ph/ . Les modules acquisition I2C (ph et/ou ORP) viennent de https://atlas-scientific.com/ ,pensez à prendre leurs modules d’isolation galvaniques. les sondes peuvent etre achetées chez Atlas (matos semi-pro ou pro) ou chez aliexpress (pas cher mais il faut en changer chaque année), il faut avec les sondes ali et si nécessaire un adapteur BNC/SMA https://fr.aliexpress.com/item/1005008556453465.html?spm=a2g0o.order_list.order_list_main.265.5a3d5e5b6vXj2l&gatewayAdapt=glo2fra . Et la ref des pompes: https://fr.aliexpress.com/item/1005002087163427.html?spm=a2g0s.9042311.0.0.84416c37w5W2kK. Bonne continuation
Bonjour,
Pour les sondes ORP, j’étais parti sur du Atlas mais les valeurs étaient nulles car je suis en traitement au sel. J’ai changé par une sonde meytec Or (https://www.meytec.eu/fr/sonde-orp-or.html) et depuis les lectures sont fiables. Pour le PH, la sonde Atlas est à sa deuxième saison. Les deux sondes sont montés sur les modules Ezo + isolation galva.
Bonjour, merci pour ces informations, j’ai eu également des valeurs de mesure complètement incohérente avec une sonde ORP Atlas que je n’ai pu solutionner, de ce fait j’ai acheter une sonde Ali mais elle n’a tenue que la saison, je la changerai l’an prochain. Bonne continuation
Bonsoir
je souhaiterais savoir si ce systeme peut agir en autonomie , cad sans relation aves HA
car j’aimerais le mettre en place sur un site defacon a ce qu’il soit autonome avec juste les infos necessaires sur un ecran
est ce envisageable avec le code actuel ?
merci d’avance
Bonjour
Je n’ai pas fait l’essai, mais oui tu peux accéder aux infos avec le WEB SERVER de ESPHOME mais il faut un pc et une connexion réseau
Attention cependant le pgm en l’état nécessite une liaison vers Internet (platform: sntp) donc prévoir des modifs.
Slts
bonjour
super boulot je débute sur HA et moi j’avais jusqu’à présent un appareil dans l’eau FLIPR qui me donnait des info suffisantes.
maintenant il ne fonctionne plus et la boite à fermée
j’aimerai utiliser un ESP32 pour la gestion du PH du BROME et la température, pour ce qui est de la pompe j’ai deja mis un relais mqtt2 mais pourquoi pas l’actionné par HA.
Est il possible de m’aidé a la réalisation aussi évidement une procédure d’étalonnage en PH 4 et 7 pas besoin des appoints PH et Brome automatique je verrais par la suite,
Merci pour vos retours
Bonjour Rémi,
As-tu la dernière mise à jour de ton projet? Je vais commander la carte et je suis tes évolutions donc avant de commander, j’aimerais partir de ta dernière version !
Bonjour ma dernière version est celle ci, mais pas encore testée en réel: https://oshwlab.com/rem81/extension-platine-relais-esp32_copy_copy
Désolé de ne pas avancé plus vite
Bon courage
bonjour,
Bravo et merci pour le travail réalisé, documenté et partagé.
Je cherche une référence de pompe compatible pour ce projet (les liens Ali sont rapidement obsolètes)
bonjour, désolé pour le retard. Effectivement pas facile à trouver à un prix raisonnable mais celle ci devrait faire l’affaire https://fr.aliexpress.com/item/1005004058239755.html?spm=a2g0o.productlist.main.1.97ef1Qhg1Qhg1h&algo_pvid=b0aadc77-1c97-4e88-8c33-21fe4df7738a&algo_exp_id=b0aadc77-1c97-4e88-8c33-21fe4df7738a-0&pdp_ext_f=%7B%22order%22%3A%2252%22%2C%22eval%22%3A%221%22%2C%22fromPage%22%3A%22search%22%7D&pdp_npi=6%40dis%21EUR%2131.50%2129.99%21%21%2135.84%2134.12%21%400b884c0217879311253257399e0e63%2112000057623967421%21sea%21FR%21833459399%21X%211%210%21n_tag%3A-29919%3Bd%3A7de7adcf%3Bm03_new_user%3A-29895&curPageLogUid=5XDIMpeDXGmD&utparam-url=scene%3Asearch%7Cquery_from%3A%7Cx_object_id%3A1005004058239755%7C_p_origin_prod%3A
Slts