Pool Pump Manager - gestion piscine

Salut tout le monde :waving_hand:

J'ai bossé sur une nouvelle intégration de gestion piscine et je
viens chercher des retours / testeurs avant un éventuel push HACS officiel.

Le contexte

J'avais ma piscine pilotée par oncleben31/ha-pool_pump depuis ~2 ans. Le
projet est mort en 2021, l'auteur a disparu, et l'intégration s'est cassée
la figure sur HA 2025.11+. Pas d'options dans l'UI, plus aucun contrôle, et
obligé d'éditer du YAML pour changer 3 valeurs.

J'ai d'abord essayé de patcher. Puis j'ai abandonné et j'ai tout rewrite
from scratch avec config_flow moderne, coordinator, DataUpdateCoordinator,
sensors, select, binary_sensors, number platform. Et tant qu'à y être,
j'ai ajouté tout ce qui me manquait.

Mon setup (pour vous situer)

Côté hardware, j'ai choisi une approche simple et tout en local :

  • Pompe de filtration → branchée sur une prise connectée (relais wifi)
  • Électrolyseur au sel → branché sur une seconde prise connectée
  • Sonde de température eau → Sonoff TH Elite (THR316D) + sonde
    WTS01 IP67 plongée dans un doigt de gant inox 1/2" BSP monté en
    ligne sur le refoulement (entre filtre et électrolyseur), avec un peu
    d'huile de tournesol (oui, celle pour les frites) dans le doigt pour la
    conductivité thermique — la glycérine c'est la version "propre" mais
    l'huile alimentaire fait largement le job, conductivité ~0.17 W/m·K vs
    air 0.025, soit 7× mieux que rien, et zéro souci si une micro-fuite
    arrive sur le filetage
  • L'intégration eWeLink LAN + HACS SonoffLAN pour parler au TH Elite
    sans cloud

Avec ce setup, l'intégration sait :

  • Allumer/couper la pompe selon l'horaire calculé
  • Allumer/couper la cellule avec sécurité (eau qui circule + plage de
    température respectée)
  • Lire la vraie T° de l'eau en continu

Ce que fait l'intégration

Filtration automatique

Calcul de la durée : T°eau / 2 (ou T°/3 en dessous de 13°C), clampé sur
min/max, recentré sur ton heure pivot (14h par défaut, là où l'eau est la
plus chaude). Détection canicule via forecast → bascule en filtration max.

Modèle thermique d'eau (si pas de sonde)

Si tu n'as pas de sonde, l'intégration peut estimer la T° eau à partir
de la T° air avec un modèle RC + lissage 24h. Bonus si t'as du solaire
(auto-détecté Victron MPPT) : l'apport solaire est intégré au modèle pour
pousser la T° prédite quand il fait beau.

Auto-tune : tu corriges la T° une fois avec une mesure réelle,
l'intégration apprend la dérive systématique. Au bout de 3-4 calibrations
sur quelques semaines, T° eau modélisée == T° réelle à ±0.5°C.

Modes & sécurité

  • Auto / Marche forcée / Pompe seule (chlore choc) / Arrêt
  • Backwash filtre (pompe ON + cellule OFF pendant N min, puis auto-revert)
  • Hivernation automatique (plage de mois configurable)
  • Sécurité électrolyseur : margin post_start (≥2 min de circulation avant
    allumage cellule), pre_stop pour purge, cutoff T° basse <15°C et haute

    40°C, debounce short-cycle

Presets

43 modèles de piscines préchargés (Intex Easy Set/Frame/Prism/Ultra XTR,
Bestway Steel Pro/Power Steel/Hydrium, génériques in-ground). Tu choisis
le tien, ça donne directement le volume, surface, profondeur, time constant
thermique. Plus besoin de chercher dans les specs constructeur.

Assistant chimie

Tu rentres tes mesures pH / Cl libre / Cl combiné / TAC / TH / CYA / sel
(test strip, sonde, ou capteurs auto type Ondilo). L'intégration calcule
les doses précises en fonction du volume de ta piscine :

  • pH-: HCl 33%, X mL
  • Chlore choc HTH 65%, X g
  • Bicarbonate sodium, X g pour le TAC
  • ...

Avec gestion intelligente du breakpoint chlorine (si chloramines
détectées, dose calculée pour casser le combiné, pas juste maintenir).

Routines pré-programmées

Bouton :wrench: avec routines smart auto-calculées :

  • :test_tube: Chlore choc (dose depuis le diagnostic FC + chloramines)
  • :battery: Boost cellule (force cellule ON 2h)
  • :droplet: Mix produit (pompe seule 2h)
  • :balance_scale: Ajuster pH (dose auto)
  • :shield: Stabilisant 24h (dissolution lente)

Avec confirmation détaillée : "Verse 270 g HTH 65%, pompe 6h, retour
Auto à 23h45. OK ?"

Tracking

  • Temps cumulé par mode (Auto / Marche / Pompe seule) sous chaque bouton
  • Énergie kWh pompe + cellule (intégré au dashboard énergie HA)
  • Heures cellule cumulées (anticipe le remplacement, typique 4000-5000h)

Carte Lovelace bundled

Pas besoin de l'installer séparément, elle apparaît dans le picker.
Illustrations PNG photo-réalistes (générées AI à partir de prompts
cohérents) selon ton preset.

Stack technique pour les curieux

  • HA 2026.5+ (testé), théoriquement compatible 2024.7+ pour la card bundled
  • Config flow + Options flow avec auto-détection (Victron MPPT, smart plugs)
  • DataUpdateCoordinator + Store pour persistance modèle thermique +
    calibrations + énergie + heures cellule
  • Carte Lovelace vanilla JS (pas de build step)
  • Pure Python, zéro dépendance externe
  • Tests pytest + CI GitHub Actions

Install

HACS → Custom Repository
URL: https://github.com/Shad107/ha-pool_pump
Type: Integration

Carte Lovelace : enregistrée automatiquement, apparaît dans le picker.

Roadmap

  • Historique multi-jour des temps par mode (graphique 7j)
  • Support natif des capteurs chimie auto (Ondilo, Flipr, Blue Riiot)
  • Routines personnalisables par l'utilisateur

On en parle

Vous gérez votre piscine comment de votre côté ? Sonde / pas sonde,
électrolyseur, automatisations chimie... je suis curieux de savoir ce qui
vous manquerait pour passer la barre du "ouais bon ok je teste".

Issues / PRs / feedbacks bienvenus.

Repo : GitHub - Shad107/ha-pool_pump: 🏊💻Pool pump manager for Home Assistant · GitHub

Hello.

Venant de recevoir mon capteur de température je cherchais justement un gestionnaire pour ma petite Bestway Steelframe 305x200x84 sur filtre à sable et chlore solide.

Merci pour ton intégration je te ferais un retour après usage.

Mais j'ai des questions quant au fonctionnement et aux options disponibles.

1- Ma piscine ne fait pas partie de la liste, il manque une option pour rentrer les dimensions/volume en eau et cocher hors-sol ou non. Aussi est-ce que le débit théorique de la pompe n'a pas un intérêt également, sachznt que ce n'est pas la pompe d'origine.

2- Peut-on masquer l'image de la piscine sur la carte ? Désolé l'illustration est superflue pour moi et pas à mon goût (j'ai vu que l'on pouvait en changer)

3- J'ai compris que le "Pivot time" était la médiane sur laquelle le temps de fonctionnement doit se répartir, idem pour la pause "Split" mais si je ne souhaite pas avoir de pompe avant 8h tout en ayant une coupure à midi ce n'est pas possible. La possibilité de donner des heures d'interdictions de fonctionnement serait un plus.

4- Je n'ai pas activé les options pour l'électrolyseur, je n'en ai pas, il faudrait que la carte retire toutes mentions parmi les fonctions.
Idem pour le bouton pompe seule qui est au final redondant dans mon cas avec le bouton marche.

5- idem pour la chimie, Compte tenu du petit volume de ma piscine la chimie n'a que peu d'impact. Peut être avoir une option pour désactiver ça aussi pour ceux qui dans mon cas veulent juste une gestion intelligente de la pompe.
Ou alors il va falloir être plus didactique sur cette partie :slight_smile:

5- Comment fonctionne le backwash ? Quelle est le workflow ? Qu'est ce que le auto-reverse ?

Merci pour ton travail je reviendrai ici quand je m'en serais plus servi.

Bonjour à tous,

Superbe travail.

Personnellement j'utilise le blueprint de Makai ( Plugin Piscine : le blueprint pour HA (gestion de la filtration) ) qui permet de gérer la filtration de manière totalement automatisée en toutes saisons et selon un mode de calcul plus efficace (et plus économe) que la Temp/2.

Salut, merci pour ce retour ultra détaillé, c'est exactement ce que je cherchais pour
prioriser la suite. Je réponds point par point :

1. Piscine pas dans la liste / dimensions custom

T'as raison, c'est un gap. Le mode "Custom" existe mais ne te demande pas les
dimensions, donc tu te retrouves sans presets et sans données dérivables (volume,
surface, profondeur). Ça impacte les calculs de durée et les doses chimie.

v0.14 : ajout d'un formulaire "Piscine personnalisée" avec L × l × P +
toggle "hors-sol / enterrée". Le volume + surface + tau (time constant thermique)
sont calculés automatiquement.

Pour le débit de la pompe : c'est noté pour plus tard. L'idée serait d'afficher
le turnover (temps pour brasser tout le volume) et alerter si la durée de
filtration est inférieure à ce minimum. Pas dans v0.14 mais sur la roadmap.

2. Masquer l'illustration

Facile, ajout v0.14 d'une option "Afficher l'illustration de la piscine" (toggle
on/off dans la config card). Tu auras un layout plus compact sans le visuel.

Si tu veux une autre image en attendant, tu peux déjà mettre une URL custom dans
les options : Settings → Pool Pump Manager → Configurer → "Custom pool image URL"
(accepte n'importe quel PNG/JPG/SVG).

3. Heures d'interdiction de fonctionnement

C'est une vraie limitation actuelle, oui. Le pivot + split symétriques sont pas
suffisants pour ton cas (pas avant 8h + pause midi).

v0.14 : ajout de deux options :

  • "Heure de début minimum" (par ex. 8h) → la fenêtre ne peut pas commencer avant
  • "Heure de fin maximum" (par ex. 20h) → la fenêtre ne peut pas finir après
  • Optionnel : "Plages d'interdiction" (liste de tranches type 12h-14h, 22h-7h)

Ça permettra ton "8h minimum + pause midi" sans casser la sémantique pivot/split.

4. Cellule pas activée → masquer les boutons cell-related

Très juste. Actuellement la card affiche les boutons "Pompe seule" + "Chimie" +
"Backwash" même sans cellule configurée. Le bouton "Pompe seule" en particulier
n'a pas de sens sans électrolyseur (il sert à pousser la pompe sans la cell, ce
qui revient à "Marche" si pas de cell du tout).

v0.14 : si electrolyzer_switch est vide dans la config :

  • Le bouton "Pompe seule" disparaît (redondant avec Marche)
  • Les recommandations chimie liées chlore/cellule disparaissent
  • L'attribut electrolyzer_block_reason n'apparaît plus dans le statut

5. Désactiver la chimie

Pareil, légitime pour ton cas (305×200, ~5 m³ probablement). Pour ces petits
volumes au chlore solide, c'est plus rapide de gérer à la main que via popup.

v0.14 : option "Activer l'assistant chimie" (toggle, défaut on). Si désactivé:

  • Bouton :test_tube: Chimie masqué
  • Number entities (pH, Cl libre, etc.) toujours créées mais marquées disabled
    par défaut (tu peux les activer en 1 clic si tu changes d'avis plus tard)
  • Routines smart filtrées (chlore choc, pH adjust disparaissent du menu Routines)

6. Backwash — comment ça marche ?

Le workflow :

  1. Tu cliques sur le bouton "Backwash" dans la card → popup de confirmation
    ("Lancer un backwash filtre ?")
  2. La pompe passe en mode forcé ON, la cellule (si présente) en OFF
  3. Un timer démarre (5 min par défaut, configurable dans les options :
    backwash_duration_minutes)
  4. À la fin du timer, l'intégration bascule automatiquement en mode Auto
    (c'est ça que j'appelle "auto-revert" — la "réversion automatique" vers
    le mode normal après l'action ponctuelle)

Usage typique : tu viens de nettoyer ton filtre à sable manuellement, tu lances
un backwash pour évacuer les dernières particules + brasser ; au bout des 5 min
l'intégration reprend son cycle normal sans que t'aies à rien faire.

Pareil pour les routines chimie (chlore choc, mix produit, etc.) : timer +
auto-revert vers Auto. Évite de laisser ta pompe en marche forcée toute la nuit
parce que t'as oublié de remettre en Auto.

Salut,

La dernière version inclut tout ca, tu peux testé et me faire un retour :slight_smile:

@+

Bonjour,

merci pour cette très belle intégration.

Elle est très complète, et couvre un maximum de configurations. Pour ma part c'est adopté. Merci pour le travail.

Je rencontre juste un problème avec la carte lovelace. Lors de l'installation elle fonctionne et puis plus tartd quand j'ouvre mon tableau de bord j'ai un message erreur d’intégration. Si je la supprime et que je veux la réinstaller, la carte n'est pas dispo, à la place un rond bleu tourne.

J'ai du rater quelque chose. V0.15

Merci