4.1 KiB
layout, title, description, date, sidebar, comments, sharing, footer
layout | title | description | date | sidebar | comments | sharing | footer |
---|---|---|---|---|---|---|---|
page | Automation Conditions | Automations can test conditions when invoked. | 2016-04-24 08:30 +0100 | true | false | true | true |
Conditions are an optional part of an automation rule and be used to prevent an action from happening when triggered. Conditions look very similar to triggers but are very different. A trigger will look at events happening in the system while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off.
An automation rule can have multiple conditions. By default the action will only fire if all conditions pass. An optional key condition_type: 'or'
can be set on the automation rule to fire action if any condition matches. In the example below, the automation would trigger if the time is before 05:00 OR after 20:00.
automation:
condition_type: or
condition:
- platform: time
before: '05:00'
- platform: time
after: '20:00'
If your triggers and conditions are exactly the same, you can use a shortcut to specify conditions. In this case, triggers that are not valid conditions will be ignored.
automation:
condition: use_trigger_values
{% 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.
Either above
or below
, or both need to be specified. If both are used, the condition is true when the value is >= before
and* < after
.
You can optionally use a value_template
to make the value of the entity the same type of value as the condition.
automation:
condition:
platform: numeric_state
entity_id: sensor.temperature
above: 17
below: 25
{% linkable_title State condition %}
Tests if an entity is a specified state.
automation:
condition:
platform: 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.
automation:
condition:
platform: sun
after: sunset
# Optional offset value
after_offset: "-1:00:00"
{% linkable_title Template condition %}
The template condition will test if the [given template][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'.
automation:
condition:
platform: template
value_template: '{% raw %}{{ state.attributes.battery > 50 }}{% endraw %}'
# Or value_template could be:
# {% raw %}{% if state.attributes.battery > 50 %}true{% else %}false{% endif %}{% endraw %}
{% 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
automation:
condition:
platform: 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 (sun
, mon
, tue
, wed
, thu
, fri
& sat
)
{% 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.
automation:
condition:
platform: zone
entity_id: device_tracker.paulus
zone: zone.home