home-assistant.io/source/_docs/scripts/conditions.markdown
Fabian Affolter 481320128f Re-organisation Documentation and Getting started (#2055)
* Split MQTT documentation

* Add more details

* Move content to /docs

* Enable sidebar

* Move content to /docs

* Enable sidebar

* Move content

* Update links

* Remove wizard stuff

* Enable sidebar

* Minor changes

* Move MQTT parts to /docs

* update links

* Update links and sync content

* Fix link

* Enable sidebar

* Remove navigation

* Remove navigation and other minor updates

* Update links

* Add overview page

* Make title linkable

* Update

* Plit content

* Update links

* Rearrange content

* New getting-started section

* Add icons for docs

* Update for new structure

* Update for new structure

* Add docs navigation

* Add docs overview page

* Remove ecosystem navigation

* Add docs and remove other collections

* Move ecosystem to docs

* Remove duplicate files

* Re-add ecosystem overview

* Move to ecosystem

* Fix permission

* Update navigation

* Remove collection

* Move overview to right folder

* Move mqtt to upper level

* Move notebook to ecosystem

* Remove un-used files

* Add one more rectangle for iOS

* Move two parts back from docs and rename Run step

* Remove colon

* update getting-started section

* Add redirect

* Update

* Update navigation
2017-02-23 11:09:41 +01:00

5.2 KiB

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

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:
  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:
  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:
  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:
  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:
  condition: time
  # At least one of the following is required.
  after: '15:00:00'
  before: '02:00:00'
  weekday:
    - mon
    - wed
    - fri

Valid values for weekday are mon, tue, wed, thu, fri, sat, sun. Time condition windows can span across the midnight threshold. In the example above, the condition window is from 3pm to 2am.

{% 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:
  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'