🚨 Alarm System with Keypad support (Z2M / ZHA / Dashboard) [KEPZB-110]

GitHub Code Release

This blueprint provides a comprehensive, flexible alarm system solution that works natively with Home Assistant. No custom components required. Perfect for home security, office monitoring, or any security application, it delivers a responsive and user-friendly experience.

:sparkles: Key Features

  • Multiple Keypad Options: Choose Z2M, ZHA, Dashboard, or any combination
    • Physical Zigbee Keypads: Sync states with Z2M or ZHA (tested with frient KEPZB-110)
    • Dashboard Keypad: Custom on-screen numeric keypad for wall tablets/panels or Companion App
  • Multiple User Codes: Unlimited user codes with support for PIN codes (digits) and RFID tags (hexadecimal: 0-9/A-F)
  • Two-Tier Code System: Blueprint validates user codes, then sends master code to alarm panel - your alarm panel doesn’t need to support multiple codes
  • Smart Automation: Auto-arm when leaving, auto-disarm on arrival, flexible time-based schedules (weekday/weekend/custom)
  • Rich Notifications: Text notifications with camera feeds (iOS live/Android snapshot), TTS announcements, critical alerts
  • Mode-Specific Configuration: Different sensors and actions for Away/Home/Night/Arming/Pending/Disarmed/Triggered/Emergency modes
  • Emergency Mode: Silent alarm via keypad SOS button (long-press 5+ seconds) (physical keypads only)

:clipboard: Requirements

  • Home Assistant: Version 2024.8.0 or later
  • Manual Alarm Control Panel: Required (setup instructions in blueprint)
  • Text Helper Entities: For storing codes (setup instructions in blueprint)
  • Physical Zigbee Keypad: Connected via Z2M or ZHA (optional)
  • Dashboard Helper Entities: If using Dashboard keypad (optional)

:warning: Known Issues

  • ZHA Limitations: ZHA doesn’t support all features available in Z2M, as some alarm states are missing from the ZHA implementation. While arming, disarming, and state synchronization work correctly with this blueprint, the keypad’s beeping patterns and LED status indicators may not display accurately.
  • ZHA LED Bug: ZHA currently has a bug affecting LED indicators on the keypad—they don’t accurately reflect the actual alarm state. An open issue is tracking this problem.

:rocket: Getting Started

All setup instructions, YAML examples, and configuration details are self-contained within the blueprint itself. After importing, you’ll find:

  • Recommended Setup Using Packages: Complete package configuration with alarm panel, helpers, and template sensors
  • Dashboard Scripts: YAML for all required scripts if using the dashboard keypad
  • Dashboard Lovelace YAML: Complete card configuration for the on-screen keypad
  • Version History: Full changelog and breaking changes
  • Detailed Input Descriptions: Every setting is thoroughly documented with examples

The blueprint will guide you through creating the required entities and configuring each feature.


Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

3 Likes

I just released a new update, check the blueprint itself for details after updating:

  • 2025.12.9: Fix schedule day validation and refactor descriptions

Another update, which make this Blueprint fully usable without any physical Keypad.

  • 2025.12.10 Add dashboard keypad support with script-based implementation

    • Add dashboard keypad scripts for on-screen numeric input
    • Add blueprint documentation with script-based keypad setup
    • Organize dashboard config into collapsed “Setup Instructions” section
    • User name display shows for 5 seconds then clears
    • Add “Invalid Code” feedback for failed authentication attempts

It now has all the features I wanted to have myself. If there is anything that you are missing or want to change, let me know.

It isn’t working for me. I can’t get it to work. I set up all of the functions with the blueprint and when i use the dashboard that I made for it, nothing. The code process works but I doesn’t call the alarm system to arm or anything. Is there a script that I am missing?

In the Blueprint description there are several scripts shown under Dashboard Keypad - Setup Instructions, you can easily copy/paste this into the alarm.yaml file. Each button press has it’s own script, which is why it is easier to do it through YAML.

Also don’t forget to enable the Keypad integration with type Dashboard in the selections at the start of the Blueprint.

I did that and I got the numbers to work. It also matches your blueprint. But still no alarming functionality…

Ok, so you can see the dots when pressing the buttons in your Dashboard?

Can you share the YAML from the Blueprint settings? You can do this by going to the Automation section of your HA: /config/automation/dashboard and clicking on the Automation you made from my Blueprint. Click on the three dots in the top right and select Edit in YAML and share the YAML here.

If there are sensitive things in there you don’t want to share, you can mask the names.

description: ""
alias: Alarm System with Keypad support (Z2M / ZHA / Dashboard) (1)
use_blueprint:
  path: danielpetrovic/alarm-system-with-keypad.yaml
  input:
    alarm_control_panel_main: alarm_control_panel.alarm
    integration_type:
      - dashboard
    alarm_code_user:
      - input_text.alarm_code_user_1
      - input_text.alarm_code_user_2
    alarm_code_user_name: input_text.alarm_code_user_name
    alarm_dashboard_code: input_text.alarm_dashboard_code
    alarm_dashboard_action: input_text.alarm_dashboard_action
    alarm_presence_sensor: binary_sensor.home_members
    alarm_auto_arm_away: true
    alarm_auto_disarm_arriving: true
    alarm_schedule_weekdays_enabled: false
    alarm_schedule_weekends_enabled: false
    alarm_notifications_target:
      - mobile_app
      - mobile_app
      - mobile_app
    alarm_notifications_critical_armed_away: true
    alarm_sensor_away:
      - binary_sensor.sensor
      - binary_sensor.sensor
      - binary_sensor.sensor
    alarm_notifications_critical_armed_home: true
    alarm_notifications_critical_armed_night: true
    alarm_notifications_critical_arming: true
    alarm_notifications_critical_pending: true
    alarm_notifications_critical_disarmed: true
    alarm_default_user_name: Home Assistant

I just checked with your YAML in my Home Assistant environment, with the same entities/names, apart from the three you obviously masked. And it works as expected.

Did you create the helpers with the correct filters and do the user_codes only contain digits between 4-16 in length?

alias: Alarm Test
description: ""
use_blueprint:
  path: danielpetrovic/alarm-system-with-keypad.yaml
  input:
    alarm_control_panel_main: alarm_control_panel.alarm
    integration_type:
      - dashboard
    alarm_code_user:
      - input_text.alarm_code_user_1
      - input_text.alarm_code_user_2
    alarm_code_user_name: input_text.alarm_code_user_name
    alarm_dashboard_code: input_text.alarm_dashboard_code
    alarm_dashboard_action: input_text.alarm_dashboard_action
    alarm_presence_sensor: binary_sensor.presence
    alarm_auto_arm_away: true
    alarm_auto_disarm_arriving: true
    alarm_schedule_weekdays_enabled: false
    alarm_schedule_weekends_enabled: false
    alarm_notifications_target:
      - 123456790234sjkjdsflek2342 # randomized ID of mobile_app
    alarm_notifications_critical_armed_away: true
    alarm_sensor_away:
      - binary_sensor.entree_deursensor
    alarm_notifications_critical_armed_home: true
    alarm_notifications_critical_armed_night: true
    alarm_notifications_critical_arming: true
    alarm_notifications_critical_pending: true
    alarm_notifications_critical_disarmed: true
    alarm_default_user_name: Home Assistant

There are the helpers that I have currently:

And here are the scripts that it created:

Wait, never mind. I fixed something by just redoing the blueprint like 3 times lol. It seems to be fully working now!

Good to hear it was fixed, not sure what went wrong though :smiley: .

If you change the names of the Alarm Code User helpers in the YAML to be Alarm Code yourname , instead of Alarm Code User 1 (yourname) it will filter out just yourname for notifications / announcements.

Got it! :+1: Thanks!

I just released a new update. Please reimport your blueprint, as this was quite essential…

  • 2025.12.11 Fix invalid trigger enabled templates causing sensor triggers to fail
1 Like

Hi, first of all thank you for this blueprint, I’m really happy with it and it works great overall.

I’m only running into one issue: I do not receive any notification when the alarm goes into the triggered state. Notifications for arming, pending, armed and disarmed all work correctly. When the alarm is triggered, the configured triggered script is executed, but no triggered notification is sent.

Yeah, I noticed that, too!

(Sorry, I’m watching the topic for new updates lol.)

Is this for the Notification message under the group: Mode - Triggered ?
So I can check the code in that specific part.

Yes, that’s correct.
It is specifically the notification message under “Mode – Triggered” that is not sent.
The triggered script in that same section does run, but the notification does not.