Piscine : Gestion filtration - KeithBolton/Home-Assistant GitHub Wiki
J'ai automatisé toute la filtration de ma piscine afin de ne pas m'embêter avec ça tous les jours, en utilisant seulement une sonde de température déportée (OWON - Capteur de température connecté extérieur sur câble Zigbee (V2)). J'ai choisi un appareil Zigbee car je trouve que cela fonctionne bien mieux que le Wi-Fi, surtout chez moi, et principalement en raison de sa très faible consommation de batterie. Après déjà deux ans d'utilisation, la batterie est toujours à 100%.
Le système de gestion de filtration que je vais vous présenter est auto-adaptatif en fonction de l'évolution de la température de l'eau tout au long de la journée. Il est également possible de l'adapter avec une température fixe relevée le matin si vous préférez. Je vais vous expliquer les deux cas 😉
Allez, c'est parti !
Relever la température
1 - Relevé fixe
Si vous souhaitez faire un relevé avec une température fixe, vous devez enregistrer la température de l'eau à une heure précise chaque jour. Dans ce cas, commencez par créer un input_number dans votre fichier "configuration.yaml".
input_number:
# Enregistrement de la température de l'eau de la piscine
piscine_temperature:
name: Piscine Température 6h matin
min: 5
max: 40
step: 0.1
unit_of_measurement: "°C"
J'ai indiqué une température minimale de 5°C (pas de filtration en dessous) et une maximale de 40°C (pour être très large). Vous pouvez copier/coller le code, car il sera identique pour tout le monde. J'ai indiqué l'absence de filtration en dessous de 5°C car j'installe ma filtration quand l'eau est à 10/12°C, mais dans le cas où un matin l'eau est en dessous de 10°C, la filtration sera tout de même effectuée par précaution pour cette journée.
Ensuite, vous devez créer une automatisation pour enregistrer ce relevé de température. Pour faire simple, une fois sur la page de création d'une nouvelle automatisation, cliquez sur les trois petits points en haut à droite, basculez en mode YAML et copiez le code ci-dessous. Vous devez simplement modifier le sensor "capteur_de_temperature" par celui de votre capteur de température.
description: Piscine Relevé de température
trigger:
- platform: time
at: "06:00:00"
condition: []
action:
- data:
value: "{{ states('sensor.___capteur_de_temperature___') | float }}"
target:
entity_id: input_number.piscine_temperature
action: input_number.set_value
mode: single
À partir de là, vous pouvez redémarrer Home Assistant (HA) et tous les matins à 6 heures, l'automatisation enregistrera la température de l'eau de votre piscine dans l'input "piscine_temperature".
2 - Relevé adaptatif
Ce type de relevé permet de modifier le planning de filtration tout au long de la journée, offrant ainsi une meilleure filtration à mon sens. Vous devez simplement modifier le capteur "capteur_de_temperature" par celui de votre capteur de température.
- platform: template
sensors:
piscine_temperature_evolutive:
friendly_name: "Piscine température évolutive"
icon_template: mdi:pool-thermometer
value_template: |-
{{ states['sensor.___capteur_de_temperature___'].state | float }}
Gestion de la filtration
Maintenant que nous connaissons la température de l'eau de notre piscine, il est temps de passer à la gestion de la filtration.
Il y a quelques règles à respecter, et surtout une en particulier !
La règle la plus importante est que si on lance la filtration, elle doit faire un cycle complet. Cela signifie que le temps de filtration minimum est calculé sur le volume total d'eau de la piscine divisé par le volume d'eau filtrée par votre pompe en une heure.
Par exemple, si votre pompe a une capacité de 6 m³/h et que le volume d'eau de votre piscine est de 16 m³, vous devez diviser 16 m³ par 6 m³/h pour trouver le temps nécessaire à votre pompe pour filtrer le volume total d'eau de votre piscine.
16 / 6 = 2.66
Dans ma configuration, il faut environ 2h45, arrondi à 3h, pour une filtration correcte.
Passons maintenant au code pour indiquer l'activation/désactivation de la prise connectée de la filtration. Pour cela, toujours dans le fichier "configuration.yaml" et dans la partie "binary_sensor", nous allons gérer tout ça !
Dans le code suivant, je récupère la température de l'eau de ma piscine dans la variable "set_temperature" et je cherche l'heure actuelle avec la variable "set_heure".
{% set temperature = states['sensor.piscine_temperature_evolutive'].state | float %}
{% set heure = now().strftime('%H:%M')%}
Tout le code est francisé pour une meilleure compréhension mais si je dois expliquer le principe, je vais prendre comme exemple la première condition car ensuite, c'est exactement la même chose mais adapté au besoin.
Dans pour détailler tout ça, je commence par une condition sur la température de l'eau et si elle est inférieur à 10°C, alors c'est dans cette condition que cela va se passer.
{% if (temperature < 10 ) %}
Ensuite, si l'heure est entre 10h00 et 10h30, alors on active la prise connecté, idem, si il est entre 12h00 et 12h30, entre 14h00 et 14h30 puis entre 16h00 et 16h30. Entre ces heures là la prise est sur off. Ici, je n'ai pas respecté la temps de filtration minimum mais en règle générale, cette partie ne se déclanche jamais chez moi car j'installe ma filtration quand mon eau est à plus de 10°c, c'est juste au cas où...
{% if (heure >= "10:00" and heure <= "10:30") %}
true
{% elif (heure >= "12:00" and heure <= "12:30") %}
true
{% elif (heure >= "14:00" and heure <= "14:30") %}
true
{% elif (heure >= "16:00" and heure <= "16:30") %}
true
{% else %}
false
{%- endif %}
Ensuite on recommence une nouvelle condition en fonction de la température de l'eau et on choisi les horaires de filtration pour activer/désactiver la prise connecté.
{% if (temperature < 10 ) %}
Condition des horaires de filtration
{% elif (temperature >= 10 and temperature < 12 ) %}
Condition des horaires de filtration
{% elif (temperature >= 12 and temperature < 16 ) %}
Condition des horaires de filtration
...
{% elif (temperature >= 28 ) %}
Condition des horaires de filtration
{%- endif %}
Code complet
binary_sensor:
# Piscine : Gestion de la filtration avec prise en charge de la température de l'eau
- platform: template
sensors:
binary_piscine_filtration_automatique:
friendly_name: "Piscine filtration automatique"
icon_template: mdi:pool-thermometer
value_template: |-
{% set temperature = states['sensor.piscine_temperature_evolutive'].state | float %}
{% set heure = now().strftime('%H:%M')%}
{% if (temperature < 10 ) %}
{% if (heure >= "10:00" and heure <= "10:30") %}
true
{% elif (heure >= "12:00" and heure <= "12:30") %}
true
{% elif (heure >= "14:00" and heure <= "14:30") %}
true
{% elif (heure >= "16:00" and heure <= "16:30") %}
true
{% else %}
false
{%- endif %}
{% elif (temperature >= 10 and temperature < 12 ) %}
{% if (heure >= "10:00" and heure <= "11:00") %}
true
{% elif (heure >= "12:00" and heure <= "13:00") %}
true
{% elif (heure >= "14:00" and heure <= "15:00") %}
true
{% elif (heure >= "16:00" and heure <= "17:00") %}
true
{% else %}
false
{%- endif %}
{% elif (temperature >= 12 and temperature < 16 ) %}
{% if (heure >= "10:00" and heure <= "12:00") %}
true
{% elif (heure >= "14:00" and heure <= "16:00") %}
true
{% elif (heure >= "18:00" and heure <= "20:00") %}
true
{% else %}
false
{%- endif %}
{% elif (temperature >= 16 and temperature < 20 ) %}
{% if (heure >= "10:00" and heure <= "12:00") %}
true
{% elif (heure >= "13:00" and heure <= "15:00") %}
true
{% elif (heure >= "16:00" and heure <= "18:00") %}
true
{% elif (heure >= "19:00" and heure <= "21:00") %}
true
{% else %}
false
{%- endif %}
{% elif (temperature >= 20 and temperature < 24 ) %}
{% if (heure >= "09:00" and heure <= "12:00") %}
true
{% elif (heure >= "13:00" and heure <= "16:00") %}
true
{% elif (heure >= "17:00" and heure <= "19:00") %}
true
{% elif (heure >= "20:00" and heure <= "22:00") %}
true
{% else %}
false
{%- endif %}
{% elif (temperature >= 24 and temperature < 28 ) %}
{% if (heure >= "08:00" and heure <= "12:00") %}
true
{% elif (heure >= "13:00" and heure <= "17:00") %}
true
{% elif (heure >= "18:00" and heure <= "22:00") %}
true
{% else %}
false
{%- endif %}
{% elif (temperature >= 28 ) %}
{% if (heure >= "06:01" and heure <= "12:00") %}
true
{% elif (heure >= "13:00" and heure <= "17:00") %}
true
{% elif (heure >= "18:00" and heure <= "23:59") %}
true
{% else %}
false
{%- endif %}
{%- endif %}
Automation de la prise connecté
Maintenant que tout est codé au niveau de la température de l'eau et des heures de filtration, il faut passer aux automations !
Pour ce faire, vous devez créer 2 automations, une pour activer la prise et la seconde pour la désactiver.
Activation
Choisissez l'entité "binary_piscine_filtration_automatique" comme déclancheur. Indiquez que quand cette entité passe de "désactivé" à "activé" alors l'appareil "prise filtration piscine" est activé.
L'activation et la désactivation est faite en fonction des condition dans le code du binary sensor "binary_piscine_filtration_automatique". Quand les conditions sont sur "true" alors la prise doit être activée et quand les conditions sont sur "false" alors la prise doit être désactivée.
alias: "Piscine : Allumer Filtration"
description: ""
trigger:
- platform: state
entity_id:
- binary_sensor.binary_piscine_filtration_automatique
from: "off"
to: "on"
condition: []
action:
- type: turn_on
device_id: 5b7b96c482XXXXXXXXXXXX
entity_id: 7ef9bc4830XXXXXXXXXXXX
domain: switch
mode: single
Désactivation
Choisissez l'entité "binary_piscine_filtration_automatique" comme déclancheur. Indiquez que quand cette entité passe de "activé" à "désactivé" alors l'appareil "prise filtration piscine" est désactivé.
alias: "Piscine : Arreter filtration"
description: ""
trigger:
- platform: state
entity_id:
- binary_sensor.binary_piscine_filtration_automatique
from: "on"
to: "off"
condition: []
action:
- type: turn_off
device_id: 5b7b96c482XXXXXXXXXXXX
entity_id: 7ef9bc4830XXXXXXXXXXXX
domain: switch
mode: single
Redémarrez HA et le tour est joué !!
Voilà, vous savez tout pour gérer au mieux la filtration de votre piscine sans rien faire 😉