🚨 Alarm System with ZHA Keypad support (KEPZB-110)

Not sure if others are experiencing issues with the Keypad starting with ZHA in HA 2025.3.0. I’ve been experiencing that the Keypad keeps changing modes in the Keypad internally, even though the state in HA doesn’t change.

Whenever I send 1 command it keeps switching between an armed/disarmed state. I can fix it by fully removing it from ZHA and repairing it. But the problem comes back from time to time. Sometimes it kept going until I removed the batteries…

So I’ve decided to move the Keypad to Z2M on a separate HA Connect ZBT-1 and created a new blueprint based on this one to be compatible with Z2M.

:orange_book: Z2M version

Big advantage of the Z2M implementation is that it supports all states, so you also get the pending and arming states with proper green/red and beeping states. This is sadly not implemented in ZHA itself.

1 Like

I have released a new version today with added functionality! Works great for me with my USB connected speaker to my Home Assistant OS device. You could use any Media Player available to your Home Assistant.

New update today, to comply with the changes in HA 2025.4.0 .

wanted to quickly thank you for the conversion to Z2M :smile:
I moved a bunch of stuff to Z2M as an experiment and after looking around I stumbled back to this post with the Z2M conversion,
Just like before, it works like a charm. :smiley:

1 Like

hello Daniel im new to home assistant and im trying to program the frient keypad with alarmo everything is setup but the keypad as i need to write code would you be able to remote connect to my server and as i dont know how the blueprints work thx

Hello,

No, I cannot do this. And you should not ask random people online to do this for you… You should also not put your email in a post like that, as it might get scraped and you’ll get spammed…

I can try to explain if you have a specific question. Everything is explained in the start post and inside the blueprint itself as well.

Keep in mind my Blueprint can completely replace Alarmo, as the logic for the Alarm itself is done within this Blueprint. You might want to use another Blueprint that is just made to sync the Alarmo state with the Keypad. There are several available on this forum.

hello thank you for the reply I got it working but it it only allows one automation at a time not both enabled here is my yaml on the automation arm and disarm thank you for your help again
disarm
alias: Disarm Alarmo from Keypad
description: Disarms Alarmo when keypad event is detected
triggers:

  • event_type: zha_event
    event_data:
    command: 00:15:bc:00:43:00:64:88:44:0x0501_zha_armed_state_changed
    trigger: event
    conditions:
    actions:
  • target:
    entity_id: alarm_control_panel.alarmo
    data:
    code: “2041”
    action: alarmo.disarm
    mode: single

arm
alias: Arm Alarmo from Keypad
description: Arms Alarmo when keypad event is detected
triggers:

  • event_type: zha_event
    event_data:
    command: 00:15:bc:00:43:00:64:88:44:0x0501_zha_armed_state_changed
    trigger: event
    conditions:
    actions:
  • target:
    entity_id: alarm_control_panel.alarmo
    data:
    mode: away
    code: “2041”
    action: alarmo.arm
    mode: single

in the conditions line its square braquets sorry made with chatgpt help can you help me find a working blueprint plz been trying for over 24 hours have all my sensors set up sirens etc just need the pad to work

You could try this one: 📢 [Alarm] Keypad Frient (KEPZB-110) for Alarmo or Other Systems with ZHA

But it can already do more than you need. Only ones I can find that just sync Alarmo with the Keypad only work when paired with Z2M, not ZHA.

This guy has made some instruction video’s and guides to set it up yourself, which is where I started with my ideas for the blueprint:

I got it working with this yaml

alias: Frient Keypad - Control Alarmo
description: Arm/disarm Alarmo based on Frient keypad input new new
triggers:

  • event_type: zha_event
    event_data:
    command: arm
    device_ieee: 00:15:bc:00:43:00:64:88
    trigger: event
    conditions:
    actions:
  • choose:
    • conditions:
      • condition: template
        value_template: “{{ trigger.event.data.args.arm_mode == 0 }}”
        sequence:
      • data:
        entity_id: alarm_control_panel.alarmo
        code: “{{ trigger.event.data.args.code }}”
        action: alarmo.disarm
    • conditions:
      • condition: template
        value_template: “{{ trigger.event.data.args.arm_mode == 3 }}”
        sequence:
      • data:
        entity_id: alarm_control_panel.alarmo
        mode: away
        code: “{{ trigger.event.data.args.code }}”
        action: alarmo.arm
        default:
        mode: queued