Synchronize Ring Alarm Keypad v2 with Alarmo

Fabulous blueprint! Thank you for putting this together. You’ve helped me save so much time configuring our home alarm. Two Ring v2’s with V2.0.0 firmware working perfectly :+1:

Just a thank you for the Blueprint. I thought I’d made a mistake, got in a hurry. My zooz 800 stick showed up today, already had a keypad, I couldn’t resist the price for $25. Added the zooz, keypad paired easy enough, the hurry part or I think, was I integrated it with Z-wave-js. Maybe not a mistake.:person_shrugging: Nothing broken, it works with Alarmo. Thank you again!

question I have my ring keypad integrated with zwave legacy, does it need to be integrated/synced with zwave-js to be able to use the police,fire and medical buttons?

No, you should be fine. The standard ZwaveJS add on has all the same functionality - these days, it’s just missing the nice UI you get with ZwaveJS UI. But if it’s paired and functioning, there’s no need to change.

ok well, I can’t get my fire, police, and medical buttons to do anything with the blueprint. I made a simple notification and tested it and nothing happened.

Did you hold down the fire button until all the lights go out? The keypad doesn’t sent an event when you first press it.

did not know that. it works. is there a way to press it once for action instead of hold. making it for my kids in case of an emergency?

You can reduce the hold time for those buttons by adjusting configuration parameter 7, but at least on the firmware versions I have access to you can’t reduce it below 2 seconds.

Hi ! first of all! amazing BP!!
love it!

maybe a silly question… when a smoke zwave detecter activated in ALARMO… there is no connection to the RING keypad? I can’t turn off the alarm only if the alarm is not yet in some alarm mode .

will be great is the alarmo can activate the RING keypad too.

Sorry, I don’t think I understand. Could you be more specific about what’s happening, and what you expect should happen?

Thanks so much for that Bp

a question here : for those who have alarmo to expand ring alarm (more sensors etc that normally will not work with ring)
is there a way to make the keypad disarm both systems??

my understanding that the keypad can not be paired to to networks at the same time

but it could be an automation to send keys stroke to disarm the system instead

Hello, as I am just starting to work with HA my question might be stupid. I try to integrate Ring keypad Gen#2 via Zwave in HA. I manage to get it running in HA, but then it does not work anymore in the Ring App. Means either I can integrate in HA or in Ring App. Both at same time is not possible. Is this normal?

Yes, completely normal. If you’re looking to integrate a full Ring alarm system into HA, you want Ring-MQTT. This blueprint is for using the keypad without the rest of the system (and it’s associated subscription fees).

Thank you for your quick reply. May be I can use 2 keypads. One in HA and the other for operation via Ring App ( as family members prefer Ring App). Seems I need to study more :-). Happy Easter. :rabbit2:

Is it normal behaviour that the exit delay has to finish before the keypad tells you there are open sensors? I’m not sure if i have something setup incorrectly. I get a notification on my phone saying it failed to arm but the panel finishes the count down.

All this blueprint does is reflect Alarmo’s state. What’s going on here is that you have “Use exit delay” turned on in the advanced settings for the sensor(s) in question. That tells Alarmo that someone leaving home is expected to trip those sensors in the process of leaving, so it has no way to know until the delay expires that they’re tripped because they’re left open, rather than as a part of someone leaving.

Turn that setting off for the sensor, and it’ll notify you immediately if it’s open when you try to arm the system.

how can I adapt this to use the Aqara M1S alarm system?

I’ve tried to set the Intergration to homekit_device, but it still cannot find the alarm system.

EDIT:
Kinda janky but I created Manual alarm panel and created an automation to change the alarm status of the M1S, since it doesn’t have a code to sync with.

How can I get the countdown red lightbar to work and also change the away mode buttons colour to red?

blueprint:
  name: Ring Keypad Automations
  description: Automations to use the Ring Keypad with an Alarm Panel integration.  See https://github.com/ImSorryButWho/HomeAssistantNotes/blob/main/RingKeypadV2.md for more information.
  domain: automation
  input:
    keypad:
      name: Keypad Device
      description: The device entry for the Ring keypad
      selector:
        device:
          manufacturer: Ring
          integration: zwave_js
    alarm:
      name: Alarm Control Panel entity
      description: The Alarm Control Panel to synchronize the keypad with
      selector:
        entity:
          domain: alarm_control_panel
    selected_action_police:
      name: Selected Action Police
      description: Select the action for Police Button
      default: []
      selector:
        action:
    selected_action_fire:
      name: Selected Action Fire
      description: Select the action for Fire Button
      default: []
      selector:
        action:
    selected_action_medical:
      name: Selected Action Medical
      description: Select the action for Medical Button
      default: []
      selector:
        action:
variables:
  alarm: !input alarm
mode: parallel
max: 10
trigger:
  - platform: event
    event_type: "zwave_js_notification"
    event_data:
      command_class: 111
      device_id: !input keypad
      event_type: 2
    id: code_entered
  - platform: event
    event_type: "zwave_js_notification"
    event_data:
      command_class: 111
      device_id: !input keypad
      event_type: 3
    id: keypad_disarm
  - platform: event
    event_type: "zwave_js_notification"
    event_data:
      command_class: 111
      device_id: !input keypad
      event_type: 5
    id: keypad_arm_away
  - platform: event
    event_type: "zwave_js_notification"
    event_data:
      command_class: 111
      device_id: !input keypad
      event_type: 6
    id: keypad_arm_home
  - platform: event
    event_type: zwave_js_notification
    event_data:
      command_class: 111
      device_id: !input 'keypad'
      event_type: 16
    id: keypad_fire
  - platform: event
    event_type: zwave_js_notification
    event_data:
      command_class: 111
      device_id: !input 'keypad'
      event_type: 17
    id: keypad_police
  - platform: event
    event_type: zwave_js_notification
    event_data:
      command_class: 111
      device_id: !input 'keypad'
      event_type: 19
    id: keypad_medical
  - platform: event
    event_type: "alarmo_failed_to_arm"
    event_data:
      reason: "invalid_code"
    id: invalid_code
  - platform: event
    event_type: "alarmo_failed_to_arm"
    event_data:
      reason: "open_sensors"
    id: need_bypass
  - platform: state
    entity_id: !input alarm
    to: disarmed
    id: alarm_disarmed
  - platform: state
    entity_id: !input alarm
    to: arming
    id: alarm_arming
  - platform: state
    entity_id: !input alarm
    to: armed_away
    id: alarm_armed_away
  - platform: state
    entity_id: !input alarm
    to: armed_home
    id: alarm_armed_home
  - platform: state
    entity_id: !input alarm
    to: pending
    id: alarm_pending
  - platform: state
    entity_id: !input alarm
    to: triggered
    id: alarm_triggered
action:
  choose:
    - conditions:
        - condition: trigger
          id:
            - code_entered
            - keypad_disarm
      sequence:
        - service: alarm_control_panel.alarm_disarm
          entity_id: !input alarm
          data:
            code: "{{ trigger.event.data.event_data }}"
    - conditions:
        - condition: and
          conditions:
            - condition: trigger
              id: keypad_arm_away
            - condition: state
              entity_id: !input alarm
              state: "disarmed"
      sequence:
        - service: alarm_control_panel.alarm_arm_away
          entity_id: !input alarm
    - conditions:
        - condition: and
          conditions:
            - condition: trigger
              id: keypad_arm_home
            - condition: state
              entity_id: !input alarm
              state: disarmed
      sequence:
        - service: alarm_control_panel.alarm_arm_home
          entity_id: !input alarm
    - conditions:
        - condition: trigger
          id: invalid_code
      sequence:
        - service: zwave_js.set_value
          target: 
            device_id: !input keypad
          data:
            command_class: "135"
            endpoint: "0"
            property: "9"
            property_key: "1"
            value: 1
    - conditions:
      - condition: trigger
        id: need_bypass
      sequence:
        - service: zwave_js.set_value
          target: 
            device_id: !input keypad
          data:
            command_class: "135"
            endpoint: "0"
            property: "16"
            property_key: "1"
            value: 1
    - conditions:
        - condition: trigger
          id: alarm_disarmed
      sequence:
        - service: zwave_js.set_value
          target: 
            device_id: !input keypad
          data:
            command_class: "135"
            endpoint: "0"
            property: "2"
            property_key: "1"
            value: 1
    - conditions:
        - condition: trigger
          id: alarm_armed_away
      sequence:
        - service: zwave_js.set_value
          target: 
            device_id: !input keypad
          data:
            command_class: "135"
            endpoint: "0"
            property: "11"
            property_key: "1"
            value: 1
    - conditions:
        - condition: trigger
          id: alarm_armed_home
      sequence:
        - service: zwave_js.set_value
          target: 
            device_id: !input keypad
          data:
            command_class: "135"
            endpoint: "0"
            property: "10"
            property_key: "1"
            value: 1
    - conditions:
        - condition: trigger
          id: alarm_arming
      sequence:
        - service: zwave_js.set_value
          target: 
            device_id: !input keypad
          data:
            command_class: "135"
            endpoint: "0"
            property: "18"
            property_key: "7"
            value: "{{ state_attr(alarm, 'delay')}}"
    - conditions:
        - condition: trigger
          id: alarm_pending
      sequence:
        - service: zwave_js.set_value
          target: 
            device_id: !input keypad
          data:
            command_class: "135"
            endpoint: "0"
            property: "17"
            property_key: "7"
            value: "{{ state_attr(alarm, 'delay')}}"
    - conditions:
        - condition: trigger
          id: alarm_triggered
      sequence:
        - service: zwave_js.set_value
          target: 
            device_id: !input keypad
          data:
            command_class: "135"
            endpoint: "0"
            property: "13"
            property_key: "1"
            value: 1
    - conditions:
      - condition: trigger
        id: keypad_fire
      sequence: !input selected_action_fire
    - conditions:
      - condition: trigger
        id: keypad_police
      sequence: !input selected_action_police
    - conditions:
      - condition: trigger
        id: keypad_medical
      sequence: !input selected_action_medical

It would probably be worth starting a separate thread, and providing more information about your setup and what you’re trying to accomplish. I’m not at all familiar with the Aqara alarm, and don’t want to derail this thread.

Does anyone ever have reliability issues with their Ring Keypads? I have two in my house, and it seems like about 1 in 20 times they don’t correctly sync or transmit commands to Home Assistant. It manifests sometimes as the command executing (ie, Arming the alarm for home) but not updating the state of the keypad, or not sending the command to Home assistant at all (frustrating when the disarm timer is counting down and entering the disarm code doesn’t seem to do anything).

I’ve tried healing the nodes in Zwave JS UI, but I have a lot of zwave devices in my home (including right near the keypads) and they are all rock solid except for these two keypads.

So two questions: Has anyone else experienced this and if so found a solve, and seperately, is there anyway for this blueprint to occasionally check proactively if the keypad is out of sync with Alarmo state and try and correct it? That would at least help solve the “keypad state didn’t update correctly” part.

1 Like