跳转到内容

报警控制面板组件

alarm_control_panel:
- platform: ...
name: 报警面板

配置变量:

  • id (可选, 字符串):手动指定用于代码生成的 ID。idname 中至少必须指定一个。
  • name (可选, 字符串):报警控制面板的名称。idname 中至少必须指定一个。

NOTE

如果您为设备设置了 friendly_name,并且希望开关使用该名称,可以设置 name: None

每次报警状态改变时都会触发此触发器。

alarm_control_panel:
# ...
on_state:
then:
- logger.log: "报警面板状态已改变!"

当报警变为待定状态时触发此触发器。

alarm_control_panel:
# ...
on_pending:
then:
- logger.log: "报警待定!"

当报警变为布防状态时触发此触发器。

alarm_control_panel:
# ...
on_arming:
then:
- logger.log: "报警布防中!"

当报警变为在家布防状态时触发此触发器。

alarm_control_panel:
# ...
on_armed_home:
then:
- logger.log: "报警在家布防!"

当报警变为夜间布防状态时触发此触发器。

alarm_control_panel:
# ...
on_armed_night:
then:
- logger.log: "报警夜间布防!"

当报警变为离家布防状态时触发此触发器。

alarm_control_panel:
# ...
on_armed_away:
then:
- logger.log: "报警离家布防!"

当报警变为触发状态时触发此触发器。

alarm_control_panel:
# ...
on_triggered:
then:
- logger.log: "报警已触发!"

当报警从触发状态恢复到之前的布防状态或撤防状态时触发此触发器。

alarm_control_panel:
# ...
on_cleared:
then:
- logger.log: "报警已清除!"

当报警变为撤防状态时触发此触发器。

alarm_control_panel:
# ...
on_disarmed:
then:
- logger.log: "报警已撤防!"

当所有报警传感器的逻辑”与”状态改变时触发此触发器。这对于实现”报警就绪”LED 非常有用。一旦调用此触发器,您可以通过在 lambda 块中调用 get_all_sensors_ready() 来获取就绪状态。

alarm_control_panel:
# ...
on_disarmed:
then:
- lambda: !lambda |-
ESP_LOGI("AlarmPanel", "传感器就绪状态变为: %s", ((id(acp1).get_all_sensors_ready()) ? (const char *) "True" : (const char *) "False"));

当标记为蜂鸣的区域传感器从关闭变为打开时触发此触发器。这对于在区域打开时实现键盘蜂鸣非常有用。

alarm_control_panel:
# ...
on_chime:
then:
- logger.log: "报警蜂鸣!"

此动作以离家模式布防报警。当 requires_code_to_armtrue 时需要 code

on_...:
then:
- alarm_control_panel.arm_away:
id: acp1
code: "1234"

此动作以在家模式布防报警。当 requires_code_to_armtrue 时需要 code

on_...:
then:
- alarm_control_panel.arm_home:
id: acp1
code: "1234"

此动作以夜间模式布防报警。当 requires_code_to_armtrue 时需要 code

on_...:
then:
- alarm_control_panel.arm_night:
id: acp1
code: "1234"

此动作撤防报警。当 codes 不为空时需要 code

on_...:
then:
- alarm_control_panel.disarm:
id: acp1
code: "1234"

此动作将报警置于待定状态(pending_time 之后触发之前的状态)。

on_...:
then:
- alarm_control_panel.pending: acp1

此动作将报警置于触发状态。

on_...:
then:
- alarm_control_panel.triggered: acp1

条件 检查报警控制面板是否已布防。

on_...:
if:
condition:
alarm_control_panel.is_armed: acp1

lambda 中,您可以调用以下方法:

  • arm_away(code)
  • arm_home(code)
  • arm_night(code)
  • disarm(code)
  • get_all_sensors_ready()
id(acp1).arm_away();
id(acp1).arm_home();
id(acp1).arm_night();
id(acp1).disarm(std::string("1234"));
bool all_sensors_ready = id(acp1).get_all_sensors_ready();