The goal of this automation is to control the pump of a pool all around a year and with the best practice of my pool resealler.
For this we need 4 sensors :
1. a binary sensor to indicate if pool is in winter or summer mode (true equal summer)
2. a temperature sensor for the water
3. a switch to control the pump
4. a binary sensor to indicate if you want to be notified of pump activity (should be useful for debug)
If pool is in winter, of course we do nothing !
Then if the pool temperature is >= 24 °C the pump run for 24 hours. Otherwise it’s running the half time of the temperature balance around 14:00.
i.e : water temperature is 14.5 °C, the pump will start at 10:23, run for 7 hours and 15 mintues and so stop at 17:37
blueprint:
name: Control Pool Pump
description: define how long the pool pump should run based on water temperature
domain: automation
input:
pool_summer_season:
name: Pool Summer Season
description: Switch to indentify if pool is in summer mode or in winter mode (true equal summer)
selector:
entity:
filter:
- domain: input_boolean
pool_temperature:
name: Pool Temperature Sensor
description: Sensor that read pool temperature. We use it to calculate running duration
selector:
entity:
filter:
- domain: sensor
device_class: temperature
pool_pump:
name: Pump sensor
description: Sensor that control the pool pump
selector:
entity:
filter:
- domain: switch
pool_pump_notification:
name: Notify activity
description: Notify in HA pump activity (when it start and how long)
selector:
entity:
filter:
- domain: input_boolean
alias: Pool pump control
description: >-
The goal of this automation is to control the pump of a pool. For this we need 4 sensors :
1. a binary sensor to indicate if pool is in winter or summer mode (true equal summer)
2. a temperature sensor for the water
3. a switch to control the pump
4. a binary sensor to indicate if you want to be notified of pump activity (should be useful for debug)
If pool is in winter, of course we do nothing !
Then if the pool temperature is >= 24 °C the pump run for 24 hours. Otherwise it's running the half time of the temperature balance around 14:00.
i.e : water temperature is 14.5 °C, the pump will start at 10:23, run for 7 hours and 15 mintues and so stop at 17:37
trigger:
- platform: time
at: "00:00:00"
variables:
pool_temperature: !input 'pool_temperature'
condition:
- condition: state
entity_id: !input pool_summer_season
state: "on"
action:
- choose:
- conditions:
- condition: template
value_template: >-
{{ states(pool_temperature)|float >= 24 }}
sequence:
- service: switch.turn_on
entity_id: !input pool_pump
enabled: false
- service: notify.persistent_notification
data:
message: >-
Pool pump will run 24 hours as temperature {{ states(pool_temperature)}} is above 24°C
title: Pool Pump Control
- conditions:
- condition: template
value_template: >-
{{ states(pool_temperature)|float < 24 }}
sequence:
- if:
- condition: state
entity_id: !input pool_pump_notification
state: "on"
then:
- service: notify.persistent_notification
data:
title: Pool Pump Control
message: >-
Pool pump will start at {{ as_timestamp(now().replace(hour=14, minute=0) - timedelta(hours=states(pool_temperature)
| float / 4)) | timestamp_custom('%H:%M') }} as water temperature is {{states(pool_temperature)}} °C
- delay:
seconds: >-
{{ (14*3600) - (states(pool_temperature) | float / 4 * 3600) | round(0) }}
- service: switch.turn_on
entity_id: !input pool_pump
- if:
- condition: state
entity_id: !input pool_pump_notification
state: "on"
then:
- service: notify.persistent_notification
data:
title: Pool Pump Control
message: >-
Pool pump will stop at {{ (as_timestamp(now().replace(hour=14, minute=0)) + (states(pool_temperature) |
float / 4 * 3600) | round(0)) | timestamp_custom('%H:%M') }} as water temperature is {{states(pool_temperature)}} °C
- delay:
seconds: >-
{{ (states(pool_temperature) | float / 2 * 3600) | round(0) }}
- service: switch.turn_off
entity_id: !input pool_pump