HA-Gestion piscine-1_Filtration avec « Pool pump Manager »

Update du 5 février 2022

Cet article est devenu dans ma configuration, obsolète, il ne sera plus maintenu et restera dans cette version.

En effet, j’utilise depuis février 2022, une application AppDaemon personnelle plus adaptée à mes besoins. Je vous invite à la découvrir dans cet article.

Bien évidemment, Pool Pump manager reste fonctionnel et vous pouvez très bien l’utiliser comme décrit dans cet article.

Intro

Heureux possesseur d’une piscine depuis de nombreuses années, je constate au quotidien que le poste dépense consommation électrique prend une part importante dans le budget de fonctionnement. L’optimisation du temps de filtration est donc primordial, et cela bien évidemment tout en respectant la qualité de l’eau de baignade.

Dans cet article, je partage mon expérience sur la gestion du temps de pompage.

Pré requis

La mise en oeuvre nécessite un minimum de connaissances sur les fondamentaux de HA. 

Remarque: Mes fichiers « .yaml » sont regroupés dans un dossier « config/packages ». J’utilise la directive « !include_dir_named packages » très pratique pour organiser son HA.

Avant la migration de mon système domotique de Jeedom vers HA, je pilotais la pompe de filtration avec Jeedom et le plugin « Pool » de scadinot.controle

Une fois sur HA, j’ai cherché le moyen de remplacer le plugin par des fonctions similaires sur HA. Apres plusieurs tests de plugin et autres programmations sans succès, je me suis arrêté sur le HACS « Pool pump Manager » développé par « oncleben31« .

Ce composant a été développé sur la base de celui de « exxamalte » avec quelques améliorations dont la principale est la prise en compte de la température de l’eau dans le calcul de la durée de filtration.

L’intégration du module dans HA, simplifiée par l’utilisation de HACS, est très bien décrite dans la documentation, elle se décompose ainsi:

Intégration dans HACS,

Choisir la branche « Dev » du module.

Déclaration du module « pool_pump »

et des trois variables indispensables au fonctionnement du module dans configuration.yaml:

pool_pump:
  switch_entity_id: switch.pool_pump_switch
  pool_pump_mode_entity_id: input_select.pool_pump_mode
  pool_temperature_entity_id: sensor.pool_water_temperature
  • avec:
    • switch_entity_id: nom de l’entité de pilotage de la pompe
    • pool_pump_mode_entity_id: nom de l’entité permettant de selectionner le mode de fonctionnement de la pompe
    • pool_temperature_entity_id: nom de l’entité de la mesure de temperature de l’eau

Le module nécessite la mesure de la température de l’eau et le pilotage de la pompe de filtration, personnellement j’utilise un automate WAGO série 750 communiquant en Modbus, équipé d’une carte d’entrées pt100, d’une carte d’entrées digitales et d’une carte de sortie relais.

Bien entendu, cet automate peut être remplacé par n’importe quel dispositif compatible HA, remplissant les mêmes fonctionnalités. Un ESP32 équipé d’une sonde ds18b20  et d’un module de sortie relais sous ESPHOME peut très bien convenir.

En retour le module calcule deux entités:

  • pool_pump.next_run_schedule: L’heure de début et fin de la filtration en deux fois, avant et après l’heure pivot.
  • pool_pump.total_daily_filtering_duration: le temps de filtration théorique sur la journée.

Déclaration des entités

Les entités associées à la piscine sont regroupées dans un fichier piscine.yaml.

input_number:
  # utilisé pour simuler la température de l'eau pendant les test
  temp_piscine:
    name: Temp Eau Simul
    min: -2
    max: 35
    unit_of_measurement: °C
    icon: mdi:thermometer

# temperature de l'eau avant arret ppe
  mem_temp_piscine:
    name: Temp Eau avant arret
    min: -2
    max: 35
    unit_of_measurement: °C
    step: 0.1
    icon: mdi:thermometer
    mode: box

# temperature de l'eau avant arret ppe
  temps_cartouche_chlore:
    name: Temps cartouche Chlore
    min: 0
    max: 3600
    unit_of_measurement: h
    step: 0.1
    icon: mdi:clock
    mode: box

# Seuil inferieur temperature Hors gel
  hors_gel_inf:
    name: Temp Inf Hors-Gel
    min: -5
    max: 1
    unit_of_measurement: °C
    icon: mdi:thermometer
# Seuil superieur temperature Hors gel
  hors_gel_sup:
    name: Temp Sup Hors-Gel
    min: -2
    max: 5
    unit_of_measurement: °C
    icon: mdi:thermometer

input_datetime:
  heure_ouv_volet_pisc:
    name: Heure Ouv Volet Auto
    has_date: false
    has_time: true

  heure_ferm_volet_pisc:
    name: Heure Ferm Volet Auto
    has_date: false
    has_time: true

  heure_ma_pump_pisc_hiv:
    name: Heure Ma Pompe Pisc Hiv
    has_date: false
    has_time: true

  heure_at_pump_pisc_hiv:
    name: Heure At Pompe Pisc Hiv
    has_date: false
    has_time: true

input_boolean:
  # inutilisée????????? à verifier
  pool_water_level_critical:
    name: Niveau eau critique
    initial: false

  # EV appoint Piscine en mode automatique
  ev_eau_piscine:
    name: Ev Piscine
    icon: mdi:water
  
  # Volet Piscine en mode automatique
  volet_piscine_auto:
    name: Volet Piscine (Auto=1)
    icon: mdi:garage

  #cde eclairage piscine
  eclairage_piscine:
    name: Eclairage piscine
    icon: mdi:car-light-high

  # Calcul du hors gel- Mémoire de mise en hors gel
  hors_gel:
    name: Gel piscine (si=1)
    icon: mdi:snowflake-alert
    initial: false

# selection du mode de fonctionnement de la filtration
input_select:
  pool_pump_mode:
    name: Pool Pump mode
    options:
      - "Auto"
      - "On"
      - "Off"
      - "Hivernage"
    initial: "Auto"
    icon: mdi:pool

sensor:
  # Affichage du temps de fonctionnement de la pompe ce jour
  - platform: history_stats
    name: Pool Pump running today
    entity_id: binary_sensor.pool_pump_running
    state: "on"
    type: time
    start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
    end: "{{ now() }}"

  # Affichage du temps de fonctionnement de l'électrovanne appoint d'eau ce jour
  - platform: history_stats
    name: Ev Eau tps ouverture jour
    entity_id: switch.cde_ev_eau
    state: "on"
    type: time
    start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
    end: "{{ now() }}"
    
  # Affichage du temps de fonctionnement de l'électrovanne appoint d'eau sur 7 jours
  - platform: history_stats
    name: Ev eau sur 7j
    entity_id: switch.cde_ev_eau
    state: 'on'
    type: time
    end: "{{ now().replace(hour=0, minute=0, second=0) }}"
    duration:
      days: 7
    
template:
# mesure de la température de l'eau, permet de basculer facilement en mode simulation
# en commentant ou decommentant les lignes ci-dessous
  sensor:
    - name: "pool_water_temperature"
      state: "{{ states('input_number.mem_temp_piscine')|float(default=0)|round(1) }}" # memoire temperature de l'eau avant arret pompe
        #e_template: "{{ states('input_number.temp_piscine_ph')|float|round(1) }}" # Simulation avec input_numbe
      icon: mdi:oil-temperature
      unit_of_measurement: "ºC"

        # calcul de l'heure pivot, c'est l'heure autour de laquelle le temps de fonctionnement est réparti
    - name: "heure_pivot_piscine"
      state: '{{ as_timestamp(strptime(state_attr("sun.sun", "next_noon"), "")) | timestamp_custom("%H:%M") }}'
      icon: mdi:weather-sunny


  # Recopie pression filtre lu dans esphome dans un template
    - name: "pression_piscine_p"
      state: '{{ states("sensor.pression_filtre") |float(default=0) | round(2) }}'
      unit_of_measurement: "Bars"

  binary_sensor:
    # Si la puissance electrique est superieure à 500w, on considere que la pompe est en fonctionnement
    - name: "pool_pump_running"
      state: >-
        {{states.sensor.pzem_pisc_puissance.state | float(default=0) > 500}}

  # Calcul en fonction de la position du soleil
  # Sun Azimtuh est calculé dans Meteo
    - name: "soleil_volet_piscine"
      state: >-
        {% set a=states('sensor.sun_azimuth_2')|float(default=0) %}
        {{ (a>97) and (a<290) }}

# Commande du volet roulant via un Cover
cover:
  - platform: template
    covers:
      volet_piscine:
        device_class: garage
        value_template: "{{is_state('binary_sensor.volet_piscine_ferme', 'off')}}"
        open_cover:
          service: script.volet_piscine_ouverture
        close_cover:
          service: script.volet_piscine_fermeture
        icon_template: >-
          {% if is_state('binary_sensor.volet_piscine_ferme', 'on') %}
            mdi:garage
          {% else %} 
            {% if is_state('binary_sensor.volet_piscine_ferme', 'off') %}
            mdi:garage-open
          {% else %}
            mdi:garage-alert
          {% endif %}
          {% endif %}

Modes de Fonctionnement

J’utilise 4 modes de fonctionnement sélectionnable par « input_select.mode_fonctionnement_piscine »:

  • Ete: Temps de fonctionnement calculé en fonction de la température de l’eau
  • Hiver: Filtration en fonction d’une de début et d’une durée maximum de filtration
  • Ma F: Marche forcée de la pompe
  • At F: Arrêt forcé de la pompe

En fonction du mode sélectionné, l’automatisation déclenche les actions requises (force le « input_select.pool_pump_mode » et déclenche le service « pool_pump.check »).

Au lancement, HA exécute une fois le service « pool_pump.check » afin d’éviter d’avoir des valeurs inconnues dans le temps et les horaires de filtration.

Descriptif fonctionnel

Code de l’automatisation

- id: '1611515162753'
  alias: Piscine 1-Calcul fonctionnement Pompe Ete/Hiver
  description: Mode Ete/Hiver/Ma Forcée/At Forcé
  trigger:
  - platform: state
    entity_id: sensor.pool_water_temperature
    id: temp
  - platform: state
    entity_id: input_select.mode_fonctionnement_piscine
    id: mode
  - platform: state
    entity_id: input_boolean.piscine_arret_force
    id: at_forcé
  - platform: time_pattern
    minutes: /5
    id: 5min
  condition: []
  action:
  - choose:
    - conditions:
      - condition: and
        conditions:
        - condition: state
          entity_id: input_select.mode_fonctionnement_piscine
          state: Ete
        - condition: or
          conditions:
          - condition: trigger
            id: temp
          - condition: trigger
            id: at_forcé
          - condition: state
            entity_id: input_select.mode_fonctionnement_piscine
            state: Ete
      sequence:
      - service: input_select.select_option
        target:
          entity_id: input_select.pool_pump_mode
        data:
          option: Auto
    - conditions:
      - condition: state
        entity_id: input_select.mode_fonctionnement_piscine
        state: Hiver
      sequence:
      - choose:
        - conditions:
          - condition: time
            after: input_datetime.heure_ma_pump_pisc_hiv
          - condition: numeric_state
            entity_id: sensor.pool_pump_running_today
            below: input_number.duree_filtration_max_mode_hiver
          sequence:
          - service: input_select.select_option
            target:
              entity_id: input_select.pool_pump_mode
            data:
              option: 'On'
          - service: homeassistant.turn_on
            target:
              entity_id: switch.pool_pump_switch
        default:
        - service: input_select.select_option
          target:
            entity_id: input_select.pool_pump_mode
          data:
            option: 'Off'
        - service: homeassistant.turn_off
          target:
            entity_id: switch.pool_pump_switch
    - conditions:
      - condition: state
        entity_id: input_select.mode_fonctionnement_piscine
        state: Ma F
      sequence:
      - service: input_select.select_option
        target:
          entity_id: input_select.pool_pump_mode
        data:
          option: 'On'
      - service: homeassistant.turn_on
        target:
          entity_id: switch.pool_pump_switch
    - conditions:
      - condition: state
        entity_id: input_select.mode_fonctionnement_piscine
        state: At F
      sequence:
      - service: input_select.select_option
        target:
          entity_id: input_select.pool_pump_mode
        data:
          option: 'Off'
      - service: homeassistant.turn_off
        target:
          entity_id: switch.pool_pump_switch
    - conditions:
      - condition: trigger
        id: Start
      sequence: []
    default: []
  - service: pool_pump.check
  mode: single

Calcul du temps de filtration (Mode Automatique).

La durée de filtration est régit par la courbe bleue de AbacusFilteringDuration() également utilisée par le plugin Jeedom, c’est une des fonctionnalités du module Python « PyPoolPump » développé par oncleben31.

Voici le détail de la courbe de filtration, nous utilisons la courbe bleue représente la valeur 100%. La courbe verte 140% et la courbe rouge 60% ne sont pas utilisées dans notre cas, il n’y a pas dans cette version la possibilité de pondérer l’action de la température sur la durée.


L’automatisation principale appelle le « service: pool_pump.check », celui ci évalue l’heure de démarrage et l’heure d’arrêt de la pompe en fonction de:

  • l’heure actuelle
  • la température de l’eau
  • l’heure pivot:
    • Celle ci correspond à l’heure du midi solaire UTC (zenith) voir_doc . le temps de filtration est réparti 1/3 avant l’heure pivot et 2/3 après. J’ai déclaré le template « heure_pivot_piscine: » afin de le visualiser dans la carte Pool. Ce n’est pas indispensable mais c’est utile à la compréhension du fonctionnement .

NB: Vous pourrez constater quelques fois, qu’à l’heure de début filtration calculée, la pompe démarre puis s’arrête quelques instants plus tard pour redémarrer ensuite. C’est normal, à chaque changement de T° de l’eau ou toutes les 5 minutes, la durée est recalculée. Si la température a baissée, le système recalcule à la baisse le temps de filtration et donc l’heure de démarrage.

Le temps de fonctionnement est recalculé sur:

  • Le changement de la température de l’eau
  • Changement du mode de fonctionnement
  • Arret forcé mode auto
  • Toutes les 5 minutes
  • Au lancement de HA

Mesure de la température de l’eau

Mise en oeuvre

La sonde de mesure de température est située dans mon sous sol. Lorsque la filtration est arrêtée, la température mesurée évolue lentement vers celle du sous-sol qui l’été, est très inférieure à la température de l’eau. Le lendemain, le système se base sur une température inférieure à celle de l’eau donc recalcule un temps de filtration trop faible, démarre la pompe tard dans la matinée, ajuste le temps de filtration qui s’allonge au fur et à mesure que la température mesurée se rapproche de celle de l’eau, pour finir avec une filtration qui se terminera tard dans la nuit.

La solution est simple, HA mémorise la température de l’eau uniquement quand la pompe est en fonctionnement, il garde ainsi la température de l’eau avant l’arrêt de la pompe.

Un automatisme, mémorise toutes les 15 minutes , si la pompe de filtration est en marche, la mesure de la température dans un input_number, utilisé dans le calcul du temps de filtration.

il faut ajouter ce code d’automatisation à ajouter dans votre fichier .yaml

Code de l’automatisme

- id: '1623911201023'
  alias: Piscine Mémorisation Température avant arrêt
  description: 'On fait tourner la pompe 15 mn avant prise en compte de la température '
  trigger:
  - platform: time_pattern
    minutes: /1
  condition:
  - condition: state
    entity_id: binary_sensor.pool_pump_running
    state: 'on'
    for: 00:15:00
  action:
  - service: input_number.set_value
    target:
      entity_id: input_number.mem_temp_piscine
    data_template:
      value: '{{ states(''sensor.temp_piscine'')|float }}'
  mode: single

Il faut modifier le sensor.pool_water_temperature comme suit:

  # mesure de la température de l'eau, permet de basculer facilement en mode simulation
  # en commentant ou decommentant les lignes ci-dessous
  - platform: template
    sensors:
      pool_water_temperature:
        friendly_name: "sensor.pool_water_temperature"
        value_template: "{{ states('input_number.mem_temp_piscine')|float|round(1) }}" # memoire temperature de l'eau avant arret pompe
        #        value_template: "{{ states('input_number.temp_piscine_ph')|float|round(1) }}" # Simulation avec input_numbe
        icon_template: mdi:oil-temperature
        unit_of_measurement: "ºC"

Indicateur de fonctionnement de la pompe

La consommation électrique de mon coffret piscine est monitorée par un PZEM004 couplé à un ESP8266-12F sous ESPHOME. Se reporter à l’article suivant « home-assistant-gestion-piscine-2_mesure-de-puissance-electrique »

Si la puissance absorbée par le coffret est supérieure à 500W, je considère que la pompe est en fonctionnement.

Le test permet de calculer un binary_sensor.pool_pump_running:

binary_sensor:
# Si la puissance electrique est superieure à 500w, on considère que la pompe est en fonctionnement
  - platform: template
    sensors:
      pool_pump_running:
        value_template: "{{ states.sensor.pzem_pisc_puissance.state | float > 500 }}"
        friendly_name: "Pompe Filtration en Ma"

Cette variable est importante car elle reflète la réalité de l’état de fonctionnement de la pompe, je l’utilise dans plusieurs automatisme comme la régulation de pH, calcul du temps de fonctionnement, etc..

Calcul du temps de fonctionnement de la pompe

sensor:
  # Affichage du temps de fonctionnement de la pompe ce jour
  - platform: history_stats
    name: Pool Pump running today
    entity_id: binary_sensor.pool_pump_running
    state: "on"
    type: time
    start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
    end: "{{ now() }}"

Panneaux de commande

Je vous propose, pour information, une copie d’écran et les codes associés, de mes panneaux de contrôle, libre à vous de les adapter. Certaines fonctionnalités seront décrites ultérieurement (pression, pH, Appoint eau, Chlore, ORP, etc..).

Carte N°1

Récapitulatif des principales grandeurs numériques et des commandes importantes.

Lien vers le code source

Carte N°2

Un résumé des périodes de fonctionnement

Lien vers le code source

Carte N°3

Visualisation et accès à l’ensemble des paramètres.

lien vers le code source

Carte N°4

Lien vers le code source

Notifications

Notification sur Telegram de:

  • Début de filtration
  • Fin de filtration
  • Récapitulatif de fin de journée ave le temps de fonctionnement de la pompe, la consommation de la piscine en kW, le temps d’utilisation des cartouches de chlore.
- id: '1634222619535'
  alias: Piscine Notifications filtration
  description: Debut, Fin
  trigger:
  - platform: state
    entity_id: binary_sensor.pool_pump_running
    from: 'off'
    to: 'on'
    id: ma_ppe
  - platform: state
    entity_id: binary_sensor.pool_pump_running
    id: at_ppe
    from: 'on'
    to: 'off'
  - platform: time
    at: '23:59'
    id: minuit
  condition: []
  action:
  - choose:
    - conditions:
      - condition: trigger
        id: ma_ppe
      sequence:
      - service: notify.telegram
        data:
          message: '{{states("sensor.date_time") }}'
          title: Piscine Début Filtration
    - conditions:
      - condition: trigger
        id: at_ppe
      sequence:
      - service: notify.telegram
        data:
          message: '{{states("sensor.date_time") }}}'
          title: Piscine Fin de filtration
    - conditions:
      - condition: trigger
        id: minuit
      sequence:
      - service: notify.telegram
        data:
          message: 'Temps de filtration:  {{states.sensor.pool_pump_running_today.attributes.value}}{{-"\n"-}}Conso:
            {{states(''sensor.energy_pisc_daily'')}} kWh.{{-"\n"-}} Tps Utilisation
            cart. Chlore: {{states(''input_number.temps_cartouche_chlore'')}} h {{-"\n"-}}{{states("sensor.date_time")
            }}'
          title: Piscine Rapport Fin de journée
      - service: notify.log_piscine
        data:
          message: '{{states.sensor.pool_pump_running_today.attributes.value }},{{states(''sensor.energy_pisc_daily'')}}'
          title: Rapport jour piscine
    default: []
  mode: single

Conclusion

J’espère que cet article vous sera utile. C’est le premier d’une série dédiée à la gestion automatisée d’une piscine.
Je publierai la suite de mes réalisations listées en introduction lorsque leur fonctionnement aura été éprouvé.

    Liste des publications en lien avec cet article:

    1. Filtration avec « AppDaemon » ou avec « Pool Pump Manager« 
    2. Mesure de puissance électrique
    3. Mise à niveau automatique
    4. Mesure du pH
    5. Régulation du Ph
    6. Mise Hors Gel
    7. Mesure de pression

    31 Comments on “HA-Gestion piscine-1_Filtration avec « Pool pump Manager »”

    1. J’ai hâte de lire tes prochains articles notamment :
      – la mise à niveau automatique du niveau d’eau
      – la mesure de pression du filtre à sable

    2. Merci pour l’article et j’ai oublié de poser ma question dans mon commentaire précédent. Est’il possible de définir un horaire min et max de filtration chaque jour ? En gros je veux pas filtrer moins de 3h par jour mais pas plus de 14h par jour ?

      1. Bonjour Arnault
        Ces fonctionnalités sont incluses dans la version de exxamalte qui ne tient pas compte la T° de l’eau. Elles n’ont pas été reprises dans la version de oncleben31 (celle que j’utilise) qui elle tient compte de la T° de l’eau. A toi de choisir la version qui te convient le mieux. @+

    3. Bonjour,
      superbe arcticle. Je migre en ce moment petit à petit de Jeedom vers HA. J’avoue que je me casse un peu les dents, mais le résultat est on ne peut mieux !!

      J’utilisé aussi le plugin pool Jeedom. Je vais donc me servir de ce superbe article pour essayer j’arriver au même résultat que toi !!

    4. Bonjour,
      Bon je viens de tout paramétrer.
      Juste une chose, je n’arrive pas à afficher le temps de fonctionnement de la pompe,ni l’affichage de l’heure pivot. Je ne comprends pas.
      Pourriez vous m’aider ?

    5. Bonjour, désolé pour le retard et tu as surement trouvé depuis, mais voici ma réponse.
      Comme décrit au chapitre « Temps de fonctionnement », le temps de fonctionnement de la pompe nécessite un binary_sensor qui passe à « on » lorsque la puissance est supérieure à un seuil (500 w dans mon cas) et un sensor history_stats déclenché par ce binary_sensor.
      Cela nécessite bien entendu une mesure de puissance, si pas dispo tu peux prendre comme info l’état de la sortie de la pompe.
      Concernant l’heure pivot, comme décrit au chapitre « 3- la déclaration d’entités » , l’heure pivot est calculée avec l’attribut « next.noon » de « sun.sun ».
      Bon courage. Pour info j’ai publié un article sur la mesure de pH.

      1. Désolé aussi du retard. Oui j’ai trouvé c’était une mauvaise déclaration. J’ai tout testé avec une ampoule au lieu de ma pompe 😉 Ca à l’air de fonctionner…

        Je vais vérifier cela avec la piscine maintenant. Super je vais aller lire l’article !

      2. Bonjour,

        j’ai un « nouveau » problème. Tout fonctionné. Aujourd’hui je mets à jour Home assistant avec a dernière version et au reboot, j’ai une erreur Pump_pump – intégration et plus rien ne fonctionne. Je ne sais pas si cest la mise à jour qui a foiré, mais là je suis dans la mouise comme on dit…
        Pourriez-vous m’aiguiller svp ??

    6. En fait, en Mode ON ça force le fonctionnement, ça c’est ok.
      Par contre quand je passe en Auto, bin il se passe entre guillemet rien. Il ne me met pas en marche la pompe, mais surtout me met une erreur sur le next_run_schedule…Je comprends pas

    7. Bon j’ai avancé. Depuis la 2021.5, il faut modifier dans init.py sokar_noon en noon.

      J’ai un autre problème. La pompe s’arrête et redémarre toutes les 5mn….

      Une idée ??

    8. Question : vu que c’est à chaque fois que le service pool pump check est appelé que la pompe s’éteint et au tour suivant, se rallume, ça serait pas dû au fait que ma commande est impulsionnel sur ma pompe ?? Et que lui il renvoie un ordre de marche, mais que moi forcément ça permute ?

      1. Bonjour
        Le switch de la pompe est basé sur deux états stables:
        – ON: fonctionnement de la pompe
        – OFF: arrêt de la pompe
        Il faut adapter ton pilotage de la pompe a ce principe, mais tu l’as surement fait depuis!

    9. Bonjour ,
      Article super interagissant , merci pour ce partage
      Je cherche un capteur de pression analogique pour surveiller la filtration
      mais j’ai quelques difficultés à trouver le bon
      Lequel utilisé vous ?

      Merci

    10. Bonjour,
      je suis encore sur pool pump, pas encore eu le courage de passer sur Appdeamon.

      J’ai un petit problème depuis quelques jours, l’affichage de l’heure pivot est « indisponible ». Pourtant cela fonctionnait bien depuis le début.
      Elle est définie comme ça :

      – platform: template
      sensors:
      heure_pivot_piscine:
      friendly_name: ‘heure_pivot_piscine’
      value_template: ‘{{ as_timestamp(strptime(state_attr(« sun.sun », « next_noon »), «  »)) | timestamp_custom(« %H:%M ») }}’
      icon_template: mdi:calendar-clock

      Je ne comprends pas pourquoi celle-ci ne fonctionne plus…

    11. Bonjour,
      Merci pour le plug-in et il me semble fonctionner correctement (je l’ai mis sur une prise connecte en attendant de recevoir mon Shelly pour ma pompe piscine); le mode ete fonctionne parfaitement.

      Vivant dans une region ou il arrive de geler, et choisissant un hivernage actif je voudrais rajouter un automatisme pour lancer la pompe en dessous d’une certaine temperature pendant un certain temps.

      Par exemple si temperature air < 2 degres lancer la pompe pendant 15 minutes, puis s'arreter 15 minutes jusqu'a ce que la temperature redepasse les 2 degres.

      Je voudrais que cette regle soit decorrelee du filtrage journalier d'1 a 2h en hiver.

      J'ai essaye de creer avec un automatisme, la pompe se lancer bien lorsque la temperature descend, cependant le service arrete la pompe (ce que j'imagine est normal avec le piscine.py)
      (testswitch Socket 1 turned off triggered by service homeassistant.turn_off)

      Est-ce qu'il y a une facon elegante et facile de creer une option, (genre checkbox = hors gel) pour gerer cette situation?

      Comment vous faites vous sinon? hivernage passif ou region ou il ne gele pas?
      merci!

    12. Merci, tout fonctionne parfaitement, cela commande une prise connecte en attente de mettre un module rail din dans mon local technique.

      J’ai cependant quelques entites qui n’apparaissent pas, et je ne vois pas leur configurations:
      – Entity not available: pool_pump.next_run_schedule
      – Entity not available: sensor.pool_pump_running_today
      – Entity not available: input_datetime.heure_at_pump_pisc_hiv

      C’est parce qu’elle ne sont plus dispos avec appdaemon?

      merci

      1. Bonjour, je vais essayé de te répondre, mais l’article commence à dater:
        – l’entité « pool_pump.next_run_schedule » est généré automatiquement par le module « pool_pump » mais peut etre n’est ce plus le cas, je n’ai pas suivi les évolutions.
        – l’entité « sensor.pool_running_today » est déclaré dans le fichier yaml:
        sensor:
        # Affichage du temps de fonctionnement de la pompe ce jour
        – platform: history_stats
        name: Pool Pump running today
        entity_id: binary_sensor.pool_pump_running
        state: « on »
        type: time
        start: « {{ now().replace(hour=0).replace(minute=0).replace(second=0) }} »
        end: « {{ now() }} »
        – l’entité « input_date_time.heure_at_pump_pisc_hiv » est déclaré dans le fichier yaml:
        heure_at_pump_pisc_hiv:
        name: Heure At Pompe Pisc Hiv
        has_date: false
        has_time: true
        J’espère t’avoir aidé (un peu tard peut-etre!)
        Slts

    13. Bonjour , excellent article qui aide à personnaliser l’automatisation de la piscine.
      Dans mon essai de reguler la pompe , j’ai crée un sensor qui permet de connaitre le temps necessaire de filtration en fonction de la température de l’eau.
      on le sait tous . c’est facile, il suffit de diviser la température par 2 quand on est au dessus de 15° (c’est la méthode dumb)
      j’ai repris l’abaque fourni en début d’article pour en tirer une formule qui je l’espère vous aidera.
      il s’agit d’une formule polynomiale de degré 3.
      y = 0.002 * x *x *x – 0.0629 *x *x + 0.7592 * x – 0.9746
      dans mon sensor.yaml cela donne
      duree_filtration:
      friendly_name: « Durée Abaque Filtration »
      value_template: >-
      {% set maxt = states(‘sensor.max_temp’) | float %}
      {% set calc = (maxt * maxt * maxt * 0.002) – (maxt * maxt * 0.0629) + (maxt * 0.7592) – 0.9746 | float %}
      {{ calc }}
      unit_of_measurement: ‘h’

      c’est le résultat le plus approchant que j’ai pu trouver, cela donne par exemple
      11,3962 h pour une eau à 26.°

      Il s’agit de mon humble participation à ce sujet qui est vraiment passionnant

      1. Bonsoir jean Marc
        Merci pour ton retour d’expérience. Je viens de faire une simulation sur excel avec cette formule et les résultats sont intéressants.
        Je la garde au frais pour la prochaine saison.
        Slts

    14. AppDAEMON se comporte bizarrement. AppDaemon démarre et l’application fonctionne bien et démarre bien et les différents callbacks se créent correctement.

      Au bout d’un moment je vois dans les logs que AppDAEMON initialise a nouveau l’application, ce qui crée des callbacks en plus de ceux qui ont été créés a la première initialisation et ceci se répète continuellement et régulièrement jusqu’à ce que le nombre de callbacks soit tel que l »application ne se comporte plus correctement.

      Avez-vous déja eu ce problème ?

      1. Merci de commenter l’article concerné SVP sinon on s’y retrouve pas. je vous invite à installer la dernière version du fichier cela devrait résoudre le problème.

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *