Bonjour à toutes et à tous !
Mon problème
J’ai voulu mettre en place une automatisation de ma filtration piscine, en effet, cette dernière est asservie à l’horloge et désormais à un Shelly Pro2 (ma pompe à chaleur piscine est également pilotable via le shelly)
L’idée étant de faire fonctionner la filtration de la piscine sur la tranche horaire 9h00 - 21h00 max et en fonction de la T° de l’eau :
- Moins de 20°C : 2 heures de filtration
- Entre 20°C et 24°C : 6 heures de filtration
- Entre 24°C et 28°C : 9 heures de filtration
- Plus de 28°C : 12 heures de filtration
J’ai cherché des intégrations toutes faites ou des Blueprints, mais rien n’a fonctionné ! J’ai donc créé des automatisations pour faire le job et j’aurais besoin de vos retours afin de vérifier/valider ces dernières:
1/ Cette automatisation mesure la température de la piscine à deux moments de la journée et ajuste éventuellement la valeur de input_number.ajusted_pool_temperature
.
alias: Mesure de la température piscine à 8h30 et 17h00
description: >-
Mesure la température de la piscine à 08h30 (initialisation avec +2°C) et à
17h00 (sans ajustement)
trigger:
- platform: time
at: "08:30:00"
- platform: time
at: "17:00:00"
condition: []
action:
- service: switch.turn_on
entity_id: switch.shellypro2_ec6260918ad8_switch_0
- delay: "00:30:00"
- service: switch.turn_off
entity_id: switch.shellypro2_ec6260918ad8_switch_0
- choose:
- conditions:
- condition: template
value_template: "{{ now().hour == 8 and now().minute == 30 }}"
sequence:
- service: input_number.set_value
data:
entity_id: input_number.ajusted_pool_temperature
value: "{{ (states('sensor.piscine_2_temperature') | float) + 2 }}"
- service: notify.mobile_app_s24_fabrice
data:
message: >
La température de la piscine a été mesurée à {{
(states('sensor.piscine_2_temperature') | float) + 2 }}°C avec
une pondération de +2°C. Le temps de filtration prévu ce jour
est de {{ states('sensor.duree_de_filtration_prevue') }} heures.
- conditions:
- condition: template
value_template: "{{ now().hour == 17 and now().minute == 0 }}"
sequence:
- service: input_number.set_value
data:
entity_id: input_number.ajusted_pool_temperature
value: "{{ states('sensor.piscine_2_temperature') | float }}"
- service: notify.mobile_app_s24_fabrice
data:
message: >
La température de la piscine a été re-mesurée à 17h00 et est de
{{ states('sensor.piscine_2_temperature') }}°C. Le temps de
filtration corrigé est donc de {{
states('sensor.duree_de_filtration_prevue') }} heures.
mode: single
2/ Cette automatisation ajuste la durée de la filtration en fonction de la température de l’eau.
alias: Filtration piscine dynamique selon T° eau
description: |
Gère la filtration de la piscine en fonction des températures de l'eau
trigger:
- platform: state
entity_id: input_number.ajusted_pool_temperature
condition:
- condition: time
after: "08:00:00"
before: "21:00:00"
action:
- service: switch.turn_on
target:
entity_id: switch.shellypro2_ec6260918ad8_switch_0
data: {}
- choose:
- conditions:
- condition: numeric_state
entity_id: input_number.ajusted_pool_temperature
below: 20
sequence:
- delay:
hours: 2
- service: switch.turn_off
target:
entity_id: switch.shellypro2_ec6260918ad8_switch_0
data: {}
- conditions:
- condition: numeric_state
entity_id: input_number.ajusted_pool_temperature
above: 20
below: 24
sequence:
- delay:
hours: 6
- service: switch.turn_off
target:
entity_id: switch.shellypro2_ec6260918ad8_switch_0
data: {}
- conditions:
- condition: numeric_state
entity_id: input_number.ajusted_pool_temperature
above: 24
below: 28
sequence:
- delay:
hours: 9
- service: switch.turn_off
target:
entity_id: switch.shellypro2_ec6260918ad8_switch_0
data: {}
- conditions:
- condition: numeric_state
entity_id: input_number.ajusted_pool_temperature
above: 28
sequence:
- delay:
hours: 12
- service: switch.turn_off
target:
entity_id: switch.shellypro2_ec6260918ad8_switch_0
data: {}
mode: single
3/ Cette automatisation gère les situations de sécurité telles que le redémarrage de Home Assistant, le dépassement de la durée prévue de filtration à partir de 18h00, et un failsafe en cas de filtration en continu pendant plus de 12 heures.
alias: Gestion de sécurité de la filtration piscine
description: >
Gère la sécurité de la filtration de la piscine après redémarrage, à partir de
18h00 et en cas de failsafe
trigger:
- platform: homeassistant
event: start
- platform: time_pattern
hours: /1
minutes: "00"
- platform: time_pattern
hours: /1
condition: []
action:
- choose:
- conditions:
- condition: state
entity_id: switch.shellypro2_ec6260918ad8_switch_0
state: "on"
- condition: template
value_template: >
{% set last_on =
as_timestamp(states.switch.shellypro2_ec6260918ad8_switch_0.last_changed)
%} {% set now = as_timestamp(now()) %} {{ (now - last_on) > 43200
}} # 12 heures en secondes
sequence:
- service: switch.turn_off
entity_id: switch.shellypro2_ec6260918ad8_switch_0
- service: logbook.log
data:
name: Failsafe
message: La filtration a été éteinte par le failsafe
entity_id: switch.shellypro2_ec6260918ad8_switch_0
- service: notify.mobile_app_s24_fabrice
data:
message: >
⚠️ Le failsafe a été déclenché : la filtration de la piscine a
été éteinte car elle était allumée depuis plus de 12 heures.
- conditions:
- condition: template
value_template: "{{ now().hour >= 18 }}"
- condition: template
value_template: >
{% set start_time = now().replace(hour=9, minute=0, second=0,
microsecond=0) %} {% set duration_hours =
states('sensor.duree_de_filtration_prevue') | float %} {% set
end_time = start_time + timedelta(hours=duration_hours) %} {{
now() >= end_time }}
- condition: state
entity_id: switch.shellypro2_ec6260918ad8_switch_0
state: "on"
sequence:
- service: switch.turn_off
entity_id: switch.shellypro2_ec6260918ad8_switch_0
- service: logbook.log
data:
name: Vérification du temps de filtration
message: >
Le temps de filtration prévu de {{
states('sensor.duree_de_filtration_prevue') }} heures est
dépassé. La filtration a été coupée.
- service: notify.mobile_app_s24_fabrice
data:
message: >
⚠️ Le temps de filtration prévu de {{
states('sensor.duree_de_filtration_prevue') }} heures est
dépassé. La filtration a été coupée.
- conditions:
- condition: time
after: "08:00:00"
before: "21:00:00"
sequence:
- service: input_number.set_value
data:
entity_id: input_number.ajusted_pool_temperature
value: "{{ states('sensor.piscine_2_temperature') | float }}"
mode: single
Enfin un template que j’utilise également pour afficher le temps de filtration sur mon tableau de bord :
# Capteur pour la durée de filtration prévue pour la journée
- sensor:
- name: "Durée de filtration prévue"
unit_of_measurement: "heures"
state: >
{% set temp = states('input_number.ajusted_pool_temperature') | float %}
{% if temp < 20 %}
2
{% elif 20 <= temp < 24 %}
6
{% elif 24 <= temp < 28 %}
9
{% else %}
12
{% endif %}
icon_template: mdi:clock-outline
Ma configuration
[center]## System Information
version | core-2024.6.4 |
---|---|
installation_type | Home Assistant OS |
dev | false |
hassio | true |
docker | true |
user | root |
virtualenv | false |
python_version | 3.12.2 |
os_name | Linux |
os_version | 6.6.33-haos |
arch | aarch64 |
timezone | Europe/Paris |
config_dir | /config |
Home Assistant Community Store
GitHub API | ok |
---|---|
GitHub Content | ok |
GitHub Web | ok |
GitHub API Calls Remaining | 5000 |
Installed Version | 1.34.0 |
Stage | running |
Available Repositories | 1462 |
Downloaded Repositories | 27 |
HACS Data | ok |
Home Assistant Cloud
logged_in | true |
---|---|
subscription_expiration | 16 janvier 2025 à 01:00 |
relayer_connected | true |
relayer_region | eu-central-1 |
remote_enabled | true |
remote_connected | true |
alexa_enabled | true |
google_enabled | false |
remote_server | eu-central-1-2.ui.nabu.casa |
certificate_status | ready |
instance_id | 9b1354271d894ddab777f6bfe47bce87 |
can_reach_cert_server | ok |
can_reach_cloud_auth | ok |
can_reach_cloud | ok |
Home Assistant Supervisor
host_os | Home Assistant OS 12.4 |
---|---|
update_channel | stable |
supervisor_version | supervisor-2024.06.0 |
agent_version | 1.6.0 |
docker_version | 26.1.4 |
disk_total | 28.0 GB |
disk_used | 7.9 GB |
healthy | true |
supported | true |
host_connectivity | true |
supervisor_connectivity | true |
ntp_synchronized | true |
virtualization | |
board | green |
supervisor_api | ok |
version_api | ok |
installed_addons | Terminal & SSH (9.14.0), Home Assistant Google Drive Backup (0.112.1), Studio Code Server (5.15.0), Mosquitto broker (6.4.1), Samba share (12.3.1), SAIC MQTT Gateway (Python) (0.6.2) |
Dashboards
dashboards | 3 |
---|---|
resources | 27 |
views | 11 |
mode | storage |
Recorder
oldest_recorder_run | 12 juin 2024 à 05:35 |
---|---|
current_recorder_run | 22 juin 2024 à 05:30 |
estimated_db_size | 422.38 MiB |
database_engine | sqlite |
database_version | 3.44.2 |
Spotify
api_endpoint_reachable | ok |
---|