Bonjour à tous,
Je n’avais pas pensé à regarder ici pour trouver des idées sur l’automatisation de la durée de la filtration et en ouvrant ce sujet je me rends compte qu’il y avait de la matière sans avoir à le créer par moi-même. Mais bon, maintenant que c’est fait et que ça correspond à ma manière de faire, je le partage ici quand même.
Il y a 2 automatisations :
- Piscine_pompe_Calendrier
Dès que le helper de la température de l’eau de la piscine est mis à jour, cette automatisation se lance et change la valeur des 4 helpers pour la gestion de la pompe : début 1, fin 1, début 2, fin 2. Cela permet de gérer 2 plages horaires dans la journée, pour faire tourner la pompe dans les heures creuses la nuit et en journée. Chaque température se voit associer un calendrier fixe : je préfère par rapport à une formule car cela me permet de gérer exactement quand la pompe fonctionne. - Piscine_pompe_on_off
Dès qu’une heure d’un des 4 helpers est rencontré l’automatisation se lance, et selon si c’est un helper de début ou de fin c’est pour démarrer ou éteindre la pompe.
Piscine_pompe_Calendrier
alias: Piscine_pompe_Calendrier
triggers:
- entity_id: input_number.piscine_temperature_eau
trigger: state
actions:
- variables:
temp: "{{ states('input_number.piscine_temperature_eau') | int(default=4) }}"
time_values: |
{% set schedules = {
4: ["06:00:00", "07:00:00", "16:00:00", "17:00:00"],
5: ["06:00:00", "07:00:00", "16:00:00", "17:00:00"],
6: ["06:00:00", "07:00:00", "16:00:00", "17:00:00"],
7: ["06:00:00", "07:00:00", "16:00:00", "17:00:00"],
8: ["05:30:00", "07:00:00", "15:30:00", "17:00:00"],
9: ["05:30:00", "07:00:00", "15:30:00", "17:00:00"],
10: ["05:00:00", "07:00:00", "15:00:00", "17:00:00"],
11: ["05:00:00", "07:00:00", "15:00:00", "17:00:00"],
12: ["04:00:00", "07:00:00", "14:00:00", "17:00:00"],
13: ["04:00:00", "07:00:00", "14:00:00", "17:00:00"],
14: ["03:00:00", "07:00:00", "14:00:00", "17:00:00"],
15: ["03:00:00", "07:00:00", "14:00:00", "17:00:00"],
16: ["02:00:00", "07:00:00", "14:00:00", "17:00:00"],
17: ["02:00:00", "07:00:00", "14:00:00", "17:00:00"],
18: ["02:00:00", "08:00:00", "14:00:00", "17:00:00"],
19: ["02:00:00", "08:00:00", "14:00:00", "17:00:00"],
20: ["02:00:00", "09:00:00", "14:00:00", "17:00:00"],
21: ["02:00:00", "09:00:00", "14:00:00", "17:00:00"],
22: ["02:00:00", "10:00:00", "14:00:00", "17:00:00"],
23: ["02:00:00", "10:00:00", "14:00:00", "17:00:00"],
24: ["02:00:00", "11:00:00", "14:00:00", "17:00:00"],
25: ["02:00:00", "11:00:00", "14:00:00", "17:00:00"],
26: ["02:00:00", "12:00:00", "14:00:00", "17:00:00"],
27: ["00:00:00", "12:00:00", "13:00:00", "18:00:00"],
28: ["00:00:00", "12:00:00", "13:00:00", "18:00:00"],
29: ["00:00:00", "12:00:00", "13:00:00", "18:00:00"],
30: ["00:00:00", "12:30:00", "13:00:00", "23:30:00"]
} %}
{% if temp < 4 %}
{{ schedules[4] }}
{% elif temp > 30 %}
{{ schedules[30] }}
{% else %}
{{ schedules[temp] }}
{% endif %}
- condition: template
value_template: "{{ time_values is not none }}"
- target:
entity_id: input_datetime.piscine_pompe_h1_debut
data:
time: "{{ time_values[0] }}"
action: input_datetime.set_datetime
- target:
entity_id: input_datetime.piscine_pompe_h1_fin
data:
time: "{{ time_values[1] }}"
action: input_datetime.set_datetime
- target:
entity_id: input_datetime.piscine_pompe_h2_debut
data:
time: "{{ time_values[2] }}"
action: input_datetime.set_datetime
- target:
entity_id: input_datetime.piscine_pompe_h2_fin
data:
time: "{{ time_values[3] }}"
action: input_datetime.set_datetime
mode: single
Piscine_pompe_on_off
alias: Piscine_pompe_on_off
description: ""
triggers:
- value_template: >-
{{ now().strftime('%H:%M:%S') ==
states('input_datetime.piscine_pompe_h1_debut')[-8:] }}
trigger: template
id: "ON"
- value_template: >-
{{ now().strftime('%H:%M:%S') ==
states('input_datetime.piscine_pompe_h2_debut')[-8:] }}
trigger: template
id: "ON"
- value_template: >-
{{ now().strftime('%H:%M:%S') ==
states('input_datetime.piscine_pompe_h1_fin')[-8:] }}
trigger: template
id: "OFF"
- value_template: >-
{{ now().strftime('%H:%M:%S') ==
states('input_datetime.piscine_pompe_h2_fin')[-8:] }}
trigger: template
id: "OFF"
actions:
- choose:
- conditions:
- condition: trigger
id:
- "ON"
sequence:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.piscine_pompe_etat
- conditions:
- condition: trigger
id:
- "OFF"
sequence:
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.piscine_pompe_etat
mode: single
Pour le moment j’affiche de manière assez rudimentaire quelques infos sur le dashboard, je verrais plus tard comment faire plus joli :
Code
- type: markdown
content: >
{% set h1_debut = states('input_datetime.piscine_pompe_h1_debut') %}
{% set h1_fin = states('input_datetime.piscine_pompe_h1_fin') %}
{% set h2_debut = states('input_datetime.piscine_pompe_h2_debut') %}
{% set h2_fin = states('input_datetime.piscine_pompe_h2_fin') %}
{% set h1_debut = today_at(h1_debut) %}
{% set h1_fin = today_at(h1_fin) %}
{% set duration_h1 = (h1_fin - h1_debut).total_seconds() / 3600 %}
{% set h2_debut = today_at(h2_debut) %}
{% set h2_fin = today_at(h2_fin) %}
{% set duration_h2 = (h2_fin - h2_debut).total_seconds() / 3600 %}
{% set total_duration = (duration_h1 + duration_h2) | round(0) %}
**Température de l'eau**
{{ states('input_number.Piscine_temperature_eau') }} °C
**{{ total_duration }}h de fonctionnement**
{{ states('input_datetime.piscine_pompe_h1_debut') }} - {{
states('input_datetime.piscine_pompe_h1_fin') }} ; {{
states('input_datetime.piscine_pompe_h2_debut') }} - {{
states('input_datetime.piscine_pompe_h2_fin') }}
Rien de bien révolutionnaire mais je partage si jamais cela peu aider.