Los "guiones" de Home Assistant, qué son y cómo se usan

3 minutos de lectura

Una flecha de arco importante de usuarios de Home Assistant - especialmente junto al automatizaciones - son los "guión". En realidad, en aras de la claridad, podría haber sido mejor llamarlos "secuencias" (pero tanto), porque esto es lo que es.Home Assistant Logo oficial

En la práctica, las entidades de tipo "Script", cuando se evocan, realizan una serie de acciones secuenciales, que también puede estar condicionado por condiciones (condition), retrasos en la ejecución (retrasar) y espera (esperar).

Definir un guion

La definición de uno o más entidad del tipo "Script" es bastante simple, especialmente para aquellos que están familiarizados con las automatizaciones de Home Assistant.

De hecho, es suficiente agregar en configuración un bloque similar a lo siguiente:

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 configuración anterior define una entidad llamada "script.ritorno_a_casa"Que, si el servicio lo evoca"script.turn_on" prove la iluminación de un grupo de luces ("group.ingresso"), Espera un minuto y luego abre el agua de la casa activándola switch.acqua (imaginándolo como un actuador conectado a una electroválvula integrado a Home Assistant).

Como habrá notado el más atento, la definición de secuencialidad es en todos los aspectos similares a eso definible dentro de un bloque común "action" de una automatización.

Obviamente dentro del bloque "script:"Puede definir cuántos scripts quiere, por ejemplo:

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

las variables

La adopción de los scripts permite, en el momento de su ejecución, el paso de variables. Es un concepto trivial y versátil: esto le permite definir scripts que varían su comportamiento en función de las variables que se les pasan.

Digamos, por ejemplo, que ha definido un script que provveda al ajuste de volumen de todos los dispositivos Alexa integrado como "Media Player" presente en la casa:

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

Este guión ("script.volume_alexa") prove evocar el servicio "media_player.volume_set"Requerir las dos entidades indicadas para regular el proprimer volumen a través del parámetro "volume_level", A la que se pasa la variable"VolumeLevel".

Evocar este script a través de la automatización es bastante 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

Condición (condición)

Los guiones se ejecutan secuencialmente, de arriba a abajo. En la secuencia es posible introducir una o más condiciones (también anidado) para permitir que el script proseguir o no en la ejecución en función de la aparición o no de la condición definida.

Tomemos el siguiente ejemplo:

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

En este ejemplo "script.accensione_luce_condizionata"Cuando se ejecuta, antes de encender la luz"light.sala"Verifica las condiciones de luz a partir del sensor"sensor.broadlink_sensor_light"Derivado de la integración de un sensor Broadlink A1 e-Air. Si el sensor detecta un grado de luminosity mayor o igual que 2, la secuencia se detiene y la luz no se enciende.

Retraso (retraso)

La partícula "retrasar"Le permite interrumpir temporalmente, por un tiempo definido, la ejecución de un script.
Las posibilidades de configuración son variadas. Algunos ejemplos:

# 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) }}"

Espera

A diferencia del "retraso", la partícula "wait_templateSuspende la ejecución en espera de la ocurrencia de una condición dada, típicamente un cambio (específico) de estado de una entidad. Obviamente, es posible configurar la "espera" para desbloquear la situación frente al paso de un período de tiempo específico, así como decirles qué hacer, en este caso.

Veamos un ejemplo:

# 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 secuencia no procede más allá de este bloque hasta que el estado del sensor se convierte en "on"(Dentro de un minuto). Si el estado del sensor no se convierte en "on"En un minuto, la secuencia se detiene.

gatillo

Iniciar un script se puede hacer de varias maneras; el servicio a utilizar es siempre el mismo, o script.turn_on. Usado típicamente en automatizaciones de Home Assistant, también puede ser útil activar manualmente los scripts usando de conmutadores virtuales.


Más información sobre sintaxis los guiones están disponibles en la página dedicada en el sitio de Home Assistant.

Definir conmutadores virtuales para secuencias de comandos (scripts) Home Assistant


Home Assistant Logo oficialATTENZIONE: recuerda que hay en nuestra comunidad FORO una sección ad hoc dedicada a Home Assistant, para cualquier duda, pregunta, información en el mérito específico de estos componentes.


Por favor comente abajo