Home Assistant projects
All projects

Alarm Card

Lovelace card · Security & presence
v1.9.1 · Nov 13, 2026 HA 2024.8.0+ Marketplace

Arm and disarm an alarm: state, delays, code pad, open sensors and who changed it last.

Works with any alarm control panel (Alarmo, Manual, Verisure, Ajax…). The arm modes come from the panel's features, and the shield pulses during delays and flashes when the alarm goes off.

Highlights

  • One button per supported arm mode
  • Exit and entry delay countdown with a progress bar
  • Code pad when the panel needs a code
  • Open sensors and the last person who changed the state
  • Activity of the latest arm, disarm and trigger changes, with who made them
  • Alarmo refusing to arm lists the open sensors, with Arm anyway
  • Single-row mini card
  • Cameras of your choice, their snapshots shown while the alarm is triggered or counting down
  • Buttons section with switches, lights, scripts and scenes of your choice, such as the plugs of the cameras
  • Display names for the sensors, cameras and buttons, set in the visual editor

Cards

alarm-cardalarm-mini-card
type: custom:alarm-card

Install

  1. 1Open the repository in the Marketplace with the Add to Marketplace button above, or addgithub.com/juju35/ha-alarm-card as a custom repository (category Dashboard).
  2. 2Download it from the Marketplace.
  3. 3Reload the browser and add the card from the dashboard editor.

Documentation

From the README

Features

Features

  • Two cards: a full Alarm Card and a compact, single-row Alarm Mini Card (state, countdown and one-tap buttons)
  • Detail button at the top right of the mini card: it switches to the full card and back; a click anywhere outside the card brings the compact view back. When the card is too narrow for all its buttons (every arm mode at the default 6 columns), they move to a second row under the name
  • State shield colored by state and mode (disarmed, home, away, night, vacation, custom), pulsing during the exit / entry delay, flashing when the alarm goes off
  • One button per supported arm mode, and Disarm (Cancel during the exit delay)
  • Exit and entry delay countdown with a progress bar (Alarmo's delay, or the expiration attribute)
  • Code pad when the panel needs a code: digits for a number code (the keyboard's digits, Backspace and Enter work too), a password field otherwise
  • Sensors of your choice (doors, windows, motion, smoke, leak) with their state; arming with a sensor open asks first ("Kitchen window: open. Arm away anyway?") and, with Alarmo, forces the arming
  • Cameras of your choice: their latest snapshots show up while the alarm is triggered or counting down to it (or always), a tap opens the live view
  • Buttons of your choice: switches, lights and the like toggled with a tap (the smart plugs of the cameras, say), buttons, scripts and scenes run
  • Display names for the sensors, cameras and buttons, set in the visual editor or in YAML
  • Open and bypassed sensors reported by Alarmo, last trigger, who changed the state and since when
  • Alarmo refusing to arm over open sensors: the card lists them in a popup and offers Arm anyway (forced arming)
  • Optional activity section: the latest arm, disarm and trigger changes from the logbook, with when and who
  • Optional confirmation before disarming
  • Collapsible sensors section
  • Click the state or a sensor to open its more-info dialog
  • Visual editor in the dashboard UI for both cards (no YAML needed)
  • Light and dark mode, 22 languages (see Translations), reduced-motion aware
  • Single file, no external dependency

Supported integrations

Supported integrations

The cards work with any alarm control panel: the arm modes come from the panel's supported features and the keypad from its code format.

Integration What the cards show
Alarmo (Marketplace, recommended) Everything: state, arm modes, keypad, exit and entry delays, open and bypassed sensors, last trigger, who changed the state, forced arming with a sensor open, "Arm anyway" when Alarmo refuses to arm
Manual (built in), Verisure, Ajax and any other panel State, arm modes, keypad, delays (expiration attribute), the sensors you list

Prerequisites

Prerequisites

Home Assistant 2024.8 or later, with an alarm control panel (Alarmo recommended).

Configuration

Configuration

Visual editor#

Edit a dashboard, click Add card and search for Alarm Card or Alarm Mini Card. The first alarm panel is preselected; pick the arm modes to show, the sensors to display and the options. Options left at their default are kept out of the generated YAML.

Minimal#

type: custom:alarm-card
type: custom:alarm-mini-card

Full options#

type: custom:alarm-card
entity: alarm_control_panel.alarmo
title: Alarm
modes:
  - away
  - home
sensors:
  - binary_sensor.front_door
  - entity: binary_sensor.kitchen_window
    name: Kitchen
  - binary_sensor.hallway_motion
buttons:
  - switch.camera_plugs
  - entity: script.lights_off
    name: All lights off
cameras:
  - entity: camera.garden
    name: Garden
show_logo: true
show_controls: true
show_sensors: true
show_info: true
confirm_disarm: true
collapsed: false
show_activity: true
activity_count: 5
activity_hours: 24
language: fr
type: custom:alarm-mini-card
entity: alarm_control_panel.alarmo
sensors:
  - binary_sensor.front_door
  - binary_sensor.kitchen_window
confirm_disarm: true
zoom: true

Options reference#

Option Card Default Description
entity both First alarm panel alarm_control_panel entity
title both Panel name Card title
show_title both true Show the title in the header (e.g. false under a section heading of your own)
show_subtitle both true Show the subtitle under the title
modes both All supported Arm modes to show, among home, away, night, vacation, custom_bypass (arm_ prefix optional); modes the panel does not support are ignored
sensors both — Binary sensors to display and to check before arming: entity ids, or { entity, name }
buttons both — Buttons section: switch, light, fan, input_boolean and siren entities show their state and a tap on their icon toggles them; button, input_button, script and scene entities run. A tap on the name opens the entity. Entity ids, or { entity, name }
cameras both — Camera entities whose snapshots show in a Cameras section, refreshed with Home Assistant's camera pictures; a tap opens the camera. Entity ids, or { entity, name }
cameras_on_alarm both true Show the cameras only while the alarm is triggered or its entry delay runs (pending); false: always
show_logo both true Show the card logo
show_controls both true Arm / disarm buttons
show_info both true Who changed the state and the last trigger (Alarmo)
confirm_disarm both true without a code, false with one Ask for confirmation before disarming. On by default when the panel needs no code, so one tap cannot disarm it; false turns it off. With a code, the code entry already protects disarming; true asks first as well. Cancelling an exit delay never asks
show_sensors both true Sensors section (on the mini card: in its zoomed view)
collapsed both false Fold the sensors section by default, click its title to unfold it (on the mini card: in its zoomed view)
show_activity both false Activity section: the panel's latest arm, disarm and trigger changes from the logbook, with when (the exact time in the tooltip) and who (the person linked to the user, the user, or the automation) (on the mini card: in its zoomed view)
activity_count both 5 Number of changes in the activity section (1 to 50)
activity_hours both 24 Period of the activity section, in hours (1 to 168, i.e. 7 days)
zoom mini true Detail button at the top right of the mini card: it shows the full card's content (with the same options) and switches back; false removes it
language both Auto Force language: en, fr, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el (auto-detects from HA settings)

How it works

How it works

  • Modes: the buttons follow the panel's supported_features (home, away, night, vacation, custom bypass), narrowed by modes.
  • Code: when the panel has a code_format, Disarm opens the code pad, and so do the arm buttons unless code_arm_required is false. The code is sent with the standard alarm_control_panel.alarm_* services; a wrong code is reported by Home Assistant.
  • Open sensors: before arming, the card checks the configured sensors. When one is open it asks for confirmation; once confirmed, an Alarmo panel is armed with alarmo.arm and force: true (the standard service would be refused), other panels with the standard service.
  • Alarmo refusing to arm: Alarmo checks its own sensors and, when one is open, does not arm and fires the alarmo_failed_to_arm event. The card listens to it for an Alarmo panel and shows the open sensors in a popup at the top of the card; Arm anyway arms again with alarmo.arm and force: true, with the code just typed (else the code pad asks for it). The popup shows on the card that sent the arming, or, when the event names the panel, to the user who tried to arm. Home Assistant only lets administrators subscribe to this event: for other users the card shows no popup.
  • Activity: with show_activity, the card reads the panel's changes over activity_hours from the logbook (logbook/get_events) and keeps the arm, disarm and trigger ones. Who made a change comes from its context: the person linked to that user, the user's name (administrators only, from Home Assistant's user list), or the automation or script that did it. The list is read again when the panel changes state and every 10 minutes.
  • Unavailable sensors: Alarmo also reports sensors that are unavailable, or that no longer exist under the entity_id it was set up with, among its open sensors (they block arming). The card lists them on a separate "Unavailable" line; if an entity_id is shown there, update that sensor in Alarmo's settings.
  • Delays: during arming (exit delay) and pending (entry delay), the card counts down from Alarmo's delay attribute and the last state change, or from an expiration attribute.
  • Updates: the card only redraws when the panel, its sensors or the countdown change, and patches the page in place (no flicker, the code field keeps what you typed).

Support

Support

If you find this project useful, you can support its development:

Buy Me a Coffee

1.9.1Nov 13, 2026Latest

Fixes

  • Folding back on a tap elsewhere now works on iOS (Safari and the companion app): a tap on something that is not clickable sent no click to the page, so the unfolded sections, the confirmation popup, the code pad and the detailed view of the mini card stayed open. The press and the release are caught instead; a press in the card released outside of it and a scroll do not close anything.
  • Leaving the card (another dashboard view, a conditional card hidden) brings it back in its default state: sections folded as configured, popup and pad closed (the code typed is cleared), mini card compact.

1.9.0Nov 12, 2026

Features

  • show_title and show_subtitle options (also in the visual editor) hide the header's title and its subtitle, separately, for a card placed under a section heading of its own (asked in juju35/ha-vehicle-card#72).

1.8.0Nov 11, 2026

Features

  • Buttons: buttons adds a Buttons section with switches, lights, fans, input booleans and sirens (their state shown, a tap on the icon toggles them) and buttons, scripts and scenes (a tap runs them); a tap on the name opens the entity. For example the smart plugs of the cameras, to turn them on while at home (#52).
  • Display names in the visual editor: a Display names fold lists the sensors, cameras and buttons picked, each with its name, empty for the entity's own; saved as { entity, name } (#53). Cameras take a name too.

1.7.1Nov 9, 2026

Maintenance

  • No code change: released again to check the installation from the Marketplace.

1.7.0Nov 9, 2026

Features

  • Cameras: cameras lists camera entities whose latest snapshots show in a Cameras section while the alarm is triggered or its entry delay runs (cameras_on_alarm: false shows them always); a tap opens the camera's live view. Picked in the visual editor.

1.6.1Nov 9, 2026

Fixes

  • Translations: the cards are defined once the page's language file has arrived (at most 1.5 s; Home Assistant builds a card when its element gets defined), so the first render is already translated instead of English then redrawn; until a language file is in, a missing text reads the English one wherever the card has no fallback of its own.