Timer sous forme de script

C’est pas si simple en fait, car on ne peut pas juste utiliser des minuteurs au vu des services disponibles…

Du coup, je dirais qu’il faut :

  • 3 input_number (timer1,timer2,timer_global)
  • 3 input_boolean (timer1,timer2, timer_global)
  • 2 timers (timer1, timer 2)
  • 1 automatisation de gestion du timer global
  • 3 automatisations pour le démarrage des timers (on peut faire une seule automatisation avec la fonction choose) sur changement d’état des booléens correspondants.

Et du coup, sur le papier, le fonctionnement serait le suivant:

  1. Les input_number servent à la définition du temps des timers.
    1.1 input_number.timer_1 correspond au temps du timer 1
    1.2 input_number.timer_2 correspond au temps du timer 2
    1.3 input_number.timer_global correspond au temps du timer 1 et timer 2
    1.3.1 Il faut une automatisation pour modifier les imput_number.timer[1,2] en fonction du global

  2. Les input_boolean servent à démarrer les timers correspondants :
    2.1 input_boolean.timer1 déclenche le démarrage du timer 1 (automatisation)
    2.2 input_boolean.timer2 déclenche le démarrage du timer 2 (automatisation)
    2.3 input_boolean.timer_global déclenche le démarrage du timer 1 et timer 2 (automatisation)

Ensuite, il ne reste plus qu’à créer une automatisation qui se déclenche sur le passage à l’état démarré de chaque timer sans oublier les automatisions de fin de timer.

Création des input_number :

animate

Automatisation de synchronisation des timers

animate

Tu peux copier le code des automatisations suivantes et les coller directement dans HA :

animate

Synchronisation des timers

alias: Synchroniser les timers
description: Permet de synchroniser les timers 1 et 2 suivant le timer global
trigger:
  - platform: state
    entity_id: input_number.timer_global
condition: []
action:
  - service: input_number.set_value
    target:
      entity_id:
        - input_number.timer_1
        - input_number.timer_2
    data:
      value: "{{states('input_number.timer_global')|int}}"
mode: single

Automatisation de démarrage des timers

Création des input_boolean

animate

Création des timers

animate

(le dernier global n’est pas utile car non utilisé)

Création des automatisations de déclenchement :

animate

Démarrage Timer 1

alias: Démarrage de Timer 1
description: Permet de démarrer le timer 1 sur le passage à vrai du booléen correspondant
trigger:
  - platform: state
    entity_id: input_boolean.timer_1
    to: 'on'
condition: []
action:
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.timer_1
  - service: timer.start
    data:
      duration: '{{ states(''input_number.timer_1'') | int * 60 }}'
    target:
      entity_id: timer.timer_1
mode: single

Démarrage Timer 2

alias: Démarrage de Timer 2
description: Permet de démarrer le timer 2 sur le passage à vrai du booléen correspondant
trigger:
  - platform: state
    entity_id: input_boolean.timer_2
    to: 'on'
condition: []
action:
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.timer_2
  - service: timer.start
    data:
      duration: '{{ states(''input_number.timer_2'') | int * 60 }}'
    target:
      entity_id: timer.timer_2_2
mode: single

Démarrage Timer 1 et 2

alias: Démarrage de Timer 1 et 2
description: >-
  Permet de démarrer le timer 1 et 2 sur le passage à vrai du booléen
  correspondant
trigger:
  - platform: state
    entity_id: input_boolean.timer_global
    to: 'on'
condition: []
action:
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.timer_global
  - service: input_number.set_value
    target:
      entity_id:
        - input_number.timer_1
        - input_number.timer_2
    data:
      value: '{{states(''input_number.timer_global'')|int}}'
  - service: timer.start
    data:
      duration: '{{states(''input_number.timer_global'')|int * 60}}'
    target:
      entity_id:
        - timer.timer_1_2
        - timer.timer_2_2
mode: single

Et c’est à peu près tout.

Tu peux utiliser des cartes boutons plutôt que l’affichage des entités.
Tu peux utiliser des input_datetime plutôt que des input_numbers
Tu peux concatener les 3 automatisations de démarrage en une seule avec la fonction fonction.