警报

alert 集成旨在在出现问题时通知您。 例如,如果车库门被留开,alert 集成可以通过以可自定义的 间隔向您发送重复通知来提醒您。它还可用于低电池传感器、 水泄漏传感器或任何可能需要您注意的条件。

警报会向前端添加一个实体。 该实体允许您在警报被解决之前将其静音,并有三种 可能的状态:

状态 描述
idle 警报条件为假。
on 警报条件为真。
off 警报条件为真,但已被确认。

基本示例

alert 集成利用任何 notification 集成。要 设置 alert 集成,首先,您必须设置一个 notification integration。 然后,将以下内容添加到您的 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中。 在更改了configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件后,重启 Home Assistant 以应用更改。

# 示例 configuration.yaml 条目
alert:
  garage_door:
    name: 车库门已打开
    done_message: 车库门已关闭
    entity_id: input_boolean.garage_door
    state: "on"
    repeat: 30
    can_acknowledge: true
    skip_first: true
    notifiers:
      - ryans_phone
      - kristens_phone

Configuration Variables

name string Required

警报的友好名称。

entity_id string Required

要监视的实体 ID。

title template (Optional)

如果通知者支持,则用于通知的标题 并支持 template

state string (Optional, default: true)

实体的问题条件。

repeat integer | list Required

通知重复之前的分钟数。 可以是一个数字或数字列表。

can_acknowledge boolean (Optional, default: true)

控制是否可以确认通知;如果警报不应被确认,则设置为 false

skip_first boolean (Optional, default: false)

控制通知是否应立即发送或在第一次延迟后发送。

message template (Optional)

在警报从 idle 转换为 on 后发送的消息 并支持 template

done_message template (Optional)

警报从 onoff 转换到 idle 后发送的消息,带有 template 支持。只在从 idle 转换到 on 发送警报通知时发送。

notifiers list (Optional)

用于警报的 notification 集成列表。

data list (Optional)

要发送给通知者的额外参数字典。

在此示例中,车库门状态 (input_boolean.garage_door) 被监视 ,当其状态等于 on 时,将触发此警报。 这表示门已打开。由于 skip_first 选项 设置为 true,第一个通知不会立即发送。 然而,每 30 分钟,将发送一次通知,直到 input_boolean.garage_door 不再处于 on 状态或直到警报 在 Home Assistant 前端被确认。

对于需要其他参数的通知者(例如 twilio_sms,在发送通知时需要 您指定 target 参数),您可以使用 group 通知将它们包装成一个警报。 只需创建一种具有单个通知成员的 group 通知类型 (例如 twilio_sms),并指定除了 message 之外由 alert 集成提供的所需参数:

- platform: group
  name: john_phone_sms
  services:
    - action: twilio_sms
      data:
        target: !secret john_phone
alert:
  freshwater_temp_alert:
    name: "警告:我检测到淡水箱温度存在问题"
    entity_id: binary_sensor.freshwater_temperature_status
    state: "on"
    repeat: 5
    can_acknowledge: true
    skip_first: false
    notifiers:
      - john_phone_sms

复杂警报条件

按设计,alert 集成仅处理非常简单的触发条件。 即,它仅检查单个实体的状态是否等于某个值。在某些 情况下,可能希望具有更复杂条件的警报。 可能是在电池百分比降到阈值以下时。也许您想在某些天禁用警报。 也许警报的触发应依赖于多个输入。对于所有这些情况,最好使用警报 配合 Template Binary Sensor。以下示例便是如此。

template:
  - binary_sensor:
      - name: "运动电池电量不足"
        state: "{{ state_attr('sensor.motion', 'battery') | float(default=0) < 15 }}"
        device_class: battery

alert:
  motion_battery:
    name: 运动电池电量不足
    entity_id: binary_sensor.motion_battery_is_low
    repeat: 30
    notifiers:
      - ryans_phone
      - kristens_phone

这个示例将在实体 sensor.motionbattery 属性降到 15 以下时开始触发。它将继续触发,直到电池属性 升高至 15 或警报在前端被确认。

动态通知延迟时间

可能希望警报通知之间的延迟随着警报的继续触发而动态 变化。这可以通过将 repeat 配置键设置为数字列表而不是单个数字来实现。 修改第一个示例如下所示。

# 示例 configuration.yaml 条目
alert:
  garage_door:
    name: 车库门已打开
    entity_id: input_boolean.garage_door
    state: "on"   # 可选,'on' 是默认值
    repeat:
      - 15
      - 30
      - 60
    can_acknowledge: true  # 可选,默认是 true
    skip_first: true  # 可选,默认是 false
    notifiers:
      - ryans_phone
      - kristens_phone

现在,第一个消息将在 15 分钟延迟后发送,第二个将在此后 30 分钟发送,随后的每个通知之间将间隔 60 分钟。 例如,如果车库门在 2:00 打开,将会在 2:15、2:45、3:45、4:45 等时间发送通知,并且每 60 分钟继续发送。

消息模板

可能希望警报通知包含有关实体状态的信息。 模板 可以用于警报的消息或名称,以使其更相关。 以下示例将展示如何为植物包含实体的问题 attribute

# 示例 configuration.yaml 条目
alert:
  office_plant:
    name: 办公室植物需要帮助
    entity_id: plant.plant_office
    state: "problem"
    repeat: 30
    can_acknowledge: true
    skip_first: true
    message: "植物 {{ states.plant.plant_office }} 需要帮助 ({{ state_attr('plant.plant_office', 'problem') }})"
    done_message: 办公室植物正常
    notifiers:
      - ryans_phone
      - kristens_phone

生成的消息可能是 植物办公室植物需要帮助(湿度低)

通知者的附加参数

某些通知者支持更多参数(例如,设置文本颜色或操作 按钮)。这些可以通过 data 参数提供:

# 示例 configuration.yaml 条目
alert:
  garage_door:
    name: "车库门已打开"
    message: "车库门仍然打开"
    done_message: "车库门已关闭"
    entity_id: input_boolean.garage_door
    state: "on"   # 可选,'on' 是默认值
    repeat:
      - 15
      - 30
      - 60
    can_acknowledge: true  # 可选,默认是 true
    skip_first: true  # 可选,默认是 false
    data:
      inline_keyboard:
        - '关闭车库:/close_garage, 确认:/garage_acknowledge'
    notifiers:
      - frank_telegram

此特定示例依赖于 Telegram 的 inline_keyboard 功能, 用户可以通过按钮执行某些操作。

基于上面的示例,您可以创建一个自动化来停止进一步的消息, 但您仍然会收到完成消息。

- alias: "Telegram 回调停止车库门的警报"
  triggers:
    - trigger: event
      event_type: telegram_callback
      event_data:
        data: "/garage_acknowledge"
  actions:
    - action: alert.turn_off
      target:
        entity_id: alert.garage_door

发送到 Home Assistant Companion 应用的通知支持 替换清除 通知。要使用这些功能与警报,请在消息数据中设置 tag,将 clear_notification 作为 done_message 发送,并使用 mobile_app_* 作为通知者:

alert:
  garage_door:
    name: 车库门已打开
    done_message: clear_notification
    entity_id: input_boolean.garage_door
    state: "on"
    repeat: 30
    can_acknowledge: true
    skip_first: true
    notifiers:
      - mobile_app_ryan
      - mobile_app_kristen
    data:
      tag: garage-door