Fréquence de rafraîchissement d'un capteur

Bonjour,

Ce capteur virtuel élaboré de mémoire avec l’aide de @WarC0zes permet de récupérer la T° de ma sonde extérieure si celle de Meteo France est défaillante.
Problème, ce capteur n’envoie rien tant que la T° ne bouge pas, alors que mon régulateur Siemens Synco700 demande visiblement un rafraîchissement régulier de la T° extérieure qu’il reçoit (la sonde de toiture envoie une info toutes les 2 minutes et ça fonctionne bien).

Quel code faudrait-il rajouter au Template pour que ce capteur virtuel envoie sur le bus KNX une info toutes les 2 minutes.
Merci pour vos conseils,
patrickp78

{% if (now() - states.sensor.rambouillet_temperature.last_changed).total_seconds() < 7200 %}
            {{ states('sensor.rambouillet_temperature') }}
          {% else %}
            {{ states('sensor.temp_sonde_exterieure') }}
          {% endif %}

Bonjour,

Je réponds strictement à la question c’est à dire ajouter au template un rafraichissement toutes les 2 minutes. https://www.home-assistant.io/integrations/template/#trigger-based-template-entities

template:
  - trigger:
      - platform: time_pattern
        minutes: "/2"  
    sensor:
      - name: "Température extérieure"
        unit_of_measurement: "°C"
        state: >
          {% if (now() - states.sensor.rambouillet_temperature.last_changed).total_seconds() < 7200 %}
            {{ states('sensor.rambouillet_temperature') }}
          {% else %}
            {{ states('sensor.temp_sonde_exterieure') }}
          {% endif %}

Je ne suis certain que ça soit le plus logique.
Il faudrait peut-être mettre à jour en cas de changement d’état ou toutes les 5 minutes.

1 « J'aime »

Merci pour le retour,
Comment je peux maintenant intégrer le trigger dans le template du sensor ? C’est à partir d’un autre type de template ?

Tu remplaces ton template sensor par celui ci (en mettant le bon name)

J’ai créé mon template dans HA comme une entrée/template/sensor.
Est-ce que je dois mettre le code indiqué dans FileEditor et dans ce cas que devient l’entrée template ?

Salut,
tu ne peux pas créer de trigger template par le UI, c’est quand YAML. Tu dois le faire soit dans ton configuration.yaml ou ton template.yaml si tu as découper la configuration.

Donc je mets le code dans File Editor dans configuration.yaml (je n’ai que deux templates donc pas besoin pour l’instant de dossier spécifique) et je supprime l’entrée, c’est bien ça ?

1 « J'aime »

@armavi le code ne provoque pas un rafraichissement de l’entité toutes les 2 minutes. Peut-être une erreur de syntaxe ?
Si l’on pouvait également le compléter pour qu’il donne une décimale… (4.1°C au lieu de 4°C). J’ai beau relire la page Template de HA et son Formating Sensor States, j’ai toujours des messages d’erreur ! :cry:

template:
  - trigger:
      - platform: time_pattern
        minutes: "/2" 
    sensor:
      - name: "Temp Ext choisie"
        unit_of_measurement: "°C"
        state: >
          {% if (now() - states.sensor.rambouillet_temperature.last_changed).total_seconds() < 7200 %}
            {{ states('sensor.rambouillet_temperature') }}
          {% else %}
            {{ states('sensor.temp_sonde_exterieure') }}
          {% endif %}

Bonjour,

Dans ma réponse, j’ai repris la partie sécurisation en ne rajoutant que le trigger.
Je suis sur de mon trigger, même si on pourrait surement l’améliorer.

Pour la partie sécurisation, il y a des problèmes à mon avis mais qui n’explique pas nécessaire tes ennuis.

Si tu as des messages d’erreur, il faudrait les copier coller.

Par ailleurs il faudrait tester en allant dans la partie développement> modèles et donner les résultats pour :

  1. {{ states('sensor.rambouillet_temperature') }}
  2. {{ states.sensor.rambouillet_temperature.last_changed }}
  3. {{ states.sensor.rambouillet_temperature.last_reported }}
  4. {{ states('sensortemp_sonde_exterieure') }}
  5. {{ states.sensor.temp_sonde_exterieure.last_changed }}
  6. {{ now() }}

Voilà pour les résultats à 8:27

  - trigger:
      - platform: time_pattern
        minutes: "/2"  
  - sensor:
      - name: "Temp Ext choisie"
        unit_of_measurement: "°C"
        state: >
          {% if (now() - states.sensor.rambouillet_temperature.last_changed).total_seconds() < 7200 %}
            {{ states('sensor.rambouillet_temperature') }}
          {% else %}
            {{ states('sensor.temp_sonde_exterieure') }}
          {% endif %}

Voilà ce que ça donne :


Le résultat est un string

Tiens, en passant, j’ai ce message qui se réveille !

regarde son exemple, il n’y a pas de - devant sensor.

c’est pourquoi tu as ce message :

1 « J'aime »

Merci @WarC0zes !
Du coup, j’ai supprimé le template au-dessus du trigger parce que j’avais déjà celui de la lune au-dessus. C’est bon ?
A checker aussi les deux sensor avec et sans tirets

template:
  - sensor:      
    - name: Lune
      state: >-
        {{ state_translated('sensor.moon_phase') }}
      picture: /local/images/moon_phases/{{ states('sensor.moon_phase') }}.png

  ### Choix Température extérieure ###
  - trigger:
      - platform: time_pattern
        minutes: "/2"  
    sensor:
      - name: "Temp Ext choisie"
        unit_of_measurement: "°C"
        state: >
          {% if (now() - states.sensor.rambouillet_temperature.last_changed).total_seconds() < 7200 %}
            {{ states('sensor.rambouillet_temperature') }}
          {% else %}
            {{ states('sensor.temp_sonde_exterieure') }}
          {% endif %}

Oui, c’est bon la.image

1 « J'aime »

@WarC0zes @armavi
OK pour le code, mais le rafraichissement ne se fait toujours pas toutes les 2 minutes…
Merci pour votre aide,

toute facon ton entité metéo france sensor.rambouillet_temperature est actualisé toutes les heures si je dit pas de bétisse.
tu devrais investir dans un bon capteur de temp.

J’ai déjà un bon capteur de température (Schneider Electric KNX Réf. MTN663991 - mise à jour toutes les 2 min). Le problème n’est pas là. Il est installé trop près de la toiture qui fausse la mesure (actuellement 10.7°c pour 7°C sur Open Meteo*) et difficile à déplacer.
Le but est donc de récupérer Open Meteo local (mise à jour toutes les 15 min) et de l’envoyer sur le KNX, sauf si Open Meteo est défaillant (c’est ce que tu m’avais aidé à mettre en place).
Il faut donc que mon capteur virtuel renvoie une donnée toutes les 2 min maxi sur le bus, même s’il s’agit de la même valeur.
nb : pour le moment je fais avec Meteo France et je basculerai ensuite sur l’API d’Open Meteo

Voici, à toutes fins utiles, le code de l’automatisation qui permet d’envoyer toutes les 2 minutes sur le bus KNX la valeur de T° extérieure de Open-Meteo (ou celle de la sonde extérieure KNX en cas de défaillance de Open-Meteo.
nb : Open Meteo envoie une valeur toutes les 15 min et/ou quand cette valeur change, mais le régulateur Synco 700 des réseaux de chauffage radiateurs et plancher chauffant perd cette valeur de T° si elle n’est pas rafraîchie régulièrement.
Merci à Chat GPT pour son aide… :rofl: :rofl: :rofl:

id: temp_ext_open_meteo_vers_bus_knx 
alias: "KNX - Température extérieure avec secours (Open-Meteo → Sonde Toiture)"
description: "Envoie la température Open-Meteo sur KNX, avec repli sur temp_ext_toiture si indisponible"
mode: single

trigger:
  - platform: time_pattern
    minutes: "/2"

action:
  - choose:
      # Cas 1 : Open-Meteo disponible
      - conditions:
          - condition: template
            value_template: >
              {{ states('sensor.temp_open_meteo') not in ['unknown', 'unavailable'] }}
        sequence:
          - service: knx.send
            data:
              address: "0/0/18"
              payload: "{{ states('sensor.temp_open_meteo') | float }}"
              type: temperature

      # Cas 2 : Open-Meteo indisponible, capteur toiture OK
      - conditions:
          - condition: template
            value_template: >
              {{ states('sensor.temp_open_meteo') in ['unknown', 'unavailable'] and
                 states('sensor.temp_ext_toiture') not in ['unknown', 'unavailable'] }}
        sequence:
          - service: knx.send
            data:
              address: "0/0/18"
              payload: "{{ states('sensor.temp_ext_toiture') | float }}"
              type: temperature

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