Conditions
条件可以被添加至脚本或自动化设置中以阻止指令继续执行。条件会监视当下的系统状态,例如可以设定条件以反馈开关处于开启或关闭状态。
AND condition
以下展示如何用一个条件语句同时判断多个条件内容,当所有子条件满足时,该条件触发。
condition:
condition: and
conditions:
- condition: state
entity_id: 'device_tracker.paulus'
state: 'home'
- condition: numeric_state
entity_id: 'sensor.temperature'
below: '20'
OR condition
以下展示如何用一个条件语句同时判断多个条件内容,当任一子条件满足时,该条件触发。
condition:
condition: or
conditions:
- condition: state
entity_id: 'device_tracker.paulus'
state: 'home'
- condition: numeric_state
entity_id: 'sensor.temperature'
below: '20'
MIXED AND and OR conditions
以下展示如何用一个条件语句同时判断多个条件内容,该设置重点展示如何在 AND 条件中嵌套 OR 判断子条件。 (译者注:下列设置表示当 paulus 在家并且温度低于20度,或者paulus 在家并且下雨时,条件触发。)
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'
Numeric state condition
数字条件(Numeric state condition)基于数值是否满足一定门槛而触发。
如果以上below
和以下 above
同时出现在语句中,则 2 个条件都需要满足。
你可以使用值模板 value_template
将数据转换为数字类型,以实现条件触发:
condition:
condition: numeric_state
entity_id: sensor.temperature
above: 17
below: 25
# 如果你的传感器的值需要转换
value_template: {{ float(state.state) + 2 }}
(译者注:计算机中的数据类型有很多,最常见的有数字和字符串。其中数字还分浮点型(float)数字、整数型数字(int)等,上述配置中 HA 只可以在数字型数据间比较大小,因此需要将字符串(文本)数据转换为数字。)
State condition
当组件某个值符合设定时触发条件:
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
Sun condition
太阳组件 sun
可以判定太阳日出日落的状态,可以利用其触发特定场景。before
和 after
属性仅限 sunset
和 sunrise
使用。 同样,另外还有专属的抵消值属性 (before_offset
, after_offset
)。类似的还有sun trigger。
condition:
condition: sun
after: sunset
# 可选抵消值
after_offset: "-1:00:00"
Template condition
模板条件将在值 given template 为真时触发。前提是该条件的输出值为布尔值或者被设定为真值 true
.
condition:
condition: template
value_template: '{{ states.device_tracker.iphone.attributes.battery > 50 }}'
(译者注:上述设置表示当 iPhone 的电量大于50时,条件触发。)
在自动化配置中,模板式条件有权限监测 trigger
变量,详见 此处.
Time condition
时间条件可设定在某个特定时间点触发:
condition:
condition: time
# 至少需要设置下列其中一项属性
after: '15:00:00'
before: '02:00:00'
weekday:
- mon
- wed
- fri
weekday
的有效值有 mon
, tue
, wed
, thu
, fri
, sat
, sun
。
时间节点可以跨越零点,比如可以从下午3点到隔日2点,系统会自动识别。
Zone condition
地点条件通过判定组件是否在特定地点而触发。开启地点自动化配置前,你必须已设定好支持 GPS 定位的设备追踪平台 (device tracker)。目前仅有OwnTracks 平台 和 iCloud 平台 支持这项功能。
condition:
condition: zone
entity_id: device_tracker.paulus
zone: zone.home
Examples
以下设定表示在14点至23点太阳落山时分,客厅的灯处于关闭状态,并且电灯关闭脚本没有运行时,条件触发。
condition:
- condition: numeric_state
entity_id: sun.sun
value_template: ''
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'