home-assistant.io/source/getting-started/scripts-conditions.markdown
Dani 14837c4833 Update scripts-conditions.markdown (#925)
Clarification for the AND and OR examples of conditions. Some people were missing first 'condition' looking at the examples.
2016-09-11 23:42:13 -07:00

4.9 KiB

layout, title, description, date, sidebar, comments, sharing, footer
layout title description date sidebar comments sharing footer
page Conditions Documentation about all available conditions. 2016-04-24 08:30 +0100 true false true true

Conditions can be used within a script or automation to prevent further execution. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off.

{% linkable_title AND condition %}

Test multiple conditions in 1 condition statement. Passes if all embedded conditions are valid.

condition:
  condition: and
  conditions:
    - condition: state
      entity_id: 'device_tracker.paulus'
      state: 'home'
    - condition: numeric_state
      entity_id: 'sensor.temperature'
      below: '20'

{% linkable_title OR condition %}

Test multiple conditions in 1 condition statement. Passes if any embedded conditions is valid.

condition:
  condition: or
  conditions:
    - condition: state
      entity_id: 'device_tracker.paulus'
      state: 'home'
    - condition: numeric_state
      entity_id: 'sensor.temperature'
      below: '20'

{% linkable_title MIXED AND and OR conditions %}

Test multiple AND and OR conditions in 1 condition statement. Passes if any embedded conditions is valid. This allows you to mix several AND and OR conditions together.

condition:
  condition: and
  conditions:
    - condition: state
      entity_id: 'device_tracker.paulus'
      state: 'home'
    - condition: or
      conditions:
      - condition: state
        entity_id: sensor.weather_precip
        state: 'rain'
      - condition: numeric_state
        entity_id: 'sensor.temperature'
        below: '20'

{% linkable_title Numeric state condition %}

This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches all of the above or below thresholds.

For above, the condition passes if value >= above. For below, the condition passes if value <= below. If both below and above are specified, both tests have to pass.

You can optionally use a value_template to process the value of the state before testing it.

condition: numeric_state
entity_id: sensor.temperature
above: 17
below: 25
# If your sensor value needs to be adjusted
value_template: {% raw %}{{ float(state.state) + 2 }}{% endraw %}

{% linkable_title State condition %}

Tests if an entity is a specified state.

condition: state
entity_id: device_tracker.paulus
state: not_home
# optional: trigger only if state was this for last X time.
for:
  hours: 1
  minutes: 10
  seconds: 5

{% linkable_title Sun condition %}

The sun condition can test if the sun has already set or risen when a trigger occurs. The before and after keys can only be set to sunset or sunrise. They have a corresponding optional offset value (before_offset, after_offset) that can be added, similar to the sun trigger.

condition: sun
after: sunset
# Optional offset value
after_offset: "-1:00:00"

{% linkable_title Template condition %}

The template condition will test if the given template renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'.

condition: template
value_template: '{% raw %}{{ states.device_tracker.iphone.attributes.battery > 50 }}{% endraw %}'

Within an automation, template conditions also have access to the trigger variable as described here.

{% linkable_title Time condition %}

The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week

condition: time
# At least one of the following is required.
after: '15:00:00'
before: '23:00:00'
weekday:
  - mon
  - wed
  - fri

Valid values for weekday are mon, tue, wed, thu, fri, sat, sun.

{% linkable_title Zone condition %}

Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the OwnTracks platform and the iCloud platform.

condition: zone
entity_id: device_tracker.paulus
zone: zone.home

{% linkable_title Examples %}

    condition:
      - condition: numeric_state
        entity_id: sun.sun
        value_template: '{{ state.attributes.elevation }}'
        below: 1
      - condition: state
        entity_id: light.living_room
        state: 'off'
      - condition: time
        before: '23:00:00'
        after: '14:00:00'
      - condition: state
        entity_id: script.light_turned_off_5min
        state: 'off'