Alarm Control Panel 组件
基础 Alarm Control Panel 配置
Section titled “基础 Alarm Control Panel 配置”alarm_control_panel: - platform: ... name: Alarm Panel配置变量:
- id (可选, string):手动指定用于代码生成的 ID。至少必须指定 id 和 name 之一。
- name (可选, string):报警控制面板的名称。至少必须指定 id 和 name 之一。
NOTE
如果已为设备设置了 friendly_name,并且
希望开关使用该名称,可以设置 name: None。
-
on_state (可选, Action):在 报警状态改变时执行的自动化。参见
on_state触发器。 -
on_arming (可选, Action):在 报警状态变为
arming时执行的自动化。参见on_arming触发器。 -
on_pending (可选, Action):在 报警状态变为
pending时执行的自动化。参见on_pending触发器。 -
on_armed_home (可选, Action):在 报警状态变为
armed_home时执行的自动化。参见on_armed_home触发器。 -
on_armed_night (可选, Action):在 报警状态变为
armed_night时执行的自动化。参见on_armed_night触发器。 -
on_armed_away (可选, Action):在 报警状态变为
armed_away时执行的自动化。参见on_armed_away触发器。 -
on_triggered (可选, Action):在 报警触发时执行的自动化。参见
on_triggered触发器。 -
on_disarmed (可选, Action):在 报警状态变为
disarmed时执行的自动化。参见on_disarmed触发器。 -
on_cleared (可选, Action):在 报警清除时执行的自动化。参见
on_cleared触发器。 -
on_ready (可选, Action):在所有区域传感器的逻辑与运算状态改变时执行的自动化。参见
on_ready触发器。 -
on_chime (可选, Action):在配置中标记为 chime 的区域从关闭变为打开时执行的自动化。参见
on_chime触发器。 -
如果启用了 Webserver 且选择了版本 3,则包含 Webserver 组件的所有其他选项。参见 Webserver 版本 3。
-
如果启用了 MQTT,则包含 MQTT 组件 的所有其他选项。
on_state 触发器
Section titled “on_state 触发器”此触发器在每次报警状态改变时激活。
alarm_control_panel: # ... on_state: then: - logger.log: "Alarm Panel State Changed!"on_pending 触发器
Section titled “on_pending 触发器”此触发器在报警变为 pending 状态时激活。
alarm_control_panel: # ... on_pending: then: - logger.log: "Alarm Pending!"on_arming 触发器
Section titled “on_arming 触发器”此触发器在报警变为 arming 状态时激活。
alarm_control_panel: # ... on_arming: then: - logger.log: "Alarm Arming!"on_armed_home 触发器
Section titled “on_armed_home 触发器”此触发器在报警变为 armed_home 状态时激活。
alarm_control_panel: # ... on_armed_home: then: - logger.log: "Alarm armed_home!"on_armed_night 触发器
Section titled “on_armed_night 触发器”此触发器在报警变为 armed_night 状态时激活。
alarm_control_panel: # ... on_armed_night: then: - logger.log: "Alarm armed_night!"on_armed_away 触发器
Section titled “on_armed_away 触发器”此触发器在报警变为 armed_away 状态时激活。
alarm_control_panel: # ... on_armed_away: then: - logger.log: "Alarm armed_away!"on_triggered 触发器
Section titled “on_triggered 触发器”此触发器在报警变为 triggered 状态时激活。
alarm_control_panel: # ... on_triggered: then: - logger.log: "Alarm Triggered!"on_cleared 触发器
Section titled “on_cleared 触发器”此触发器在报警从 triggered 状态恢复回之前的 armed 状态或 disarmed 状态时激活。
alarm_control_panel: # ... on_cleared: then: - logger.log: "Alarm Cleared!"on_disarmed 触发器
Section titled “on_disarmed 触发器”此触发器在报警变为 disarmed 状态时激活。
alarm_control_panel: # ... on_disarmed: then: - logger.log: "Alarm Disarmed!"on_ready 触发器
Section titled “on_ready 触发器”此触发器在所有报警传感器的逻辑与运算状态改变时激活。这对于实现 “报警就绪”LED 很有用。一旦调用此触发器,就可以在 lambda 块中调用 get_all_sensors_ready() 来获取就绪状态。
alarm_control_panel: # ... on_disarmed: then: - lambda: !lambda |- ESP_LOGI("AlarmPanel", "Sensor ready change to: %s", ((id(acp1).get_all_sensors_ready()) ? (const char *) "True" : (const char *) "False"));on_chime 触发器
Section titled “on_chime 触发器”此触发器在标记为 chime:true 的区域传感器从关闭变为打开时激活。这对于 在区域打开时实现键盘提示音很有用。
alarm_control_panel: # ... on_chime: then: - logger.log: "Alarm Chime!"alarm_control_panel.arm_away 操作
Section titled “alarm_control_panel.arm_away 操作”此操作以 away 模式布防报警。当 requires_code_to_arm 为 true 时,code 是必需的。
on_...: then: - alarm_control_panel.arm_away: id: acp1 code: "1234"alarm_control_panel.arm_home 操作
Section titled “alarm_control_panel.arm_home 操作”此操作以 home 模式布防报警。当 requires_code_to_arm 为 true 时,code 是必需的。
on_...: then: - alarm_control_panel.arm_home: id: acp1 code: "1234"alarm_control_panel.arm_night 操作
Section titled “alarm_control_panel.arm_night 操作”此操作以 night 模式布防报警。当 requires_code_to_arm 为 true 时,code 是必需的。
on_...: then: - alarm_control_panel.arm_night: id: acp1 code: "1234"alarm_control_panel.disarm 操作
Section titled “alarm_control_panel.disarm 操作”此操作撤防报警。当 codes 不为空时,code 是必需的。
on_...: then: - alarm_control_panel.disarm: id: acp1 code: "1234"alarm_control_panel.pending 操作
Section titled “alarm_control_panel.pending 操作”此操作将报警置于 pending 状态(即 pending_time 之后在 triggered 之前的状态)。
on_...: then: - alarm_control_panel.pending: acp1alarm_control_panel.triggered 操作
Section titled “alarm_control_panel.triggered 操作”此操作将报警置于 triggered 状态。
on_...: then: - alarm_control_panel.triggered: acp1alarm_control_panel.is_armed 条件
Section titled “alarm_control_panel.is_armed 条件”此 条件 检查报警控制面板是否已布防。
on_...: if: condition: alarm_control_panel.is_armed: acp1lambda 调用
Section titled “lambda 调用”在 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();MQTT 命令格式
Section titled “MQTT 命令格式”当启用 MQTT 时,报警控制面板会订阅一个命令主题。命令可以以纯字符串或 JSON 对象的形式发送。
纯字符串负载直接设置报警状态:
mosquitto_pub -t "esphome/alarm_control_panel/my_alarm/command" -m "ARM_AWAY"有效的纯字符串命令包括:ARM_AWAY、ARM_HOME、ARM_NIGHT、ARM_CUSTOM_BYPASS、DISARM、PENDING、TRIGGERED。
若要随命令附带 PIN 码,请发送一个包含必需 state 键和可选 code 键的 JSON 对象:
mosquitto_pub -t "esphome/alarm_control_panel/my_alarm/command" -m '{"state": "DISARM", "code": "1234"}'mosquitto_pub -t "esphome/alarm_control_panel/my_alarm/command" -m '{"state": "ARM_AWAY", "code": "1234"}'code 会与配置的 codes 列表进行验证。如果 requires_code_to_arm 为 true,布防命令必须包含有效的 code。