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