Bonjour à tous,
Je débute avec HA et je souhaite automatiser ma pompe de piscine grâce à un interrupteur DIN en Zigbee comme celui-ci.
J’ai trouvé plusieurs sujets intéressants sur le forum, mais aucun ne me donne entière satisfaction par rapport à mon cahier des charges… N’ayant aucune connaissance en YAML, j’ai bossé avec Gemini qui m’a bien mâché le travail en me créant une automatisation pour l’été et une pour l’hiver.
Actuellement, je teste le mode hiver qui fonctionne basiquement (pompe allumée de 5h à 6h du matin) mais je n’ai pas eu l’occasion de tester le hors-gel (pompe tourne 5min si T°<0°), ni le mode été évidemment.
Je viens solliciter vos avis et conseils sur ce qu’il serait peut-être possible d’améliorer (garde fous en cas de coupure EDF par exemple, etc…) ou également de fiabiliser/simplifier dans le code. Voir également s’il est possible de tout avoir en une seule automatisation (si ça a un intérêt quelconque).
Merci d’avance à tous pour vos avis éclairés!
Voici le cahier des charges :
4 modes de fonctionnement à choisir avec un switch sur HA :
- Automatique été (T° eau >=15°C)
- Automatique hiver (T° eau <15°C)
- Marche forcée
- Arrêt
Mode automatique été :
- Démarrage de la pompe pendant 5min à 6h du matin, pour faire circuler l'eau sur le capteur T°
- Coupure pompe
- Calcul du temps de filtration selon les plages suivantes :
- 15 à 20°C = 2h
- 21 à 25°C = 5h
- 26 à 30°C = 10h
- Calcul de l'heure de démarrage de la pompe pour optimisation selon panneaux solaires et heures de baignade :
- 15 à 20°C = de 12h jusqu'à 14h
- 21 à 25°C = de 10h jusqu'à 15h
- 26 à 30°C = de 09h30 jusqu'à 19h30
- Démarrage de la pompe à l'heure prévue et pour la durée programmée
- Arrêt de la pompe
Mode automatique hiver :
- Démarrage de la pompe tous les matins de 5h à 6h
- Coupure pompe
- Démarrage de la pompe pendant 5min si la T° de l'eau descend à 0°C
- Coupure pompe
Automatisation hiver :
alias: "Piscine : Modes Statiques (Version Finale)"
description: Gère l'arrêt, la marche forcée et le mode hiver avec protection gel 5min
triggers:
- entity_id: input_select.mode_pompe_piscine
trigger: state
- at: "05:00:00"
trigger: time
- at: "06:00:00"
trigger: time
- entity_id: sensor.capteur_tdeg_piscine_temperature
below: 0.1
trigger: numeric_state
conditions: []
actions:
- choose:
- conditions:
- condition: state
entity_id: input_select.mode_pompe_piscine
state: Arrêt
sequence:
- target:
entity_id: switch.pompe_piscine
action: switch.turn_off
- conditions:
- condition: state
entity_id: input_select.mode_pompe_piscine
state: Marche forcée
sequence:
- target:
entity_id: switch.pompe_piscine
action: switch.turn_on
- conditions:
- condition: state
entity_id: input_select.mode_pompe_piscine
state: Automatique hiver
sequence:
- if:
- condition: or
conditions:
- condition: time
after: "04:59:59"
before: "06:00:00"
- condition: numeric_state
entity_id: sensor.capteur_tdeg_piscine_temperature
below: 0.1
then:
- target:
entity_id: switch.pompe_piscine
action: switch.turn_on
- if:
- condition: numeric_state
entity_id: sensor.capteur_tdeg_piscine_temperature
below: 0.1
- condition: not
conditions:
- condition: time
after: "04:59:59"
before: "06:00:00"
then:
- delay: "00:05:00"
- target:
entity_id: switch.pompe_piscine
action: switch.turn_off
else:
- target:
entity_id: switch.pompe_piscine
action: switch.turn_off
mode: restart
Automatisation été :
alias: "Piscine : Mode Été"
description: Gestion dynamique selon la température
triggers:
- at: "06:00:00"
trigger: time
- at: "09:30:00"
trigger: time
- at: "10:00:00"
trigger: time
- at: "12:00:00"
trigger: time
conditions:
- condition: state
entity_id: input_select.mode_pompe_piscine
state: Automatique été
actions:
- choose:
- conditions:
- condition: time
after: "05:59:59"
before: "06:00:01"
sequence:
- target:
entity_id: switch.pompe_piscine
action: switch.turn_on
- delay: "00:05:00"
- target:
entity_id: switch.pompe_piscine
action: switch.turn_off
- conditions:
- condition: template
value_template: >
{% set temp = states('sensor.capteur_tdeg_piscine_temperature') |
float(0) %} {% set h = now().strftime('%H:%M') %} {% if 15 <= temp
<= 20 and h == '12:00' %} true {% elif 21 <= temp <= 25 and h ==
'10:00' %} true {% elif 26 <= temp <= 30 and h == '09:30' %} true
{% else %} false {% endif %}
sequence:
- target:
entity_id: switch.pompe_piscine
action: switch.turn_on
- delay: >
{% set temp = states('sensor.capteur_tdeg_piscine_temperature') |
float(0) %} {% if temp <= 20 %} 02:00:00 {% elif temp <= 25 %}
05:00:00 {% else %} 10:00:00 {% endif %}
- target:
entity_id: switch.pompe_piscine
action: switch.turn_off
System Information
| version | core-2026.1.2 |
|---|---|
| installation_type | Home Assistant OS |
| dev | false |
| hassio | true |
| docker | true |
| container_arch | aarch64 |
| user | root |
| virtualenv | false |
| python_version | 3.13.11 |
| os_name | Linux |
| os_version | 6.12.47-haos-raspi |
| arch | aarch64 |
| timezone | Europe/Paris |
| config_dir | /config |
Home Assistant Community Store
| GitHub API | ok |
|---|---|
| GitHub Content | ok |
| GitHub Web | ok |
| HACS Data | ok |
| GitHub API Calls Remaining | 5000 |
| Installed Version | 2.0.5 |
| Stage | running |
| Available Repositories | 2634 |
| Downloaded Repositories | 8 |
Home Assistant Cloud
| logged_in | false |
|---|---|
| can_reach_cert_server | ok |
| can_reach_cloud_auth | ok |
| can_reach_cloud | ok |
Home Assistant Supervisor
| host_os | Home Assistant OS 16.3 |
|---|---|
| update_channel | stable |
| supervisor_version | supervisor-2026.01.1 |
| agent_version | 1.7.2 |
| docker_version | 28.3.3 |
| disk_total | 234.0 GB |
| disk_used | 7.4 GB |
| nameservers | fe80::6e3:1aff:fe9c:4910, 192.168.0.1, 2a01:cb19:efb:5f00:6e3:1aff:fe9c:4910 |
| healthy | true |
| supported | true |
| host_connectivity | true |
| supervisor_connectivity | true |
| ntp_synchronized | true |
| virtualization | |
| board | rpi4-64 |
| supervisor_api | ok |
| version_api | ok |
| installed_addons | Advanced SSH & Web Terminal (22.0.3), Mosquitto broker (6.5.2), Zigbee2MQTT (2.7.2-1), Home Assistant Google Drive Backup (0.112.1), Samba share (12.5.4), File editor (5.8.0), AppDaemon (0.17.13) |
Dashboards
| dashboards | 2 |
|---|---|
| resources | 4 |
| views | 2 |
| mode | storage |
Network Configuration
| adapters | lo (disabled), end0 (enabled, default, auto), hassio (disabled), docker0 (disabled), veth6b11da5 (disabled), vethe6c580a (disabled), veth44380e4 (disabled), veth68dcaba (disabled), veth7ecc38f (disabled), vethde3da27 (disabled), veth9886c81 (disabled), vethb17287f (disabled), veth0b9f4dd (disabled), veth19b8c01 (disabled), vethf5b66a8 (disabled) |
|---|---|
| ipv4_addresses | lo (127.0.0.1/8), end0 (192.168.0.25/24), hassio (172.30.32.1/23), docker0 (172.30.232.1/23), veth6b11da5 (), vethe6c580a (), veth44380e4 (), veth68dcaba (), veth7ecc38f (), vethde3da27 (), veth9886c81 (), vethb17287f (), veth0b9f4dd (), veth19b8c01 (), vethf5b66a8 () |
| ipv6_addresses | lo (::1/128), end0 (2a01:cb19:efb:5f00:7578:b655:5d6b:e885/64, fe80::8782:f740:7f58:fa24/64), hassio (fd0c:ac1e:2100::1/48, fe80::38dc:4cff:fe29:2643/64), docker0 (fe80::f8d9:b6ff:fede:9ded/64), veth6b11da5 (fe80::4a8:adff:feef:9ebb/64), vethe6c580a (fe80::64ac:1fff:fe71:d352/64), veth44380e4 (fe80::ec8e:41ff:fe3f:e9e8/64), veth68dcaba (fe80::5c46:d5ff:fefe:c371/64), veth7ecc38f (fe80::80c1:3fff:fec0:fba9/64), vethde3da27 (fe80::682c:f4ff:fe1a:a8b/64), veth9886c81 (fe80::b069:1ff:fe54:8446/64), vethb17287f (fe80::38b3:d8ff:fe5f:f6e0/64), veth0b9f4dd (fe80::c0ab:47ff:fefb:c7cb/64), veth19b8c01 (fe80::c8e9:24ff:feb7:e8b8/64), vethf5b66a8 (fe80::8cea:d9ff:fe02:d62a/64) |
| announce_addresses | 192.168.0.25, 2a01:cb19:efb:5f00:7578:b655:5d6b:e885, fe80::8782:f740:7f58:fa24 |
Recorder
| oldest_recorder_run | 12 janvier 2026 à 17:35 |
|---|---|
| current_recorder_run | 17 janvier 2026 à 10:58 |
| estimated_db_size | 359.92 MiB |
| database_engine | sqlite |
| database_version | 3.49.2 |