跳转到内容

模板报警控制面板

template 报警控制面板平台允许您将二进制传感器转换为状态机管理的报警控制面板。

# 示例配置
alarm_control_panel:
- platform: template
name: 报警面板
codes:
- "1234"
binary_sensors:
- input: zone_1
- input: zone_2
bypass_armed_home: true
  • codes (可选, 字符串列表):用于撤防报警的代码列表,如果 requires_code_to_arm 设置为 true,则也用于布防报警。

  • requires_code_to_arm (可选, 布尔值):布防报警需要代码,必须提供 codes

  • arming_away_time (可选, 时间):报警布防到离家模式之前的离开延迟。默认为 0s

  • arming_home_time (可选, 时间):报警布防到在家模式之前的离开延迟。

  • arming_night_time (可选, 时间):报警布防到夜间模式之前的离开延迟。

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

  • trigger_time (可选, 时间):触发报警后,如果传感器清除/关闭,重置到先前状态的时间。默认为 0s

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

    • input (必需, 字符串):二进制传感器组件的 id
    • bypass_armed_home (可选, 布尔值):在 armed_home 状态下,此二进制传感器不会触发报警。
    • bypass_armed_night (可选, 布尔值):在 armed_night 状态下,此二进制传感器不会触发报警。
    • bypass_auto (可选, 布尔值):如果在布防时此二进制传感器处于打开/打开状态,将自动旁路。
    • trigger_mode (可选, 字符串):设置此传感器的触发模式。delayedinstantinstant_alwaysdelayed_follower 之一。(如果未指定,delayed 为默认值)
    • chime (可选, 布尔值):设置为 true 时,每当传感器从关闭变为打开时,将调用蜂鸣回调。(如果未指定,false 为默认值)
  • restore_mode (可选, 枚举):

    • ALWAYS_DISARMED (默认):始终以 disarmed 状态启动。
    • RESTORE_DEFAULT_DISARMED:恢复状态,如果未找到保存的状态则默认为 disarmed 状态。
  • 来自 报警控制面板 的所有其他选项

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. 当报警面板处于布防状态时,指定了 delayed_follower 的区域故障将导致报警控制面板直接进入 triggered 状态。

  2. 当报警面板处于待定状态时,指定了 delayed_follower 的区域故障将保持在 pending 状态。

delayed_follower 触发模式提供更好的保护,如果有人通过未受保护的窗户或门进入场所。如果有 PIR 守卫主走廊,它将导致报警面板立即触发,因为有人以异常方式进入场所。同样,如果有人通过设置为 delayed 触发模式的门进入场所,然后触发 PIR,报警将保持在 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 或 pending_time 延迟后状态为 TRIGGERED
  5. 如果 trigger_mode 设置为 instantinstant_always

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

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

NOTE

虽然接口支持所有布防模式,但目前仅实现了 awayhomenightarm_... 用于 arm_awayarm_home arming_..._time 用于 arming_away_timearming_home_timearming_night_time ARMED_... 用于 ARMED_AWAYARMED_HOMEARMED_NIGHT

alarm_control_panel:
platform: template
name: 报警面板
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", "状态改变 %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", "传感器就绪状态变为: %s",
(id(acp1).get_all_sensors_ready())) ? (const char *) "True" : (const char *) "False");
on_chime:
then:
- lambda: !lambda |-
ESP_LOGD("TEST", "设置了蜂鸣模式的区域已打开");
binary_sensor:
- platform: gpio
id: zone_1
name: 区域 1
device_class: door
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_2
name: 区域 2
device_class: door
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_3
name: 区域 3
device_class: motion
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_3_tamper
name: 区域 3 防拆
device_class: tamper
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_4
name: 区域 4
device_class: door
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: homeassistant
id: ha_test
name: HA 测试
entity_id: input_boolean.test_switch
switch:
- platform: gpio
id: siren
name: 警报器
icon: mdi:alarm-bell
pin: GPIOXX