Les "scripts" de Home Assistant, ce qu'ils sont et comment ils sont utilisés

3 minutes de lecture

Une flèche d'arc importante des utilisateurs de Home Assistant - surtout aux côtés du automations - sont les "scénario». En réalité, pour des raisons de clarté, il aurait peut-être été préférable de les appeler "séquences" (mais tellement), car c'est ce que c'est.Home Assistant Logo officiel

En pratique, les entités de type "Script", lorsqu'elles sont évoquées, effectuent une série d'actions séquentielles, qui peut aussi être conditionné par des conditions (condition), délais d’exécution (retarder) et attend (attendez).

Définir un script

La définition d'un ou plusieurs entité de type "Script" est assez simple, surtout pour ceux qui sont familiers avec les automatisations de Home Assistant.

Il suffit en fait d'ajouter en configuration un bloc similaire à la suivante:

script:
  ritorno_a_casa:
    sequence:
      - service: light.turn_on
        data:
          entity_id: group.ingresso
          brightness: 100
      - delay:
          minutes: 1
      - service: switch.turn_on
        entity_id: switch.acqua

La configuration ci-dessus définit une entité appelée "script.ritorno_a_casa"Qui, si évoqué par le service"script.turn_on" provoit l'éclairage d'un groupe de lumières ("group.ingresso"), Attendez une minute puis ouvrez l’eau de la maison en l’activant switch.acqua (en l'imaginant comme un actionneur connecté à une électrovanne intégré un Home Assistant).

Comme les plus attentifs l’auront remarqué, la définition de la séquentialité est à tous égards similaires à celui définissable dans un bloc commun "action" d'une automatisation.

Évidemment à l'intérieur du bloc "script:"Vous pouvez définir le nombre de scripts que vous souhaitez, par exemple:

script:
  uscita_di_casa:
    sequence:
      - service: light.turn_off
        entity_id: group.ingresso
      - service: switch.turn_off
        entity_id: switch.acqua
  ritorno_a_casa:
    sequence:
      - service: light.turn_on
        data:
          entity_id: group.ingresso
          brightness: 100
      - delay:
          minutes: 1
      - service: switch.turn_on
        entity_id: switch.acqua

les variables

L’adoption des scripts permet, lors de leur exécution, le passage de variables. C'est un concept banal et polyvalent: cela vous permet de définir des scripts dont le comportement varie en fonction des variables qui leur sont transmises.

Disons par exemple que vous avez défini un script qui provveda au réglage du volume de tous les appareils Alexa intégré comme "Media Player" présent dans la maison:

script:
  volume_alexa:
    sequence:
      - service: media_player.volume_set
        data_template:
          entity_id: media_player.alexa_sala, media_player.alexa_camera
          volume_level: '{{ volumelevel }}'

Ce script ("script.volume_alexa») provoit pour évoquer le service "media_player.volume_set"Obliger les deux entités indiquées à réglementer le propremier volume à travers le paramètre “volume_level", À qui la variable est passée"VolumeLevel».

Évoquer ce script via l'automatisation est assez simple:

automation:
  alias: "Regolazione volume"
  trigger: [] # qualcosa che inneschi l'automazione
  condition: []
  action:
    - service: script.turn_on
      entity_id: script.volume_alexa
      data:
        variables:
          volumelevel: 0.5

Condition (condition)

Les scripts sont exécutés séquentiellementde haut en bas. Dans la séquence il est possible introduire une ou plusieurs conditions (également imbriqué) afin de permettre au script de prosuivre ou non dans l'exécution en fonction de l'occurrence ou non de la condition définie.

Prenons l'exemple suivant:

script:
  accensione_luce_condizionata:
    sequence:
      - condition: numeric_state
        entity_id: sensor.broadlink_sensor_light
        below: 2
      - service: light.turn_on
        entity_id: light.sala

Dans cet exemple "script.accensione_luce_condizionata"Une fois exécuté, avant d'allumer la lumière"light.sala"Vérifie les conditions d'éclairage à partir du capteur"capteur.broadlink_sensor_light"Dérivant de l'intégration d'un capteur Broadlink A1 e-Air. Si le capteur détecte un degré de luminosity supérieur ou égal à 2, la séquence s’arrête et la lumière n’est pas allumée.

Retarder

La particule "retarderMsgstr "" "Permet d 'interrompre temporairement - pendant un temps défini - l' exécution d 'un script.
Les possibilités de configuration sont variées. Quelques exemples:

# Attende un'ora
- delay: '01:00'
# Attende un minuto e 30 secondi
- delay: '00:01:30'
# Attende un minuto
- delay:
    # Supporta millisecondi, secondi, minuti, ore, giorni
    minutes: 1
# Attende un numero di secondi preimpostato tramite l'entità input_number.second_delay
- delay:
    # Supporta millisecondi, secondi, minuti, ore, giorni
    seconds: "{{ states('input_number.second_delay') }}"
# Attende un numero di secondi preimpostato tramite l'entità input_number.minut_delay
# Formati validi includono HH:MM e HH:MM:SS
- delay: "{{ states('input_number.minute_delay') | multiply(60) | timestamp_custom('%H:%M:%S',False) }}"

Attendre

Contrairement à "delay", la particule "wait_template”Suspend l'exécution en attendant la survenue d'une condition donnée, généralement un changement d'état (spécifique) d'une entité. Il est évidemment possible de configurer "l'attente" afin de débloquer la situation face au passage d'une période donnée, ainsi que de leur dire quoi faire, dans ce cas.

Regardons un exemple:

# Attende che il sensore binary_sensor.ingresso rilevi l'apertura di un varco
- wait_template: "{{ is_state('binary_sensor.entrance', 'on') }}"
  timeout: '00:01:00'
  continue_on_timeout: 'false'

La séquence ne procède au-delà de ce bloc jusqu'à ce que le statut du capteur devienne "on"(Dans une minute). Si le statut du capteur non devient "on"Dans la minute qui suit, la séquence s’arrête.

gâchette

Le démarrage d'un script peut être effectué de différentes manières. le service à utiliser est toujours le même, ou script.turn_on. Typiquement utilisé dans automatisations de Home Assistant, il peut également être utile de déclencher manuellement les scripts en utilisant des commutateurs virtuels.


Plus d'informations sur la syntaxe les scripts sont disponibles sur la page dédiée sur le site de Home Assistant.

Définir des commutateurs virtuels pour des séquences de commandes (scripts) Home Assistant


Home Assistant Logo officielATTENZIONE: rappelez-vous qu'il y a sur notre communauté FORUM une section ad hoc dédiée à Home Assistantpour tout doute, question, information sur le mérite spécifique de ces composants.


Veuillez commenter ci-dessous