Capteur template Home Assistant — filtrer la température utile piscine (valide uniquement si filtration active depuis 15 min)

Bonjour à tous :waving_hand:

Je cherche à fiabiliser un capteur de température d’eau filtrée pour ma piscine, basé sur une sonde Bayrol (connectée via sensor.bayrol_24acl210901_temperature).

Le but est que la température ne se mette à jour que si la filtration est active depuis au moins 15 minutes, et qu’elle ignore les valeurs anormales envoyées par le module Bayrol en cas de coupure wifi.

  • sensor.bayrol_24acl210901_temperature → renvoie parfois 0 °C ou ~0,01 °C lors des transitions (alors que le module reste connecté).
  • sensor.bayrol_24acl210901_flow_in → indique "on" / "off" selon l’état de la filtration.
  • input_select.pompe_filt_mode → peut être sur "Off forcé".
  • Un capteur binaire gère déjà le délai de 15 min :
template:
  - binary_sensor:
      - name: Filtration active depuis 15 min
        unique_id: filtration_active_depuis_15_min
        device_class: running
        state: >
          {{ is_state('sensor.bayrol_24acl210901_flow_in', 'on') }}
        delay_on:
          minutes: 15
        delay_off:
          minutes: 2

Pourriez vous m’aider à corriger ce code qui renvoi unvailable sur le sensor. De manière exceptionnelle, mon ami chatGPT n’a pas reussi à resoudre ma demande :

# Température filtrée (valide uniquement si filtration active)
temperature_eau_utile_filtration:
  unique_id: temperature_eau_utile_filtration
  friendly_name: "Température eau utile filtration"
  unit_of_measurement: "°C"
  icon_template: mdi:coolant-temperature
  value_template: >-
    {% set pompe_mode = states('input_select.pompe_filt_mode') %}
    {% set flow_ok = is_state('binary_sensor.filtration_active_depuis_15_min', 'on') %}
    {% set temp_state = states('sensor.bayrol_24acl210901_temperature') %}
    {% set last = states('sensor.temperature_eau_utile_filtration') | float(default=0) %}

    {# Conversion sécurisée #}
    {% if temp_state not in ['unknown', 'unavailable', 'none'] %}
      {% set temp = temp_state | float %}
    {% else %}
      {% set temp = last %}
    {% endif %}

    {# Rejeter les valeurs aberrantes ou écarts brutaux #}
    {% if temp < 5 or temp > 45 or abs(temp - last) > 5 %}
      {% set temp = last %}
    {% endif %}

    {# Mise à jour uniquement si filtration active depuis 15 min #}
    {% if (pompe_mode != 'Off forcé' or flow_ok) %}
      {{ temp }}
    {% else %}
      {{ last }}
    {% endif %}

La capteur binary_sensor.filtration_active_depuis_15_min devrait résoudre les reprises et arrêts de filtration en rouge.

Il reste cependant à filtrer les moments (en vert) ou sensor.bayrol_24acl210901_temperature devient indisponible ou renvoi des valeurs incohérentes. Dans ce cas, j’aimerai garder la dernière valeur connue.

Merci d’avance.

PS : Tout est à jour dans mon HA.

  1. Méthode d’installation Home Assistant OS
  2. Core 2025.10.2
  3. Supervisor 2025.10.0
  4. Operating System 16.2
  5. Interface utilisateur 20251001.2

Hello @Pika28 ,

Lorsque tu définis un template, tu as un champ availability qui permet de mettre l’entity comme indisponible lorsque les valeurs sont hors plage.

Exemple:

    - name: "Total puissance exportée instantanée (W)"
      icon: mdi:transmission-tower-export
      unique_id: total_power_exportee_w
      unit_of_measurement: "W"
      device_class: power
      state_class: measurement
      state: >
        {%- set power_net = states('sensor.envoy_122307065303_current_net_power_consumption') | float(default=0) -%}
        {% if power_net < 0 %}
            {{ -power_net }}
        {% else %}
            {{ 0.0 }}
        {% endif %}
      availability: "{{ is_number(states('sensor.envoy_122307065303_current_power_consumption')) }}"

Bonjour @Jean-Marc_Collin. Mon besoin est de garder la dernière valeur connue quand la filtration s’arrête ou que le capteur source est indisponible.

1 « J'aime »

Ok c’est plutôt une automatisation qu’il faut faire alors pour setter un input_number en fonction de conditions, sauvegarder la dernière valeur connue, …

Ce sujet a été automatiquement fermé après 60 jours. Aucune réponse n’est permise dorénavant.