Die "Skripte" von Home Assistant, was sie sind und wie sie verwendet werden

3 Minuten des Lesens

Ein wichtiger Bogenpfeil von Nutzern von Home Assistant - vor allem neben dem Automatisierungen - Sind die "Skript“. In Wirklichkeit wäre es aus Gründen der Klarheit vielleicht besser gewesen, sie "Sequenzen" zu nennen (aber so sehr), weil es so ist.Home Assistant Offizielles Logo

In der Praxis führen die Entitäten vom Typ "Skript", wenn sie aufgerufen werden, eine Ausführung aus eine Reihe von aufeinander folgenden Aktionen, die auch durch Bedingungen (condition), Ausführungsverzögerungen (verzögern) und wartet (warten).

Definieren Sie ein Skript

Die Definition von einem oder mehreren Wesen Der Typ "Script" ist ziemlich einfach, insbesondere für diejenigen, die mit den Automatisierungen von vertraut sind Home Assistant.

Es ist in der Tat ausreichend hinzuzufügen in der Konfiguration ein ähnlicher Block zu den folgenden:

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

Die obige Konfiguration definiert eine Entität mit dem Namen "script.ritorno_a_casa"Welche, wenn vom Dienst hervorgerufen"script.turn_on" prosieht die Beleuchtung eines Gruppe von Lichtern ("group.ingresso"), Warte eine Minute und öffne dann das Wasser im Haus, indem du es aktivierst switch.acqua stellt es sich vor als ein Stellglied, das mit einem Magnetventil verbunden ist integriert a Home Assistant).

Wie die aufmerksamsten bemerkt haben werden, ist die Definition von Sequentialität in jeder Hinsicht ähnlich a quella definibile all’interno di un comune blocco “action" einer Automatisierung.

Offensichtlich im Block "Skript:"Sie können festlegen, wie viele Skripte Sie verwenden möchten, zum Beispiel:

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

Variablen

Die Übernahme der Skripte ermöglicht zum Zeitpunkt ihrer Ausführung die Übergabe von Variablen. Dies ist ein triviales und zugleich vielseitiges Konzept: So können Sie Skripte definieren, deren Verhalten auf der Grundlage der Variablen variiert, die an sie übergeben werden.

Nehmen wir zum Beispiel an, Sie haben ein Skript definiert, das provveda zur Lautstärkeregelung aller Alexa-Geräte integriert als "Media Player" im Haus vorhanden:

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

Dieses Skript ("script.volume_alexa") prosieht den Dienst zu evozieren "media_player.volume_set"Verpflichtung der beiden angegebenen Stellen zur Regulierung der proerste Lautstärke über den Parameter „volume_level", An die die Variable übergeben wird"Volume".

Das Aufrufen dieses Skripts über die Automatisierung ist ganz einfach:

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

Bedingung (condition)

Die Skripte werden ausgeführt nacheinandervon oben nach unten. In der Reihenfolge ist es möglich eine oder mehrere Bedingungen einführen (auch verschachtelt), um das Skript zu ermöglichen proin der Ausführung folgen oder nicht, basierend auf dem Auftreten oder Nicht-Auftreten der definierten Bedingung.

Nehmen wir das folgende Beispiel:

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

In diesem Beispielscript.accensione_luce_condizionata"Beim Ausführen, bevor das Licht eingeschaltet wird"light.sala"Überprüft die Lichtverhältnisse ab dem Sensor"Sensor.broadlink_sensor_light”Aus der Integration eines Sensors abgeleitet Broadlink A1 e-Air. Erkennt der Sensor einen Grad von lumiWenn die Helligkeit größer oder gleich 2 ist, stoppt die Sequenz und das Licht wird nicht eingeschaltet.

Verzögerung (delay)

Das Teilchen "verzögernMsgstr "Ermöglicht es Ihnen, die Ausführung eines Skripts für eine definierte Zeit vorübergehend zu unterbrechen.
Die Konfigurationsmöglichkeiten sind vielfältig. Einige Beispiele:

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

Warte

Im Gegensatz zu "Verzögerung", das Teilchen "wait_template”Unterbricht die Ausführung, bis eine bestimmte Bedingung eintritt, in der Regel eine (bestimmte) Zustandsänderung einer Entität. Offensichtlich ist es möglich, das "Warten" zu konfigurieren, um die Situation angesichts des Ablaufs eines bestimmten Zeitraums freizugeben und ihnen zu sagen, was in diesem Fall zu tun ist.

Schauen wir uns ein Beispiel an:

# 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'

Die Reihenfolge stimmt nicht progibt über diesen Block hinaus nach, bis der Sensorstatus "on"(Innerhalb einer Minute). Ist der Sensorstatus keine wird "on"Innerhalb einer Minute stoppt die Sequenz.

Auslöser

L’avvio di uno script può essere eseguito in vari modi; il servizio comunque da utilizzare è sempre il medesimo, ovvero script.turn_on. Tipicamente utilizzati nelle automazioni di Home Assistant, può essere anche utile innescare manualmente gli script utilizzando degli switch virtuali.


Weitere Informationen zur Syntax Skripte sind verfügbar auf der dedizierten Seite auf der Website von Home Assistant.

Virtuelle Schalter zu Befehlssequenzen (Skripten) definieren Home Assistant


Home Assistant Offizielles LogoATTENZIONE: Denken Sie daran, dass es in unserer FORUM-Community gibt ein Ad-hoc-Bereich für Home Assistantfür jeden Zweifel, Frage, Information auf dem spezifischen Verdienst dieser Komponenten.


Bitte kommentieren Sie unten