How to catch arm event for remote control button?

I’ve a Heiman RC-EF-3.0 remote control with 4 buttons: (arm_away, arm_home, panic, disarm).
This is sweetly connected to the ConBee II integration, interviewed and joined, and the master code can be entered into the config there.The first 3 buttons then work seamlessly, and interact with the Alarm Control Panel as expected, but the last disarm button is a complete mystery.

When I press the “disarm” button, then in the logbook I see: HEIMAN RC-EF-3.0 Arm event was fired. Within the automation screens I don’t see any way to catch this button press. Curiously, this event appears to be sent 3 times on each press, and the standard behaviour of the control panel is to respond to 3 “failed code entries” with an alarm trigger. The effect of this is to trigger the alarm each time the disarm button is pressed. I can workaround this false-positive by setting the number of failed code entries higher, but it’s a kludge.

If anyone has any helpful suggestions, to make the disarm button press actually disarm the alarm, rather than to trigger it, I’d appreciate any pointers. Many hopeful thanks in advance.

Can you listen to the event via developer tools and post the resulting 3 events that occur when you press the disarm button?

Have just figured out how to do this :slight_smile:
@rossk Here are the 3 events that get logged with the “disarm” button press:

Event 26 fired 10:29 AM:
event_type: zha_event
data:
  device_ieee: 5c:02:72:ff:fe:e9:2f:c5
  unique_id: 5c:02:72:ff:fe:e9:2f:c5:1:0x0501
  device_id: 9afd0c667be29b4ad12c663bcf0964b6
  endpoint_id: 1
  cluster_id: 1281
  command: arm
  args:
    arm_mode: 0
    arm_mode_description: Disarm
    code: ""
    zone_id: 255
  params: {}
origin: LOCAL
time_fired: "2022-10-01T08:29:38.129914+00:00"
context:
  id: 01GE9AMKEH5DAM1HDC324K65EV
  parent_id: null
  user_id: null

Event 25 fired 10:29 AM:
event_type: zha_event
data:
  device_ieee: 5c:02:72:ff:fe:e9:2f:c5
  unique_id: 5c:02:72:ff:fe:e9:2f:c5:1:0x0501
  device_id: 9afd0c667be29b4ad12c663bcf0964b6
  endpoint_id: 1
  cluster_id: 1281
  command: arm
  args:
    arm_mode: 0
    arm_mode_description: Disarm
    code: ""
    zone_id: 255
  params: {}
origin: LOCAL
time_fired: "2022-10-01T08:29:35.113591+00:00"
context:
  id: 01GE9AMGG99NM5G6F7VDSPNJDX
  parent_id: null
  user_id: null

Event 24 fired 10:29 AM:
event_type: zha_event
data:
  device_ieee: 5c:02:72:ff:fe:e9:2f:c5
  unique_id: 5c:02:72:ff:fe:e9:2f:c5:1:0x0501
  device_id: 9afd0c667be29b4ad12c663bcf0964b6
  endpoint_id: 1
  cluster_id: 1281
  command: arm
  args:
    arm_mode: 0
    arm_mode_description: Disarm
    code: ""
    zone_id: 255
  params: {}
origin: LOCAL
time_fired: "2022-10-01T08:29:32.467364+00:00"
context:
  id: 01GE9AMDXKC8E6HQHR35YWG2P6
  parent_id: null
  user_id: null


Perfect, so now you know how, you should be able to use the buttons while listing to the above data and pick out pretty much any line of the event data that is unique to the disarm button and use that as a trigger and/or a condition etc.

Maybe:
arm_mode_description: Disarm

1 Like

Oooh, quickly looking, that’s very nearly working. Haven’t used this event listening before, very cool. Will have to take some time later to make sure it’s quite right.

Thanks hugely for the assistance @rossk :+1:

1 Like

Had to just come back here to flag up the result of trying this out using the results of the zha_event data.

Works exactly as expected now. :slight_smile: :+1:

1 Like

Apologies for reviving an old post, but I have just received two of these ZigBee key fobs and am experiencing the exact same issue.

It is quite frustrating to see it integrate as an alarm panel instead of buttons, i was hoping we could somehow change the type of device it enrolls as but have had no luck so far.

With your solution, does this still fire the automation 3 times? How you do you ignore the other 2 events generated?

I don’t, at least not explicitly. When the button is pressed I call a script to handle the next steps. This script changes a state and later repeat calls will be ignored if the state has changed. Think flag.