G4 Doorbell Pro fingerprint event received, but no fingerPrintUserID attribute on child device

Hi everyone,

I'm hoping someone can point me in the right direction. I'm trying to use the fingerprint reader on my G4 Doorbell Pro to unlock my Yale Z-Wave lock through Rule Machine.

Environment

  • Hubitat C-7

  • Hubitat 2.4.2.119

  • UniFi Cloud Gateway Max

  • UniFi Protect 5.1.19

  • G4 Doorbell Pro

  • UniFi Integration Manager (mavrrick58)

  • Snell's UniFi Protect drivers

What I've configured

  • Installed UniFi Integration Manager through HPM.

  • Parent Protect device created successfully.

  • Child device created for my Front Door.

  • WebSocket is connected.

  • Created a Protect Alarm Manager rule that fires on:

    • Activity

    • Fingerprint Scan

    • User: Jaime Jeffreys

  • Action is a Custom Webhook pointing to the Hubitat inbound webhook.

What works

When I scan my fingerprint, Hubitat receives the webhook and logs:


{
  "item": {
    "modelKey": "event",
    "type": "fingerprintIdentified",
    "metadata": {
      "fingerprint": {
        "ulpId": "56f1100e-b178-4488-9ae3-840174f6ec9b"
      }
    }
  },
  "type": "add"
}

So the fingerprint event is definitely reaching Hubitat.

The problem

The child device was created as:


Type: UniFi Protect Camera

Current States only show:

  • Health Status

  • Motion

  • Smart Detections

There is no fingerPrintUserID attribute.

From reading the driver thread, my understanding is that fingerprintIdentified should update the fingerPrintUserID attribute on the Doorbell child device so Rule Machine can trigger from it.

My questions

  1. Should my G4 Doorbell Pro have been created as a UniFi Protect Doorbell instead of a UniFi Protect Camera?

  2. Is this expected with Protect 5.1.19?

  3. Is there something I need to change in the Integration Manager, or is this a driver issue?

Any help would be appreciated.

Thanks!

@snell @mavrrick58

Yes, it should have created the device as a Doorbell. The Camera driver does not have the needed functionality to work with the methods @mavrrick58 came up with for fingerprint recognition. I am not sure WHY it would have created it as a camera (maybe a bug in my most recent change).

However, you can MANUALLY select the driver type to override it at this time. If you go to the child device (your doorbell) and go to the Device Info tab, you can change the Type dropdown to match the “UnifiProtectChild-Doorbell” then Save.

From there, I recommend going to the Commands tab and running the Refresh command to make sure that all the settings for the device are correct.

To help figure out why the device “went weird” could you message me for the State Variable “Type”? Then I can start looking into why it might have gotten confused. If yours is very new, Ubiquiti sometimes puts hardware version info in the Type field that can throw off my device recognition. I have not seen that with Protect devices (mostly Network ones) but there are a few models of the G4 Doorbell Pro now, so maybe something changed.

Thank you for your quick reply!

I tried changing the driver type, but there is no UnifiProtectChild-Doorbell option in the Type dropdown.

I also enabled Show raw names on the device page, and the Device Data section is completely empty. There is no Type state variable to report.

The device was created as UniFi Protect Camera from the beginning.

I have both UniFi Integration Manager and UniFi Protect Integration installed.

The Front Door child was created as a Camera.

The Doorbell driver is not available in the Type dropdown.

Device Data is empty even with "Show raw names" enabled.

Would you like me to delete only the Front Door child device so it can be recreated after you've identified the detection issue, or would you prefer I leave it as-is while you investigate?

@snell My G4 is about 18 months old and has been installed that whole time. Im only now trying to integrate the fingerprint function to unlock a z-wave Yale Assure lock.

Are you sure you are using @snell integration. To me this sounds like something isn’t matching up. Maybe post the model number so snell can confirm it is mapped properly for when the child device is created. Unifi has change model numbers on products of the same name. Also make sure you installed all of snell's drivers and not part of them. If the doorbel driver isn’t there for you to select that is a problem.

My Unifi integration manager just takes a webhook post from your unifi protect controller and passes the information to Snells Unifi Protect API parent device for the applywebhook command. The code is able to handle allot of stuff sent from Unifi Protect, but new features may need code adjustments if they weren't accounted for on creation. When created it was really focused on AI events. It was adjusted slightly to attemt to allow any post type from Alarm Manager but Unifi keeps adding functions to the alarm manager.

That said the fingerprint id can be recieved through the websocket as well and that isn't something i contributed code for. It was already there when I started using the integration. The problem is it doesn’t tell you who the UUID relates to.

First lets make sure you are using snell's integration and figure out why you are not using the right driver. Then we can figure out if you want to use the notification through the websocket, or have Unifi Protect's Alarm Manager post the info to the webhook. That will dictate how you setup rules in machine

To answer those specifically

  1. It should be using driver UnifiProtectChild-Doorbell
  2. I don’t think the version of Unifi Protect on you UCG Max has any impact on how stuff works with Snells Integration
  3. The Integrstion manager just connects things together. As long as you have it pointed to the UnifiProtectAPi device that is all that it needs.

I also noticed you mention websocket and the alarm Manager calling a webhook. Those are two seperate things. So that could explain some of the confusion.

The Unifi Protect Integration is the built-in Hubitat one. I have no control/involvement over that one and it may be that the Front Door child created as Camera is part of that (I do not have it installed on my own system so it does not overload/interfere with my drivers and Unifi controller).

If you use the Unifi Integration Manager that @mavrrick58 created, you still need my drivers available from the project thread here or within HPM “Unifi Protect Drivers by Snell”. Those drivers include the UnifiProtectChild-Doorbell driver that would be needed for mine to properly handle a doorbell, and for @mavrrick58’s fingerprint webhook method.

@snell @mavrrick58 Thank you for your help!

I installed "UniFi Protect Drivers by Snell" from HPM and changed the child device to UnifiProtectChild-Doorbell.

After saving and refreshing, the driver is now throwing these errors:

  • MissingMethodException in parseJson()

  • No ID for 10/Camera/... cannot refresh

The fingerprint event is definitely reaching the driver because I can see the metadata:fingerprint with my ulpId in the error messages.

Does the child device need to be deleted and recreated as a Doorbell, since its Device Network ID is still 10/Camera/...?

That ID definitely would not work with my drivers, and is not in the style that my drivers make... So I am not sure whether deleting it and recreating it would be useful.

If you add my parent driver in and configure it, it will automatically create child devices as soon as data is received for them. You can safely delete any child device my drivers make and let the parent recreate it as soon as it receives data for that child device again.

Below is a sample image of how the devices should look if it is using my driver, and running properly. The UDMP Protect is the parent, and all the others are the child devices it automatically created. I have disabled some because I do not need them being updated (that is a Hubitat function, not something within my drivers).

Just so I don't break my current setup, would you recommend I completely remove Hubitat's built-in UniFi Protect Integration and instead install/configure your UniFiProtectAPI parent driver? Will that still work with Mavrrick58's Integration Manager and fingerprint webhook?

Since it sounds like you were using the built in integration and need to switch fully to Snell’s i would suggest you remove everything and start over. You can either create the Virtual Device for the UnifiProtectAPI device or have my Unifi Integration manager do it.

If you were using the Hubitats built in Unifi Protect Integration, my app wasn’t doing anything for you. My app is designed to work with Snells’s drivers.

If you do it as a managed configuration in my app it will make you configure the preferences as part of the setup.

In my experience, my drivers CAN be used at the same time as the built-in Hubitat ones (they do not conflict and use different methods) but it can be a bit confusing if device names end up being similar.

As @mavrrick58 stated though, his methods/features will only work with my drivers.