Zigbee2MQTT - Control Alarmo via keypad

I still can’t get the second keypad working, and I am at an abject loss as to why. The first one works great, the second one is detected, but not linked to alarmo. I have used the blueprints, but still no bueno.

Here are my two automations, the first one works great:

alias: Alarmo Keypad Sync
description: ""
use_blueprint:
  path: neliss/zigbee2mqtt-control-alarmo-via-keypad.yaml
  input:
    state_topic: zigbee2mqtt/Keypad_Alarm_Front_Door
    entity: alarm_control_panel.alarmo
    set_topic: zigbee2mqtt/Keypad_Alarm_Front_Door/set

And this one does not work:

alias: Alarmo Garage Keypad Alarm Sync
description: ""
use_blueprint:
  path: neliss/zigbee2mqtt-control-alarmo-via-keypad.yaml
  input:
    state_topic: zigbee2mqtt/Keypad_Alarm_Garage
    entity: alarm_control_panel.alarmo
    set_topic: zigbee2mqtt/Keypad_Alarm_Garage/set

Fixed I believe, something was amiss with the garage keypad, so I deleted it from the zigbee2mqtt integration, restarted HA, and re-added it. It seems to work now.

I have a Frient keyboard that I connected in Zigbee2MQTT. I want to use it with alarmo.

I saw this template but I was wondering if this is really needed since there seem to be a native setting in alarmo.

In the alarmo settings under general there is a menu Enable MQTT (Allow the alarm panel to be controlled through MQTT.)
That is actually what I want.
With the button MQTT configuration there are several settings where payloads can be defined for different states and commands.

I don’t really have a lot of experience with mqtt yet. So the question is if these settings are replacing the need for a blueprint automation here and if anyone has gotten this to work with these settings. Any help is greatly appreciated

Hi, Thanks for this great blueprint. So easy to use. But can somebody give me a hand with a little automation for only the SOS button on the Frient keypad? My Z2M topic is zigbee2mqtt/frient_keypad I can see in de MQTT explorer that the button is pushing ‘emergency’ but how can I make it so that a action is triggered?
Thank you

I have just installed this BluePrint after I got a Frient Keyboard. Works perfectly when I key in the personally code and arm or disarm Alarmo.
What a nice work by @neliss and @AndrejDelany - thank you very much :pray:
I have NFC tag’s setup to my Alarmo as well. The NFC’s work when I scan on my Adonno, but when I scan the tags on my Frient Keyboard, then nothing happens.
Anyone who can point in any direction for how I get this to work?
Thank you very much in advance.

Actually the blueprint expects “panic” to be pushed there. Please try to replace panic with emergency in the blueprint at this point:
{{ trigger.payload_json.action == "panic" }}

(This answer is valid for my own version of this blueprint - please check the link in the first post. Don’t know how to handle this with alarmo).

1 Like

Further debugging is necessary here - maybe you can check, what information is send via mqtt if a tag is placed on the keypad. Maybe there is a tag id that could be set as password in the automation.

2 Likes

Link to purchase on Amazon.de - Frient Intelligent Keypad | Smart RFID Reader | Secure Access Control | Keyless Entry | Zigbee | Works with Homey

So, I am using the Develco KEYZB-110 and have it almost perfect. Everything seems to work fine, except the SOS button.
Latest Blueprint by array81

Thanks to @AndrejDelany, @neliss, @jsdphilly and @array81 for all your hard work. This latest version from @array81 combines everything so far.

  1. Is there way to make the SOS button work? OR how to I select it as a trigger in automation? Also how do I active it? hold it? double or triple click?
  2. When I try to arm my alarm (arm away, arm home or arm night) if there is a door open or window opened it wont let me. Is there way to make HOLD action on (arm away, arm home or arm night) to FORCE it to arm it in that particular state?

That will be awesome! Any help from any of you will be appreciated! :slight_smile:

P.S. It has Smart RFID Reader. I have some NFC tags, and chips and cards. How do I use them with the Develco KEYZB-110 since it says they are supported?

1 Like

Hey @array81 can you fix the SOS button on your Blueprint. I installed it and everything else works. Then I installed in addition @AndrejDelany Blueprint and I get this option in automation, to put an action to the “emergency” button. HERE:

However I need to keep both Blueprints installed in order for this to work. I would love to have all the options in a single Blueprint. @array81 can you amend this fix please? :slight_smile:

Here is his Blueprint code: Zigbee2MQTT - Sync Keypad and Alarm Control Panel States

I dont know how to amend the “SOS / Emergency” part myself, but when both Blueprints are installed everything works.

In the Alarmo documentation I don’t find references to the PANIC status, so I don’t know how to add support since my Blueprint is based on the functionality of this component.

@array81 okay, I understand. I will keep both blueprints installed then. @AndrejDelany gives me the SOS button functionality, and yours everything else :slight_smile: If you are willing to take a look at his blueprint and reverse engineering it or maybe he can help with that. But not a Biggie, I got everything working now anyways, just wished was all in 1 blueprint. Thanks again for the hard work!

Does anybody have one of these which can be found on Aliexpress. I have some credit on there and would like to get one.

I have just gotten NFC tags to work with the device using the blueprint by array81

What I did was first go into MQTT → Configure and subscribe to the alarm keypad e.g. zigbee2mqtt/Alarm Keypad (change this to your device name). Then tap an NFC tag onto the device and when it beeps press the unlock key. This is important as just tapping an NFC does nothing, even though it beeps, it simply sets an iternal code in the device to the NFCs ID.

Once you press unlock then a log should appear with "action": "disarm", and the action_code is filled with the NFC tag ID, copy this code. This is unique to each NFC and can be used to set that NFC as an alarm code. I went into Alarmo → Codes → New User and entered the code copied from the MQTT message and now when I tap the NFC and hit disarm the alarm disarms properly.

Hope this helps anyone looking to use NFC tags.

Now I’m searching for a way of somehow setting up Apple Home Key to work to eliminate the need for codes and NFC tags all together. If anyone has any idea if this is possible I’d love to hear how!

1 Like

Wondering if anyone can help -

  • I have three Centralite 3400 keypads which all correctly arm and disarm Alarmo (Home / Away / Night / Disarmed)
  • The problems I’m looking for help with are:
  1. Can’t get the keypads to beep when the system is arming
  2. Can’t get the keypads to show the current status when woken up. I’ve moved them from my Hubitat setup where they did both, so I know the devices are capable.

Any clues???

nice blueprint! I noticed some discussions about supporting a third button (night mode) which is there with the very popular FRIENT keypad (zigbee), but I don’t see it in latest code , here is my update to support it:

alias: Alarmo Frient Keypad Sync
description: >-
  https://community.home-assistant.io/t/zigbee2mqtt-control-alarmo-via-keypad/420016
triggers:
  - entity_id: alarm_control_panel.master
    to: disarmed
    id: to_state_disarmed
    trigger: state
  - entity_id: alarm_control_panel.master
    to: armed_home
    id: to_state_armed_home
    trigger: state
  - entity_id: alarm_control_panel.master
    to: armed_away
    id: to_state_armed_away
    trigger: state
  - entity_id: alarm_control_panel.master
    to: armed_night
    id: to_state_armed_night
    trigger: state
  - entity_id: alarm_control_panel.master
    to: arming
    id: to_state_arming
    trigger: state
  - entity_id: alarm_control_panel.master
    to: pending
    id: to_state_pending
    trigger: state
  - entity_id: alarm_control_panel.master
    to: triggered
    id: to_state_triggered
    trigger: state
  - topic: zigbee2mqtt/Alarm Keypad
    id: keypad_command
    trigger: mqtt
  - event_type: alarmo_failed_to_arm
    id: event_arm_failure
    trigger: event
  - event_type: alarmo_command_success
    id: event_command_success
    trigger: event
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: to_state_disarmed
        sequence:
          - data_template:
              topic: zigbee2mqtt/Alarm Keypad/set
              payload: |-
                {
                  "arm_mode": 
                  {
                    "mode": "disarm"
                  }
                }
            action: mqtt.publish
      - conditions:
          - condition: trigger
            id: to_state_armed_home
        sequence:
          - data_template:
              topic: zigbee2mqtt/Alarm Keypad/set
              payload: |-
                {
                  "arm_mode": 
                  {
                    "mode": "arm_day_zones"
                  }
                }
            action: mqtt.publish
      - conditions:
          - condition: trigger
            id: to_state_armed_night
        sequence:
          - data_template:
              topic: zigbee2mqtt/Alarm Keypad/set
              payload: |-
                {
                  "arm_mode": 
                  {
                    "mode": "arm_night_zones"
                  }
                }
            action: mqtt.publish
      - conditions:
          - condition: trigger
            id: to_state_armed_away
        sequence:
          - data_template:
              topic: zigbee2mqtt/Alarm Keypad/set
              payload: |-
                {
                  "arm_mode": 
                  {
                    "mode": "arm_all_zones"
                  }
                }
            action: mqtt.publish
      - conditions:
          - condition: trigger
            id: to_state_arming
        sequence:
          - data_template:
              topic: zigbee2mqtt/Alarm Keypad/set
              payload: |-
                {
                  "arm_mode": 
                  {
                    "mode": "exit_delay"
                  }
                }
            action: mqtt.publish
      - conditions:
          - condition: trigger
            id: to_state_pending
        sequence:
          - data_template:
              topic: zigbee2mqtt/Alarm Keypad/set
              payload: |-
                {
                  "arm_mode": 
                  {
                    "mode": "entry_delay"
                  }
                }
            action: mqtt.publish
      - conditions:
          - condition: trigger
            id: to_state_triggered
        sequence:
          - data_template:
              topic: zigbee2mqtt/Alarm Keypad/set
              payload: |-
                {
                  "arm_mode": 
                  {
                    "mode": "in_alarm"
                  }
                }
            action: mqtt.publish
      - conditions:
          - condition: trigger
            id: keypad_command
        sequence:
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.payload_json.action == \"disarm\"  }}"
                sequence:
                  - data:
                      entity_id: alarm_control_panel.master
                      code: "{{ trigger.payload_json.action_code }}"
                      context_id: "{{ trigger.payload_json.action_transaction }}"
                    action: alarmo.disarm
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.payload_json.action == \"arm_all_zones\"  }}"
                sequence:
                  - data:
                      entity_id: alarm_control_panel.master
                      mode: away
                      code: "{{ trigger.payload_json.action_code }}"
                      context_id: "{{ trigger.payload_json.action_transaction }}"
                    action: alarmo.arm
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.payload_json.action == \"arm_night_zones\"  }}"
                sequence:
                  - data:
                      entity_id: alarm_control_panel.master
                      mode: night
                      code: "{{ trigger.payload_json.action_code }}"
                      context_id: "{{ trigger.payload_json.action_transaction }}"
                    action: alarmo.arm
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.payload_json.action == \"arm_day_zones\"  }}"
                sequence:
                  - data:
                      entity_id: alarm_control_panel.master
                      mode: home
                      code: "{{ trigger.payload_json.action_code }}"
                      context_id: "{{ trigger.payload_json.action_transaction }}"
                    action: alarmo.arm
      - conditions:
          - condition: trigger
            id: event_arm_failure
        sequence:
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.reason == 'invalid_code' }}"
                sequence:
                  - data_template:
                      topic: zigbee2mqtt/Alarm Keypad/set
                      payload: |-
                        {
                          "arm_mode": 
                          {
                            "transaction": {{ trigger.event.data.context_id }},
                            "mode": "invalid_code"
                          }
                        }
                    action: mqtt.publish
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.reason == 'open_sensors' }}"
                sequence:
                  - data_template:
                      topic: zigbee2mqtt/Alarm Keypad/set
                      payload: |-
                        {
                          "arm_mode": 
                          {
                            "transaction": {{ trigger.event.data.context_id }},
                            "mode": "not_ready"
                          }
                        }
                    action: mqtt.publish
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.reason == 'not_allowed' }}"
                  - condition: template
                    value_template: "{{ trigger.event.data.command|lower == 'disarm' }}"
                sequence:
                  - data_template:
                      topic: zigbee2mqtt/Alarm Keypad/set
                      payload: |-
                        {
                          "arm_mode": 
                          {
                            "transaction": {{ trigger.event.data.context_id }},
                            "mode": "already_disarmed"
                          }
                        }
                    action: mqtt.publish
      - conditions:
          - condition: trigger
            id: event_command_success
        sequence:
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.action == 'arm' }}"
                  - condition: template
                    value_template: "{{ trigger.event.data.context_id != null }}"
                  - condition: template
                    value_template: "{{ trigger.event.data.mode == 'away' }}"
                sequence:
                  - data_template:
                      topic: zigbee2mqtt/Alarm Keypad/set
                      payload: |-
                        {
                          "arm_mode": 
                          {
                            "transaction": {{ trigger.event.data.context_id }},
                            "mode": "arm_all_zones"
                          }
                        }
                    action: mqtt.publish
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.action == 'arm' }}"
                  - condition: template
                    value_template: "{{ trigger.event.data.context_id != null }}"
                  - condition: template
                    value_template: "{{ trigger.event.data.mode == 'home' }}"
                sequence:
                  - data_template:
                      topic: zigbee2mqtt/Alarm Keypad/set
                      payload: |-
                        {
                          "arm_mode": 
                          {
                            "transaction": {{ trigger.event.data.context_id }},
                            "mode": "arm_day_zones"
                          }
                        }
                    action: mqtt.publish
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.action == 'arm' }}"
                  - condition: template
                    value_template: "{{ trigger.event.data.context_id != null }}"
                  - condition: template
                    value_template: "{{ trigger.event.data.mode == 'night' }}"
                sequence:
                  - data_template:
                      topic: zigbee2mqtt/Alarm Keypad/set
                      payload: |-
                        {
                          "arm_mode": 
                          {
                            "transaction": {{ trigger.event.data.context_id }},
                            "mode": "arm_night_zones"
                          }
                        }
                    action: mqtt.publish
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.action == 'disarm' }}"
                  - condition: template
                    value_template: "{{ trigger.event.data.context_id != null }}"
                sequence:
                  - data_template:
                      topic: zigbee2mqtt/Alarm Keypad/set
                      payload: |-
                        {
                          "arm_mode": 
                          {
                            "transaction": {{ trigger.event.data.context_id }},
                            "mode": "disarm"
                          }
                        }
                    action: mqtt.publish
mode: parallel
max: 10

Looks like Z2M 2.0 has stopped this from working. Anyone got any ideas or pointers to get it sorted again?

EDIT: Issue resolved, simply repaired my keypad!

Thanks, this helped me with getting my NFC tags setup.

Looks interesting but these zigbee keypads are expensive or hard to find here in Europe. I was wondering if I could use a numeric USB keyboard directly connected to my raspberry pi. Only petsitters would use it from time to time. Does it make any sense? How should I proceed to make it work?
Thank you

This blueprint works perfect. But when i use (Alarmo Keypad Sync) i get always some errors in the zigbee2mqtt log when i armed and disarmed alarmo? When i disabled the blueprint the errors are gone.

I have the same issue, doesn’t appear to cause any problems but it would be good to know if it can be sorted!

1 Like