跳转到内容

Template Alarm Control Panel

template alarm control panel 平台允许你将 binary sensor(二进制传感器)转换为 由状态机管理的 alarm control panel。

# 示例配置条目
alarm_control_panel:
- platform: template
name: Alarm Panel
codes:
- "1234"
binary_sensors:
- input: zone_1
- input: zone_2
bypass_armed_home: true
  • codes (可选, string 列表):用于撤防报警的代码列表。如果 requires_code_to_arm 设置为 true, 这些代码也将用于布防。

  • requires_code_to_arm (可选, boolean):布防报警是否需要密码,codes 必须提供。

  • arming_away_time (可选, Time):报警进入 away 模式布防前的出门延迟时间。 默认为 0s。

  • arming_home_time (可选, Time):报警进入 home 模式布防前的出门延迟时间。

  • arming_night_time (可选, Time):报警进入 night 模式布防前的出门延迟时间。

  • pending_time (可选, Time):报警触发前的进门延迟时间。默认为 0s。

  • trigger_time (可选, Time):触发报警后,如果传感器已清除/关闭,则等待 该时间后重置回之前状态。默认为 0s。

  • binary_sensors (可选, list):面板应使用的二进制传感器列表。每个条目包含:

    • input (必填, string):二进制传感器组件的 id
    • bypass_armed_home (可选, boolean):此二进制传感器在 armed_home 状态下不会触发报警。
    • bypass_armed_night (可选, boolean):此二进制传感器在 armed_night 状态下不会触发报警。
    • bypass_auto (可选, boolean):如果在布防时此二进制传感器仍处于打开状态,则自动将其旁路。
    • trigger_mode (可选, string):设置此传感器的触发模式。可选值为 delayed、instant、 instant_always 或 delayed_follower。(未指定时默认为 delayed)
    • chime (可选, boolean):设置为 true 时,当传感器从 关闭变为打开时会调用 chime 回调。(未指定时默认为 false)
  • restore_mode (可选, enum):

    • ALWAYS_DISARMED(默认):始终以 disarmed 状态启动。
    • RESTORE_DEFAULT_DISARMED:恢复之前状态,如果没有保存的状态则默认为 disarmed。
  • 包含 Alarm Control Panel 的所有其他选项

NOTE

如果省略 binary_sensors,则预期使用 pending 操作 或 triggered 操作 来触发报警。

每个二进制传感器”区域”支持 4 种触发模式:

  • delayed
  • instant
  • instant_always
  • delayed_follower

delayed 触发模式通常用于需要进入区域才能访问报警键盘或其他布防/撤防方式的外部门窗。如果报警面板已布防,且设置为 delayed 的区域”发生故障”(即区域状态 为 true),报警状态将从 armed 变为 pending。在 pending 状态期间, 用户在预设时间内可以撤防报警,否则报警将变为 triggered 状态。如果未指定,这是默认触发模式。

instant 触发模式通常用于外部区域(如窗户和玻璃破碎探测器)。如果报警 控制面板已布防,此类型区域的故障将直接使报警从 armed 状态变为 triggered 状态。

instant_always 触发模式通常用于防篡改输入。无论报警 控制面板是否已布防,发生故障时报警都会直接进入 triggered 状态。

delayed_follower 触发模式通常用于室内被动红外(PIR)或微波传感器。当 delayed_follower 区域发生故障时,会发生以下两种情况之一:

  1. 当报警面板处于 armed 状态时,具有 delayed_follower 设置的区域发生故障将使报警 控制面板直接进入 triggered 状态。

  2. 当报警面板处于 pending 状态时,具有 delayed_follower 设置的区域发生故障将保持 在 pending 状态。

delayed_follower 触发模式在有人通过未受保护的窗户或门进入室内时提供更好的保护。如果在主走廊设有 PIR 传感器,当有人 以异常方式进入室内时,它将立即触发报警面板。同样,如果有人通过设置为 delayed 触发模式的门进入室内,然后触发了 PIR,报警将保持在 pending 状态,直到用户撤防报警, 或者 pending 计时器到期。

  1. 报警以 DISARMED 状态启动

  2. 当调用 arm_... 方法时

    • arming_..._time 大于 0 时,状态为 ARMING
    • arming_..._time 为 0 或延迟结束后,状态为 ARMED_...
  3. 当报警被传感器状态变为 on 或 alarm_control_panel_pending_action 调用所触发时

  4. 如果 trigger_mode 设置为 delayed:

    • pending_time 大于 0 时,状态为 PENDING
    • pending_time 为 0 或延迟结束后,状态为 TRIGGERED
  5. 如果 trigger_mode 设置为 instant 或 instant_always:

    • 状态直接设置为 TRIGGERED
  6. 如果 trigger_mode 设置为 interior_follower:

    • 如果当前状态为 ARMED_...,状态将设置为 TRIGGERED
    • 如果当前状态为 PENDING,则不会发生任何变化,状态保持在 PENDING。
  7. 如果 trigger_time 大于 0 且在 trigger_time 延迟后没有传感器处于 on 状态, 则状态恢复到 ARM_...

NOTE

虽然接口支持所有布防模式,但目前仅实现了 away、home 和 night。 arm_... 表示 arm_away 或 arm_home arming_..._time 表示 arming_away_time、arming_home_time 或 arming_night_time ARMED_... 表示 ARMED_AWAY、ARMED_HOME 或 ARMED_NIGHT

alarm_control_panel:
platform: template
name: Alarm Panel
id: acp1
codes:
- "1234"
requires_code_to_arm: true
arming_away_time: 30s
arming_home_time: 5s
pending_time: 30s
trigger_time: 5min
binary_sensors:
- input: zone_1
chime: true
trigger_mode: delayed
- input: zone_2
chime: true
trigger_mode: delayed
- input: zone_3
bypass_armed_home: true
trigger_mode: delayed_follower
- input: zone_3_tamper
trigger_mode: instant_always
- input: zone_4
trigger_mode: instant
- input: ha_test
on_state:
then:
- lambda: !lambda |-
ESP_LOGD("TEST", "State change %s", alarm_control_panel_state_to_string(id(acp1)->get_state()));
on_triggered:
then:
- switch.turn_on: siren
on_cleared:
then:
- switch.turn_off: siren
on_ready:
then:
- lambda: !lambda |-
ESP_LOGD("TEST", "Sensor ready change to: %s",
(id(acp1).get_all_sensors_ready())) ? (const char *) "True" : (const char *) "False");
on_chime:
then:
- lambda: !lambda |-
ESP_LOGD("TEST", "Zone with chime mode set opened");
binary_sensor:
- platform: gpio
id: zone_1
name: Zone 1
device_class: door
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_2
name: Zone 2
device_class: door
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_3
name: Zone 3
device_class: motion
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_3_tamper
name: Zone 3 Tamper
device_class: tamper
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_4
name: Zone 4
device_class: door
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: homeassistant
id: ha_test
name: HA Test
entity_id: input_boolean.test_switch
switch:
- platform: gpio
id: siren
name: Siren
icon: mdi:alarm-bell
pin: GPIOXX