Opener Callback: No difference between Doorbell Ring and Ring To Open Doorbell

Hey there,

I’ve integrated my Nuki Opener via the Bridge and noticed that the callback of the Opener is pretty limited when pressing the doorbell. There’s no difference between the doorbell ringing and ring to open opening the door.
What I mean:
First off, here’s the callback data when activating the Ring To Open feature:

{
  "deviceType": 2,
  "nukiId": 0,
  "mode": 2,
  "state": 3,
  "stateName": "rto active",
  "batteryCritical": false,
  "ringactionTimestamp": "2024-09-08T15:10:21+00:00",
  "ringactionState": false
}

Now, the doorbell is being pressed. Notice how ringactionState is false.

{
  "deviceType": 2,
  "nukiId": 0,
  "mode": 2,
  "state": 7,
  "stateName": "opening",
  "batteryCritical": false,
  "ringactionTimestamp": "2024-09-08T15:10:21+00:00",
  "ringactionState": false
}

5 seconds later, shortly after the opener stops actuating the “buzzer” for the door, the following data is being sent, even though the doorbell hasn’t been pressed for 5 seconds:

{
  "deviceType": 2,
  "nukiId": 0,
  "mode": 2,
  "state": 1,
  "stateName": "online",
  "batteryCritical": false,
  "ringactionTimestamp": "2024-09-08T15:12:30+00:00",
  "ringactionState": true
}

In comparison, here’s a doorbell push without Ring To Open being active. As you can see, the data is identical to the block above (except for the timestamp)

{
  "deviceType": 2,
  "nukiId": 0,
  "mode": 2,
  "state": 1,
  "stateName": "online",
  "batteryCritical": false,
  "ringactionTimestamp": "2024-09-08T15:12:48+00:00",
  "ringactionState": true
}

I use the doorbell feature for HomeKit to send a doorbell notification to my devices, while a “successful” Ring To Open unlocks my apartment door.
To make this work, I start a timer in Home Assistant of the same length as configured in the Nuki App (15min). When a ringactionState is received while this timer is running, it’s interpreted as a “successful” Ring To Open.
Needless to say, that’s pretty involved and creates edge cases.

Again, I have to do that because there’s no difference in the callback data between a doorbell ring and Ring To Open buzzing the door open.

I’d propose this change: Instead of sending two callbacks when pressing the doorbell while Ring To Open is active (opening + delayed doorbell callback), send one with the "stateName": "rto opening" or similar.

2 Likes