Pool auto filtration based on temperature

ok,
i understand what is tthe problem .
the first version of the code was counting only the filtration duration time during one day.
so when the filtration start on day D and stop on D+1 , the stop automation wasn’t working.
so i added a second trigger for stopping the filtration based on duration since last trigger ( of the pump start)
you will find it at line 203 in pool.yaml

    trigger:
      - platform: numeric_state
        entity_id: sensor.pompe_piscine_on_today
        above: sensor.auto_cycle_duration_abacus
      - platform: numeric_state
        entity_id: sensor.last_autostart_triggered_since
        above: sensor.auto_cycle_duration_abacus

which mean that in the mardown card you can add or change the stop sentence by

| **Auto filtration will stop at**: | *{{(as_timestamp(now()+
timedelta( hours =
states('sensor.last_autostart_triggered_since')|float(1) -
states('sensor.pompe_piscine_on_today')|float(1)|float(1))))|
timestamp_custom("%H:%M:%S")}}* |

I will test it and let you know !
Thank you !

As promised, this is the result. I changed the starting time to 00:01. And as you can see, the “Auto filtration time” is not correct (08:04:48) and this corresponds to

                | **Auto filtration will stop at**: | *{{(as_timestamp(now()+
                timedelta( hours =
                states('sensor.last_autostart_triggered_since')|float(1) -
                states('sensor.pompe_piscine_on_today')|float(1)|float(1))))|
                timestamp_custom("%H:%M:%S")}}* |

The previous “Arrêt à” corresponds to :

                | **Arrêt à :**      |
                *{{(as_timestamp(state_attr('automation.pool_filtration_cycle_start',
                'last_triggered')+ timedelta( hours =
                states('sensor.pompe_piscine_on_today')|float(1)|float(1))))|
                timestamp_custom("%H:%M")}}* |

I will try to understand this behaviour later.
Thanks anyway.

It seems that your interface yaml works only when the filtration is working : now + scheduled_working_time - real_working_time = (now + remaining_working_time) when filtration is on. But when filtration if off, it is equal to : now + scheduled_working_time - previous_working_time ( whichi is equivalent to now if scheduled_working_time is equal to previous_working_time (as it did not start yet).

which makes sense
you need to know the stop time only if something is running :wink:
maybe i could had a condition in order to display “—” if the filtration is not running

You are true ! But, in my case, as the filtration is running at night in winter, the 'end of filtration" was always unconsistent.
Thank you for the discussion anyway and thank you for your really good solution. The other one is locked with two periods and cannot be adjusted as yours.
For your information, I use esphome with an esp32 to control through relays the pump, the speed of the pump, and to sense the level, the pump flow, the temperatures.
Bonnes fêtes de fin d’année !

1 Like

Just to say thank you !
My pump should not run for more than four hours continuously, do I need to change anything?

1 Like

i also learned a lot from this community, so i’m happy to be usefull to someone too.

if you want to add a running time limit, maybe the best would be to add a separate automation like for example :

description: ""
mode: single
trigger:
  - platform: state
    entity_id:
      - switch.tz3000_pompe_piscine
    to: "on"
    for:
      hours: 4
      minutes: 0
      seconds: 0
condition: []
action:
  - service: switch.turn_off
    data: {}
    target:
      entity_id: switch.tz3000_pompe_piscine

Thank you for your very quick response.

With this automation, if I want the automatic filtration to resume after a 30 minute break after 4 hours of filtration, I have to add something more I think

maybe you should look at this project

it’s much more elaborated than my simples automations
and you can set a schedule_break_in_hours to 4hours

Bonjour Laurent,
J’ai déjà installé l’automatisation de oncleben31 qui fonctionne mais je voulais tester ton plan pour voir la différence.
Sur celle de oncleben31 on ne peut pas choisir une heure de départ et un temps donné de filtration en mode manuel.
Par contre je n’arrive pas à ajouter la partie sensor de ton pool.yaml.
Peut-être pourrait tu m’aider ?

Cordialement
Marc

quelle difficulté rencontre tu exactement ?

dans le fichier pool.yaml il faut remplacer tous les sensor.pool_water_kalman par le nom de ton sensor de température
par exemple avec le file editor comme dans la capture ci dessous

C’est bon j’ai réussi, je ne sais pas ce qui s’est passé la première fois j’ai du faire une erreur d’écriture.
Par contre je n’ai pas duration since last autofiltration, statut indisponible.
En tout cas,
Merci pour ton travail.

Bonjour !
Je suis intéressé pour remplacer également mon programmateur mécanique, où je dois en théorie changé à un nombre d’heures par jour équivalent à la température de la piscine divisé par 2 d’après mon pisciniste.
Est-ce que tu/vous pouvez me confirmer que vous êtes satisfait de votre solution au quotidien et me donner une idée approximative du budget svp?
Merci !

bonjour,

oui tout fonctionne très bien chez moi
diviser le temps par 2 pour avoir le temps de filtraiton est une approche simplifiée quand on doit le faire manuellement.

la courbe que j’utilise vient de ce github

je l’ai également comparé aux infos récupéré sur le blog d’oklyn
image

au niveau budget, il faut :

  • un switch pour controler la pompe ( j’ai un utiliser celui la ~15€
  • une sonde de temperature . j’ai utilisé un esp32 avec des sondes dallas pour etre en filaire , mais il existe des sondes sans fil comme la Casa.IA CTHS-317-ET

Hi,
Everything works for me and I also lowered the ration to 70%, thank you.

On the other hand, I have in the automation this message at the top:

Should I leave it like that or click on migrate?

it’s probably because the automation is stored in pool.yaml instead of automation.yaml
both work,
if you migrate you will be able to edit it in GUI
i’m not sure which is best for you
on my side i edit the automation in the pool.yaml, so i don’t migrate

1 Like

Bonjour,

je suis en train de remplacer mon Domoticz par HA, ma gestion du temps de filtration est actuellement faite par Domoticz, je commence donc à m’inétrésser de prêt à votre solution pour le remplacer.

tout semble ok mais j’ai une erreur "entité non disponible : sensor.pompe_piscine_on_today

possible que ce soit par ce que ça n’a pas encore tourner.

par contre autre soucis dans le lovelace, le chemin vers le PNG de standard est KO :

image: /local/IMG/oklyn.png

j’ai du remplacer par standard, ou alors j’ai râter un truc :slight_smile:

autre question, est-il possible de rajouter un mode Off et Manuel , en mode Off cela coupe la filtration immédiatement, et mode manuel ça active la pompe sans se soucier du temps de filtration ?

j’explique pourquoi :
ma piscine possède un filtre papier que je doit donc nettoyer très régulièrement. pour ça il faut que je coupe la pompe (mode off), et parfois j’ai besoin d’avoir une filtration en continue (suite à un traitement par exemple)

ce n’est peut être pas très claire donc n’hésitez pas à me demander un complément si besoin ou me dire votre façon de voir les choses.

Dans tous les cas merci beaucoup pour votre travail !

hello
je vais répondre en anglais car même si ca intéresse principalement des Français, c’est un forum anglophone

  • you a re right oklyn.png is a typo error , i corrected lovelace-card.yaml

  • to stop immediatly the pump, why not use the pump switch ?

  • if you want to disable this package, you can just also select manual mode and disable the automation [Pool] manual filtration cycle start

  • the manual mode already exist , if you need a continuous filtration, you can use manual mode, set the start at 00:01 and stop at 23:59

  • wait for one day to have the sensor.pompe_piscine_on_today sensor getting populated

On domoticz i use a dummy selector :
Off / Manual (allways ON) / Auto (that use a lua script to calculate filtration time based on temp)

so i can easily change the pump status with it no need to disable anything.

I’m new on HA so i d’ont know if i can reproduce this. I’ll search :slight_smile: