自动化 YAML
自动化是通过 Home Assistant 的 UI 创建的,但存储在 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yaml
或 automations.yaml
文件中。 [Learn more] 格式中。如果您想编辑一个 automationHome Assistant 中的自动化允许您自动响应在家中和周围发生的事情。 [Learn more] 的 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yaml
或 automations.yaml
文件中。 [Learn more],请选择该自动化,点击右上角的菜单按钮,然后选择 以 YAML 编辑。
UI 会将您的自动化写入 automations.yaml
。此文件由 UI 管理,不应手动编辑。
也可以直接在 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 或其他 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yaml
或 automations.yaml
文件中。 [Learn more] 文件中编写您的自动化。您可以通过向 configuration.yaml
添加带标签的 automation
块来实现:
# UI 工作所需的配置
automation: !include automations.yaml
# 带标签的自动化块
automation kitchen:
- triggers:
- trigger: ...
您可以添加任意数量的带标签的 automation
块。
Configuration Variables
用于定义启动时自动化的状态。当未设置时,状态将从上次运行恢复。请参见 自动化初始状态。
存储的跟踪的配置值,目前仅 stored_traces
可以配置。
将存储的跟踪数量。请参见 存储的调试跟踪数量。
将在您的模板中可用的变量,在 conditions
和 actions
中均可使用。
控制在自动化仍在运行中时发生的情况。请参见 自动化模式。
当 max
被超过(对于 single
模式,实际为 1)时,会发出日志消息以指示已发生此情况。此选项控制该日志消息的严重级别。请参见 日志级别 以获取有效选项列表。或者可以指定 silent
以抑制消息的发出。
触发自动化的触发器。可以添加多个触发器,当这些触发器中的任何一个被触发时,自动化将启动。
启动自动化所需为 true
的条件。默认情况下,列出的所有条件均需为 true
,您可以使用 逻辑条件 更改此默认行为。
自动化模式
模式 | 描述 |
---|---|
single |
不启动新的运行。发出警告。 |
restart |
在首先停止以前的运行后启动新的运行。 |
queued |
在所有先前运行完成后启动新的运行。运行将按排队顺序执行。 |
parallel |
启动新的独立运行,与先前的运行并行。 |
YAML 示例
可以添加到 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 的基于 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yaml
或 automations.yaml
文件中。 [Learn more] 的自动化示例。
# configuration.yaml 中的条目示例
automation my_lights:
# 在日落前 1 小时打开灯,如果人们在家
# 并且如果人们在 16:00-23:00 之间回家
- alias: "规则 1 晚上的灯打开"
triggers:
# 在每个触发器配置的第一行前加上 '-' 来进入多个
- trigger: sun
event: sunset
offset: "-01:00:00"
- trigger: state
entity_id: all
to: "home"
conditions:
# 在每个条件配置的第一行前加上 '-' 来进入多个
- condition: state
entity_id: all
state: "home"
- condition: time
after: "16:00:00"
before: "23:00:00"
actions:
# 对于单个动作条目,我们不需要在动作前加 '-' - 当然如果您想的话可以加
- action: homeassistant.turn_on
target:
entity_id: group.living_room
# 当所有人离开房子时关闭灯
- alias: "规则 2 - 离开模式"
triggers:
- trigger: state
entity_id: all
to: "not_home"
actions:
- action: light.turn_off
target:
entity_id: all
# 在晚上保罗离开房子时通知
- alias: "离开家通知"
triggers:
- trigger: zone
event: leave
zone: zone.home
entity_id: device_tracker.paulus
conditions:
- condition: time
after: "20:00"
actions:
- action: notify.notify
data:
message: "保罗离开了房子"
# 通过 Pushover 发送通知,当小米立方体发生事件时。来自小米集成的自定义事件。
- alias: "小米立方体动作"
initial_state: false
triggers:
- trigger: event
event_type: cube_action
event_data:
entity_id: binary_sensor.cube_158d000103a3de
actions:
- action: notify.pushover
data:
title: "检测到立方体事件"
message: "立方体触发了此事件:{{ trigger.event }}"
额外选项
直接在 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yaml
或 automations.yaml
文件中。 [Learn more] 中编写自动化时,您将可以访问用户界面中没有的高级选项。
自动化初始状态
启动时,自动化默认恢复上次 Home Assistant 运行时的状态。此状态可通过 initial_state
选项进行控制。将其设置为 false
或 true
以强制初始状态为关闭或启用。
automation:
- alias: "自动化名称"
initial_state: false
triggers:
- trigger: ...
存储的调试跟踪数量
在使用 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yaml
或 automations.yaml
文件中。 [Learn more] 时,您可以配置为自动化存储的调试跟踪数量。此设置通过 trace
下的 stored_traces
选项进行控制。将 stored_traces
设置为您希望为特定自动化存储的跟踪数量。如果未指定,则将使用默认值 5。
automation:
- alias: "自动化名称"
trace:
stored_traces: 10
triggers:
- trigger: ...
将您的 YAML 自动化迁移到 automations.yaml
如果您想迁移手动自动化以使用编辑器,您需要将其复制到 automations.yaml
。确保 automations.yaml
保持为列表!对于您复制过来的每个自动化,您必须添加一个 id
。这可以是任何字符串,只要它是唯一的。
# automations.yaml 条目示例。请注意,automations.yaml 始终是一个列表!
- id: my_unique_id # <-- 编辑器工作所需,对于使用编辑器创建的自动化,ID 将自动生成。
alias: "你好,世界"
triggers:
- trigger: state
entity_id: sun.sun
from: below_horizon
to: above_horizon
conditions:
- condition: numeric_state
entity_id: sensor.temperature
above: 17
below: 25
value_template: "{{ float(state.state) + 2 }}"
actions:
- action: light.turn_on
删除自动化
当自动化在 Home Assistant 仪表板中仍然可见,即使在 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yaml
或 automations.yaml
文件中。 [Learn more] 文件中删除后,您必须在 UI 中删除它们。
要完全删除它们,请转到 UI 设置 > 设备和服务 > 实体 并在搜索框中找到该自动化或通过向下滚动查找。
检查您希望删除的自动化旁边的方框,然后从屏幕右上角选择 ‘删除所选’。