Forcer le rafraichissement d'une entité (ou plusieurs) pour un temps donnée

Bonsoir à tous

J’en avais raz le bol de me prendre la tête pour forcer des rafraichissements de capteur plus régulier lors de certaines actions. Du coup je me suis fais un script que je vous partage et qui j’espère vous aidera un jour.

C’est tout simple, il permet de rafraichir un ou plusieurs capteurs avec tous les intervalles de x secondes et pendant un temps données. Perso j’ai mis un filtre de domaine pour mes besoin, mais cela marche très bien sans.

le script : « script.update_entity_during »

sequence: 
  - variables:
      _start: "{{ now() }}"
      _end: "{{ now() + timedelta( seconds = _duration ) }}"
  - if:
      - condition: template
        value_template: "{{  _duration <= ( _interval * 2) }}"
    then:
      - stop: La durée total ne pas pas être inférieure à deux intervales
        error: true
  - repeat:
      sequence:
        - repeat:
            sequence:
              - action: homeassistant.update_entity
                metadata: {}
                data:
                  entity_id:
                    - "{{ repeat.item }}"
            for_each: "{{ _entities }}"
        - delay:
            hours: 0
            minutes: 0
            seconds: "{{ _interval }}"
            milliseconds: 0
      while:
        - condition: template
          value_template: "{{  as_timestamp(now()) <= as_timestamp(_end) }}"
alias: update_entity_during
description: >-
  Script permettant de forcer le rafraichissement d'une entité tout les x
  secondes pendant une durée de temps données

  ( update - refresh -rafraichir )
icon: mdi:update
mode: parallel
max: 20
fields:
  _entities:
    selector:
      entity:
        multiple: true
        filter:
          - domain: sensor
    name: Entitie(s)
    description: l'entité à mettre à jour
    required: true
  _interval:
    selector:
      number:
        min: 1
        max: 1000
    name: Interval de rafraichissement
    description: Temps en seconde entre 2 rafraichissement de(s) l'entité(s)
    required: true
    default: 10
  _duration:
    selector:
      number:
        min: 1
        max: 86400
    name: Durée
    description: >-
      Temps total en seconde durant le quel il faut forcer le rafraichissement (
      max 86400 sec, soit 1 jour )
    required: true
    default: 60

et pour l’usage, soit via l’UI directement ou alors dans un autre script et je conseille d’utiliser script.turn_on pour une exécution totalement parallélisée

service: script.turn_on
target:
  entity_id: script.update_entity_during
data:
  variables:
    _interval: 1
    _duration: 60
    _entities:
      - sensor.mon_sensorA
      - sensor.mon_sensorB

J’ai dans l’idée dans faire un second qui dure tant qu’un état est maintenu

Je suis preneur de toute optimisation ou idée

:slight_smile:

Bonjour. ça ne fait pas très longtemps que j’utilise HA, mais j’ai un problème pour l’actualisation des capteurs de température OWON qui sont sous ZIGBEE sachant que j’utilise Z2M pour remonter les données. Ma question; ta solution est-elle utilisable pour forcer un ou plusieurs capteurs à renvoyer les données. Par exemple j’ai un capteur qui devrait me remonter les données toutes les 5 secondes.
Merci par avance pour ta réponse.

5s d’une la pile de ton capteur ne vas pas apprécier de deux ton réseau zigbee non plus ne vas pas apprécier de se faire martyriser de la sorte

1 « J'aime »

Merci pour ton retour. Effectivement le ZIGBEE sur batterie n’est pas la bonne solution pour mon besoin. J’ai fait marche arrière et j’ai remis en service mon ESP32 avec capteur DS18b20 qui me retourne l’info toutes les 5 secondes et le réseau WIFI supporte ça sans problème, mon réseau ZIGBEE va me remercier :grinning:

2 « J'aime »