Piscine et durée de fonctionnement de la pompe

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.

2 « J'aime »

Bonjour , merci pour le partage .