Synchronize Ring Alarm Keypad v2 with Alarmo

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

You’re not alone - there’s a long thread on the ZWaveJS github page. The issue seems to have gotten better with newer ZWaveJS versions, and generally seems to get better if you disable the motion sensor (by setting config parameter 15 to 0).

Unfortunately, the keypad doesn’t report what state it’s in, so there’s no easy way to way to manually re-synchronize the state if a transition is missed. The only thing I can think to do is try to monitor the ZWaveJS successful / unsuccessful commands counters for the device, which might work. I’ll play with it when I get some time, and see if I can make that work.

3 Likes

I’ve created a new thread here, if you have any idea on how to get the away status and alarm count down to work.

This. Disabling the motion sensor helps a lot.

I too have this issue. 2x v2 keypads with motion disabled but very unpredictable whether you can use the keypad to disarm. Would really welcome a fix.

1 Like

For me, disabling motion sensor fixed the issue, though I miss being able to see the alarm state by walking by the control panel. Wish that wasn’t required.

1 Like

This looks like exactly what I need. Just a quick question for everyone:

The three buttons on the side… Are you able to utilize them to trigger actions? Ideally I’d like them to be “all lights on” “all lights off”… Maybe throw a sticker on top or something.

Thanks in advanced

Regarding the connect/disconnect issues, my Z-Wave stick was surrounded by my Hue-bridge, RFXCom and the Zigbee stick, I moved the Z-wave stick to the other side of the concrete wall and this helped a lot, occasualy the keypad does disconnect but like once a week or so for 2 minutes, I can live with that.

@supovitz I tried that a while ago but found it inpractical as you need to hold those buttons for 3 or 5 seconds or so, I programmed the 2 left buttons of the 3 on top to open the front gate and turn on the lights.

Hey there,

Very good thread and blueprint as I am thinking of using Alarmo and a physical keypad; Ring Keypad v2 looks really good.

The synchronizations are both directions, right?
So if arming/disarming in Alarmo or in HA companion app the Ring keypad will detect that and change status and the opposite?

Correct. The blueprint watches for changes to Alarmo’s state, and updates the keypad as appropriate.

1 Like