Manual Alarm Control Panel with MQTT Support


This platform extends the manual alarm by adding support for MQTT control of the alarm by a remote device. It can be used to create external keypads which simply change the state of the manual alarm in Home Assistant.

It’s essentially the opposite of the MQTT Alarm Panel which allows Home Assistant to observe an existing, fully-featured alarm where all of the alarm logic is embedded in that physical device.

The component will accept the following commands from your Alarm Panel via the command_topic:

  • DISARM
  • ARM_HOME
  • ARM_AWAY
  • ARM_NIGHT

When the state of the manual alarm changes, Home Assistant will publish one of the following states to the state_topic:

  • ‘disarmed’
  • ‘armed_home’
  • ‘armed_away’
  • ‘armed_night’
  • ‘pending’
  • ‘triggered’
# Example configuration.yaml entry
alarm_control_panel:
  - platform: manual_mqtt
    state_topic: home/alarm
    command_topic: home/alarm/set

Configuration variables:

All configuration variables from the base manual alarm platform are available:

  • name (Optional): The name of the alarm. Default is “HA Alarm”.
  • code (Optional): If defined, specifies a code to enable or disable the alarm in the frontend. This code is not required for MQTT interactions.
  • pending_time (Optional): The time in seconds of the pending time before arming the alarm. Default is 60 seconds.
  • trigger_time (Optional): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds.
  • disarm_after_trigger (Optional): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state.
  • **armed_home armed_away armed_night triggered** (Optional): State specific settings
    • pending_time: State specific pending time override.

Additionally, the following MQTT configuration variables are also available:

  • state_topic (Required): The MQTT topic HA will publish state updates to.
  • command_topic (Required): The MQTT topic HA will subscribe to, to receive commands from a remote device to change the alarm state.
  • qos (Optional): The maximum QoS level for subscribing and publishing to MQTT messages. Default is 0.
  • payload_disarm (Optional): The payload to disarm this Alarm Panel. Default is “DISARM”.
  • payload_arm_home (Optional): The payload to set armed-home mode on this Alarm Panel. Default is “ARM_HOME”.
  • payload_arm_away (Optional): The payload to set armed-away mode on this Alarm Panel. Default is “ARM_AWAY”.
  • payload_arm_night (Optional): The payload to set armed-night mode on this Alarm Panel. Default is “ARM_NIGHT”.

In the config example below, armed_home state will have no pending time and triggered state will have a pending time of 20 seconds whereas armed_away state will have a default pending time of 30 seconds.

# Example configuration.yaml entry
alarm_control_panel:
  - platform: manual_mqtt
    state_topic: home/alarm
    command_topic: home/alarm/set
    pending_time: 30
    armed_home:
      pending_time: 0
    triggered:
      pending_time: 20
    trigger_time: 4 

Examples

Refer to the Manual Alarm Control page for some real life examples of how to use this panel.

MQTT Control

The state of this alarm can be controlled using MQTT. Ensure you’ve configured that before adding this component.

To change the state of the alarm, publish one of the following messages to the command_topic:

  • DISARM
  • ARM_HOME
  • ARM_AWAY
  • ARM_NIGHT

To receive state updates from HA, subscribe to the state_topic. Home Assistant will publish a new message whenever the state changes:

  • disarmed
  • armed_home
  • armed_away
  • armed_night
  • pending
  • triggered