Wait_template : déclencher une action 5 minutes avant la fin d'un compte à rebours

Bonjour,

Mon problème

Je suis en train de mettre en place un script de coupure automatique de tout ce qui est media dans la maison au delà d’une certaine heure. Lorsque le système s’active, j’ai un message audio avec un compte à rebours qui s’affiche dans l’interface pour me donner le temps restant avec 3 boutons pour ajouter du temps / enlever du temps / couper de suite…jusque là tout marche parfaitement.

Par contre, j’essaye de lancer un second script lorsque je rajoute du temps pour refaire une annonce lorsque je retombe à 5 minute restantes… rien de bien compliqué me direz vous, et bien je ne comprends pas pourquoi il me fait des retours pas précis d’une part et en plus il me fait un retour à 4m20 restante au lieu de 5 … ???

le code ci-dessous et pour infos le script est en mode restart à chaque fois que l’on change le temps
(le code marche bien ,c’est juste le décallage et la précision que je ne comprends pas)

alias: ShutdownAuto_Annonce
sequence:
  - if:
      - condition: state
        entity_id: timer.shutdownauto_countdown
        state: active
    then:      
      - wait_template: >-
          {% set tempo = state_attr('timer.shutdownauto_countdown',
          'finishes_at') %} {% set remainingTime = ((tempo | as_datetime -
          now()).total_seconds() | int(0)) %} {{ true if remainingTime < 300
          else false }}
        continue_on_timeout: true
      - service: notify.alexa_media
        data:
          title: "ShutdownAuto : annonce relance"
          target:
            - media_player.echo_bureau
            - media_player.echo_salon
          data:
            type: tts
          message: 5 minutes restantes  avant coupure
mode: restart
icon: mdi:bullhorn-outline

timer.shutdownauto_countdown est mon compte à rebours

Par avance merci si vous avez une idée :pray:

Hello,
A quel moment réinitialise tu ton timer lorsque tu relance ton script ?

@+

le countdown est initialisé par le script principale
et le rajout de temps par celui-ci :

alias: ShutdownAuto_ChangeTime
sequence:
  - if:
      - condition: state
        entity_id: timer.shutdownauto_countdown
        state: active
    then:
      - service: timer.start
        metadata: {}
        data:
          duration: >-
            {% set tempo = state_attr('timer.shutdownauto_countdown',
            'finishes_at') %} {% set remainingTime = ((tempo | as_datetime-
            now()).total_seconds() | int(0)) %} {% set newTempo = 0 if tempo ==
            none else (remainingTime +  (60 * additionalTime)) %} {{ 0 if tempo
            == 0 else newTempo if newTempo > 15  else remainingTime}}
        target:
          entity_id: timer.shutdownauto_countdown
      - service: script.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: script.shutdownauto_annonce
mode: queued
icon: mdi:plus
fields: {}

Bon et bien j’ai trouvé ( ou bidouiller) ma soluce et cela marche ! mais si quelqu’un sait pourquoi cela ne marchais pas, je veut bien apprendre.
En tout cas voici ma nouvelle façon de faire:

le script d’incrémentation du countdown et j’utilise direct pour passer les variables au script d’annonce :

alias: ShutdownAuto_ChangeTime
sequence:
  - if:
      - condition: state
        entity_id: timer.shutdownauto_countdown
        state: active
    then:
      - service: timer.start
        metadata: {}
        data:
          duration: >-
            {% set tempo = state_attr('timer.shutdownauto_countdown',
            'finishes_at') %} {% set remainingTime = ((tempo | as_datetime-
            now()).total_seconds() | int(0)) %} {% set newTempo = 0 if tempo ==
            none else (remainingTime +  (60 * additionalTime)) %} {{ 0 if tempo
            == 0 else newTempo if newTempo > 15  else remainingTime}}
        target:
          entity_id: timer.shutdownauto_countdown
      - service: script.turn_on
        metadata: {}
        data:
          variables:
            _addedTime: "{{ additionalTime }}"
            _newTime: >-
              {% set tempo = state_attr('timer.shutdownauto_countdown',
              'finishes_at') %} {% set remainingTime = ((tempo |
              as_datetime-now()).total_seconds() | int(0)) %} {{ remainingTime
              }}
        target:
          entity_id: script.shutdownauto_annonce
mode: queued
icon: mdi:plus
fields: {}

Et le script d’annonce qui ne fait que lancer un timer interne avec un décallage de 5 min par au countdown :

alias: ShutdownAuto_Annonce
sequence:
  - if:
      - condition: and
        conditions:
          - condition: state
            entity_id: timer.shutdownauto_countdown
            state: active
          - condition: template
            value_template: "{{_newTime > 350 }}"
    then:
      - delay: "{{_newTime - 300 }}"
      - service: notify.alexa_media
        data:
          title: "ShutdownAuto : annonce relance"
          target:
            - media_player.echo_bureau
          data:
            type: tts
          message: 5 minutes restantes  avant coupure
mode: restart
icon: mdi:bullhorn-outline

en tout cas merci pour vos lectures et votre temps :slight_smile: