Home Assistant's alarm control panel is a software-defined security layer built on top of the sensors you already own. Rather than paying for a dedicated alarm hub and monthly monitoring subscription, you configure HA's manual alarm integration to watch your door contacts, window sensors, and motion detectors — arming, triggering, and notifying you entirely on your own terms. This guide walks through every step: YAML setup, adding sensors as triggers, building the Lovelace PIN card, automating arm and disarm with presence detection, sending alerts to your phone, adding a siren, and understanding where HA's alarm falls short of a professional system.
What the Home Assistant alarm panel actually is
It is a virtual alarm control panel entity, not a physical device. The alarm_control_panel domain in Home Assistant defines an entity with a set of states — disarmed, arming, armed_home, armed_away, armed_night, pending, and triggered — and exposes services such as alarm_control_panel.alarm_arm_away and alarm_control_panel.alarm_trigger that automations can call. HA does not know about your home's perimeter on its own; you teach it by pointing binary sensor entities (door contacts, window contacts, PIR motion sensors) at the alarm and writing automations that trigger the panel when those sensors open or detect movement.
The result is a genuinely capable DIY system. The chief trade-off — explored at the end of this guide — is that it relies on your HA server staying powered and connected, which a dedicated panel with a battery backup does not.
Setting up the manual alarm control panel (YAML)
The manual platform is the simplest way to get started. Add the following block to your configuration.yaml (or an included file), then restart Home Assistant:
alarm_control_panel:
- platform: manual
name: Home Alarm
unique_id: home_alarm_panel
code: "1234"
code_arm_required: false
arming_time: 30
delay_time: 30
trigger_time: 300
disarmed:
trigger_time: 0
armed_home:
arming_time: 0
delay_time: 0
Key parameters explained:
- code — the PIN required to disarm the alarm. Store it as a secret in
secrets.yamlfor better security:code: !secret alarm_code. - code_arm_required — set to
falseif you want to arm without entering a PIN (useful when automations arm the panel on departure). - arming_time — seconds the panel stays in the arming state before becoming active; gives you time to leave the house. Set to
0for armed_home since you are not leaving. - delay_time — seconds in the pending state after a sensor trip, giving you time to disarm before the alarm triggers. Set to
0for armed_home if you want instant triggering. - trigger_time — how long the alarm stays in the triggered state. 300 seconds (five minutes) is a sensible default.
- disarmed → trigger_time: 0 — prevents sensors tripping the panel when it is disarmed.
After restarting, you will find a new entity such as alarm_control_panel.home_alarm in the Developer Tools → States view. By default only armed_home and armed_away modes are active; add armed_night or armed_vacation to the arming_states list if you need them.
Adding sensors as alarm triggers
Binary sensors — door contacts, window contacts, and motion detectors — are the eyes of your HA alarm. For each sensor you want to guard, create an automation that watches the sensor and calls alarm_control_panel.alarm_trigger when the alarm is armed. A single automation can cover multiple sensors using the for keyword or by listing multiple triggers:
alias: Alarm — trigger on sensor open
trigger:
- platform: state
entity_id:
- binary_sensor.front_door
- binary_sensor.back_door
- binary_sensor.kitchen_window
- binary_sensor.hallway_motion
to: "on"
condition:
- condition: not
conditions:
- condition: state
entity_id: alarm_control_panel.home_alarm
state: disarmed
action:
- service: alarm_control_panel.alarm_trigger
target:
entity_id: alarm_control_panel.home_alarm
The condition blocks the trigger when the alarm is disarmed, so opening your front door while at home does not accidentally set off the siren. If you want motion sensors to be active only in armed_away mode (but not armed_home, where occupants would trip them), add a second condition: state: armed_away.
Pair this with the best smart door sensors for UK homes — Zigbee and Z-Wave contacts integrate directly into HA and report instantly without a cloud relay. See our Home Assistant automations guide for deeper coverage of trigger and condition syntax.
Creating the alarm Lovelace card with a PIN pad
Home Assistant ships a built-in alarm panel card that renders a number pad for entering your PIN and buttons for each arm mode. Add it to any dashboard via the card picker (search for "Alarm Panel") or paste this YAML into the card editor:
type: alarm-panel
name: House Alarm
entity: alarm_control_panel.home_alarm
states:
- arm_home
- arm_away
- arm_night
The card automatically shows a numeric keypad when the entity's code format is a PIN, or switches to a text field if you have set an alphanumeric code. Tapping Arm Away starts the arming countdown; the card colour changes through arming (amber), armed (red), and triggered (pulsing red) states.
For a more feature-rich experience, the community Alarmo custom component (available via HACS) replaces the manual YAML integration with a full UI-based alarm manager. Alarmo supports per-user PINs, sensor bypass, and its own card — a good option if you prefer managing everything through the HA interface rather than YAML files.
Automating arm and disarm with presence detection
The most reliable way to arm your alarm when you leave is to tie it to presence detection rather than a manual button press you might forget. If you have already set up device trackers — using the Home Assistant Companion app, Unifi presence, or a Bluetooth tracker — you can arm the panel automatically when everyone leaves:
alias: Alarm — arm away when home empty
trigger:
- platform: state
entity_id: group.all_residents
to: not_home
for:
minutes: 2
action:
- service: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.home_alarm
The two-minute for delay prevents the alarm arming during the brief "not home" blip that some trackers report as you move through the house. For the disarm side, trigger alarm_control_panel.alarm_disarm when someone arrives home — but always include the code parameter in the service call to prevent an automation from disarming the alarm without authentication. See our presence detection guide for setting up reliable device trackers.
Alert notifications when the alarm triggers
A silent alarm is not much of a deterrent. Hook up at least one notification channel so you know immediately if the alarm fires while you are away. The three most popular approaches for UK users are:
Home Assistant Companion app push notifications
The HA Companion app for iOS and Android registers a notifier on each device. Create an automation triggered by the alarm panel entering the triggered state and call notify.mobile_app_your_phone:
alias: Alarm — push notification on trigger
trigger:
- platform: state
entity_id: alarm_control_panel.home_alarm
to: triggered
action:
- service: notify.mobile_app_sepehrs_iphone
data:
title: "Alarm Triggered!"
message: "Your home alarm has been triggered. Check the cameras."
data:
push:
sound: default
interruption-level: critical
Setting interruption-level: critical on iOS bypasses Do Not Disturb — essential for a security alert.
Telegram bot notifications
Home Assistant's Telegram integration lets you send rich messages with inline keyboards. Once your bot token and chat ID are configured, the service call is notify.telegram. You can include a photo from a linked camera in the same notification, giving you visual confirmation alongside the alert.
Email and SMS
For SMS, the SMTP integration can send email-to-SMS to your UK carrier's gateway (e.g. 07700900000@txt.o2.co.uk) or you can use a Twilio add-on. Email via SMTP is the simplest option and requires no additional accounts.
Whichever channel you choose, also add a notification for the arming state (so you know the alarm is counting down) and the disarmed state (confirmation the alarm was properly turned off). See our Home Assistant notifications guide for full setup instructions across all channels.
Adding a siren
An audible siren turns a silent software alarm into a genuine deterrent. Several options work well with Home Assistant in the UK:
- Zigbee sirens — devices such as the frient Smart Siren (which ships a UK version) pair with Zigbee2MQTT or ZHA and appear as
sirenentities in HA. Trigger them with asiren.turn_onservice call in your triggered automation. - Z-Wave sirens — Z-Wave's encrypted mesh makes it the stronger choice for security; a Z-Wave siren paired via Z-Wave JS is harder to jam than Zigbee.
- Smart plugs with a standalone siren — a cheap 12V wired siren on a smart plug is effective if you do not need Zigbee/Z-Wave; toggle the plug via
switch.turn_on.
Add the siren to your triggered automation alongside the notification, and add siren.turn_off to your disarm automation so the siren stops when you enter your PIN.
Integrating commercial alarm systems: Ring Alarm Pro
The official Ring integration in Home Assistant supports Ring cameras, doorbells, chimes, and intercoms — but it does not currently support Ring Alarm Pro panel control (arm/disarm). The Ring cloud API does not expose alarm system endpoints to third-party integrations at the time of writing, so you cannot arm or disarm a Ring Alarm Pro directly from HA's alarm panel entity.
What you can do is use Ring devices alongside HA's software alarm: Ring door sensors can report their state to HA via the Ring integration, and HA can send Ring Chime notifications. For a fully HA-controlled alarm, you are better served by native Zigbee or Z-Wave sensors rather than Ring's proprietary hardware. For more on what Ring Alarm Pro does well as a standalone system, see our Ring Alarm Pro review.
Limitations versus a dedicated alarm system
The HA alarm panel is powerful for a DIY setup, but it has real gaps compared to a professional-grade system. Understand these before relying on it as your primary security layer:
- No battery backup by default. If your Raspberry Pi or NUC loses power during a break-in, the alarm stops functioning. A UPS (uninterruptible power supply) mitigates this but adds cost and complexity.
- No professional monitoring. There is no 24/7 monitoring centre that will call the police if your alarm triggers while you are out of mobile range. The HA alarm is self-monitored only.
- Internet dependency for remote alerts. Push notifications and Telegram messages require your broadband to be working. If an intruder cuts the line, you may not receive alerts.
- Single point of failure. Your entire smart home — lights, heating, alarm — runs on one HA instance. A dedicated alarm panel has its own processor and does not share failure modes with your automation hub.
- No tamper detection on the panel itself. A physical alarm control panel has tamper switches; your HA server does not.
For most UK households using HA's alarm alongside smart home security best practices — visible cameras, good locks, and reactive lighting — the software alarm provides a meaningful extra layer. For high-risk properties or those requiring insurance compliance, a Secured by Design-certified dedicated system is the appropriate choice.
Quick-start checklist
To summarise the full setup process:
- Add the
alarm_control_panel: platform: manualblock toconfiguration.yamland restart HA. - Create an automation to trigger the panel when door/window/motion sensors activate while the alarm is armed.
- Add the alarm panel card to your Lovelace dashboard and set a secure PIN.
- Create arm-away and disarm automations linked to your presence detection group.
- Add at least one notification automation for the triggered state (Companion app, Telegram, or SMTP).
- Pair a Zigbee or Z-Wave siren and add it to your triggered and disarm automations.
- Put your HA server on a UPS to maintain operation during power cuts.




