Zigbee2MQTT - Sync Keypad and Alarm Control Panel States

No I understand - can you just confirm what you did to pair?

It was a few weeks ago - I can’t remember exactly.

For some reason, and I have no idea why, I’ve just reset, taken batteries out, left for 2 minutes, removed from Z2M, and then repaired and its all working. Not sure which of those steps were needed or not needed, but between them, they worked

Hello !
Great stuff, really working well with my Xfinity XHK1-EU

Just one thing is missing: the support for arm_night action.

Here is what I get from zigbee2mqtt. Does it help?

MQTT publish: topic 'zigbee2mqtt/friendlyname', payload '{"action":"arm_night_zones","action_code":"XXXX","action_transaction":1,"action_zone":23,"battery":100,"battery_low":false,"contact":true,"linkquality":255,"occupancy":true,"presence":null,"tamper":false,"temperature":22,"voltage":6300}'

Don’t hesitate if I can help one way or another.


Do I understand correctly that the keypad you mentioned only supports arm_night_zones and not arm_day_zones?

Then it is exactly the other way around, as with the Linkind keypad.

If you can tell me which of the five buttons fires which action, I may be able to add support for the device to the blueprint.



Thank you very much!

Top left icon: arm_day_zones
Top middle icon: arm_all_zones
Top right icon: arm_night_zones

Icons A&B : useless

How do you perform the disarm action if none of the buttons are used for it?

Disarming already works fine with your blueprint.

Basically, if I press four digits and nothing else, it sends a disarm mqtt message with the code as argument.


MQTT publish: topic 'zigbee2mqtt/friendlyname', payload '{"action":"disarm","action_code":"XXXX","action_transaction":59,"action_zone":23,"battery":100,"battery_low":false,"contact":true,"linkquality":255,"occupancy":true,"presence":null,"tamper":false,"temperature":20,"voltage":6300}'

Okay. I will see if I can add it. I might not be able to do so until the beginning of the new year.

1 Like

Hi @AndrejDelany! First of all, thanks a lot for your effort in making this available. I have tried this and got it to work, however the blueprint does not match my use case 100%. Would it be possible to share the yaml of the original automation? The Blueprint does not reveal how it actually works to my untrained eye, but I want to use this as a basis to make my own automations :wink:
Regards, Patrick

Sorry, I don’t have it anymore. Was no longer needed by me after creating the blueprint.

By the way: Zigbee2MQTT causes problems with security keypads in the current 1.22.2-1 version. Will probably be fixed in the next release. Until then you should stay on an older version.

Hi @AndrejDelany. This is some great work, thank you. I’m thinking about buying a Linkind security set for my new home in a couple of months. It’s cheap and looks good…

So, I’ve already been testing Alarmo with different users and pincodes without keypad. As read here, using this keypad offcourse you don’t use the Siren Hub anymore. Did I read it in a right way you can use different users with pincodes with this keypanel and the blueprint?


I do not use the keypad with Alarmo and therefore cannot say anything about the user management of it and compatibility with the Blueprint.

The Blueprint uses the following service calls on the control panel. You can use it yourself to test whether it works for you.

Thank you, quick response.
I will try I guess. Alarmo is using a HA alarm panel, so that should work.
I’ll let you know (in a couple of weeks…)

This is great, thank you @AndrejDelany ! I have been using various scripts to sync a Xfinity keypad (Universal Electronics Inc XHK1-UE control via MQTT | Zigbee2MQTT) but recent changes to zigbee2mqtt have broken the functionality. Tonight I installed the development (“edge”) version of z2m (in advance of a z2m new release to be deployed on 1st February) and deployed your blueprint for both the Xfinify keypad and a Hive Keypad (referred to above in your first post). The syncing appears to be working well for both keypads (I’ll do so further testing tomorrow, when the kids aren’t asleep).

@AndrejDelany I may have spoken too soon. The Xfinity keypad seems to work well but if, for example, I arm the alarm via the Hive keypad and then seek to disarm the alarm via the same keypad 10 seconds later, the Hive keypad does not accept further codes and I have to quickly disarm through the HA app on my mobile instead - I suspect the Hive keypad is not receiving the confirmation messages from HA to understand the current alarm state and so is ceasing to function properly.

Seems to be a specific problem with the hive keypad, as the other one is working for you. As I don’t own a hive keypad, its nearly impossible for me to debug :-/

APologies for showing my potential ignorance - I note that when the keypad send the mqtt message to arm the alarm, the server must send back a confirmation code (presumably also confirming the transaction code - I can’t see that in the log below). Does the blueprint do that?


" The automation server must validate the request and send a notification to the keypad, confirming or denying the request.

Do so by sending the following payload to zigbee2mqtt/FRIENDLY_NAME/set:"

Here’san extract from the z2m log showing the interaciton between the Hive Keypad and the server:

MQTT publish: topic 'zigbee2mqtt/HiveKeypad', payload '{"action":"arm_all_zones","action_code":"[my 4 digit alarm code]","action_transaction":66,"action_zone":23,"battery":42,"battery_low":false,"contact":true,"linkquality":60,"occupancy":true,"tamper":false,"voltage":2900}'

MQTT publish: topic 'zigbee2mqtt/HiveKeypad', payload '{"action":"","action_code":null,"action_transaction":null,"action_zone":null,"battery":42,"battery_low":false,"contact":true,"linkquality":60,"occupancy":true,"tamper":false,"voltage":2900}'

MQTT publish: topic 'zigbee2mqtt/HiveKeypad/action', payload 'arm_all_zones'

Yes, it does publish this to the /set topic, if you configured the MQTT Set Topic correctly to

Thanks for confirming - I double checked this morning (conscious that could have been the issue). I’m going to triple check now!