自动化 YAML

自动化是通过 Home Assistant 的 UI 创建的,但存储在 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yamlautomations.yaml 文件中。 [Learn more] 格式中。如果您想编辑一个 automationHome Assistant 中的自动化允许您自动响应在家中和周围发生的事情。 [Learn more]YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yamlautomations.yaml 文件中。 [Learn more],请选择该自动化,点击右上角的菜单按钮,然后选择 以 YAML 编辑

UI 会将您的自动化写入 automations.yaml。此文件由 UI 管理,不应手动编辑。

也可以直接在 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 或其他 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yamlautomations.yaml 文件中。 [Learn more] 文件中编写您的自动化。您可以通过向 configuration.yaml 添加带标签的 automation 块来实现:

# UI 工作所需的配置
automation: !include automations.yaml

# 带标签的自动化块
automation kitchen:
  - triggers:
      - trigger: ...

您可以添加任意数量的带标签的 automation 块。

Configuration Variables

alias string (Optional)

自动化的友好名称。

id string (Optional)

您的自动化的唯一 ID,将允许您在 UI 中更改名称和 entity_id,并将启用调试跟踪。

description string (Optional)

自动化的描述。

initial_state boolean (Optional, default: 从上次运行恢复)

用于定义启动时自动化的状态。当未设置时,状态将从上次运行恢复。请参见 自动化初始状态

trace map (Optional, default: {})

存储的跟踪的配置值,目前仅 stored_traces 可以配置。

stored_traces integer (Optional, default: 5)

将存储的跟踪数量。请参见 存储的调试跟踪数量

variables map (Optional, default: {})

将在您的模板中可用的变量,在 conditionsactions 中均可使用。

PARAMETER_NAME any

变量的值。任何 YAML 都是有效的。模板也可以用来将值传递给变量。

trigger_variables map (Optional, default: {})

将在您的 模板触发器 中可用的变量。

PARAMETER_NAME any

变量的值。任何 YAML 都是有效的。仅可以使用 有限模板

mode string (Optional, default: single)

控制在自动化仍在运行中时发生的情况。请参见 自动化模式

max integer (Optional, default: 10)

控制同时执行和/或排队的最大运行次数。仅在模式为 queuedparallel 时有效。

max_exceeded string (Optional, default: warning)

max 被超过(对于 single 模式,实际为 1)时,会发出日志消息以指示已发生此情况。此选项控制该日志消息的严重级别。请参见 日志级别 以获取有效选项列表。或者可以指定 silent 以抑制消息的发出。

triggers list Required

触发自动化的触发器。可以添加多个触发器,当这些触发器中的任何一个被触发时,自动化将启动。

id string (Optional)

可以在自动化中用于确定哪个触发器导致自动化启动的 ID。

variables map (Optional, default: {})

将在条件和动作序列中可用的变量。

PARAMETER_NAME any

变量的值。任何 YAML 都是有效的。模板也可以用来将值传递给变量。

conditions list (Optional)

启动自动化所需为 true 的条件。默认情况下,列出的所有条件均需为 true,您可以使用 逻辑条件 更改此默认行为。

actions list Required

在脚本中要执行的动作序列。

自动化模式

模式 描述
single 不启动新的运行。发出警告。
restart 在首先停止以前的运行后启动新的运行。
queued 在所有先前运行完成后启动新的运行。运行将按排队顺序执行。
parallel 启动新的独立运行,与先前的运行并行。

YAML 示例

可以添加到 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 的基于 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yamlautomations.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.yamlautomations.yaml 文件中。 [Learn more] 中编写自动化时,您将可以访问用户界面中没有的高级选项。

自动化初始状态

启动时,自动化默认恢复上次 Home Assistant 运行时的状态。此状态可通过 initial_state 选项进行控制。将其设置为 falsetrue 以强制初始状态为关闭或启用。

automation:
  - alias: "自动化名称"
    initial_state: false
    triggers:
      - trigger: ...

存储的调试跟踪数量

在使用 YAMLYAML 是一种人类可读的数据序列化语言。它用于以结构化格式存储和传输数据。在 Home Assistant 中,YAML 用于配置,例如在 configuration.yamlautomations.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.yamlautomations.yaml 文件中。 [Learn more] 文件中删除后,您必须在 UI 中删除它们。

要完全删除它们,请转到 UI 设置 > 设备和服务 > 实体 并在搜索框中找到该自动化或通过向下滚动查找。

检查您希望删除的自动化旁边的方框,然后从屏幕右上角选择 ‘删除所选’。