Fingerprints - What are they?

I am new to SmartThings and trying to get to grips with creating a device handler and a bit confused by fingerprints. I’ve tried to read the documentation but wondered if someone could talk me through what they, how they work and how to use them or link to a post that does as I can’t seem to find one.

Thank you!

It’s just the term that people use for the string of codes that the device sends to the controller when it is first paired. This string includes information about the device such as the device class, what commands it can accept, Who the manufacturer is, and with some devices a unique device ID.

That’s how the controller knows whether the device is a switch or sensor, if it’s a sensor whether it’s a motion sensor or a humidity sensor, etc.

The official Documentation is pretty good on this:

http://docs.smartthings.com/en/latest/device-type-developers-guide/definition-metadata.html

1 Like

How do I find out what to use and what happens if they aren’t filled in?
If I download some custom code do I need to change the deviceID and the inClusters?

This is in the context of a Fibaro Dimmer

Are you just talking about using a custom device type handler that another community member has written? If so, this FAQ should answer your questions. (This is a clickable link)

1 Like

And you should never change the inclusters – – those are sent by the device itself to tell SmartThings what it’s capable of.

As far as the device IDs, if it’s zigbee device it will come with its own unique ID. If it’s a Z wave device, the device ID will be assigned by the controller at the time of pairing, the only time you need to set that is if it’s a virtual device.

So you shouldn’t need to do either of those for the fibaro dimmer.

What device type handler are you trying to use?

1 Like

So for custom code one has downloaded it doesn’t look like there need to be any change. I"m using https://github.com/hajar97/FibaroDimmers/blob/master/devicetypes/fibarodimmer2.groovy

What about creating my own customer device handler for a simple Z-Wave switch. How do I work out what to put in the fingerprint?

Serious question: why would you write your own device type Handler for a basic switch? There’s already a generic Z wave handler for that.

Normally people write their own device type handlers for one of two reasons:

One) the device offers advanced features which are not accessible through any of the existing device type handlers or

Two) you want to change The look of the UI for the device.

And again, most of what goes in the fingerprint is going to be sent by the firmware in the device itself. You as a coder shouldn’t have to do anything about it except capture it.

If you’re creating a hardware device, then you have to worry about setting up the fingerprint. But if you’re just using an existing device that you purchased, the fingerprint comes with the device.

As a coder, you would include the fingerprint in your device type handler so that at the time the device joins the SmartThings network, SmartThings will recognize it as matching your device type hangler.

Z wave “fingerprint” format recently changed in this regard. The devices were already sending the information, but smartthings hadn’t been capturing it. Here’s some more information on that.

Again, though, it’s not likely that you would be writing a new device type handler for a basic switch.

I wanted to try and understand device handlers from the ground up so writing my own for a basic switch I have seemed a good way to do this. It would also enable me in the future to add devices which aren’t supported yet.

When it asked me for the fingerprint on the New Device Handler form I wasn’t sure what to fill in but I can just leave it blank then?

No, you need to find out what it is for the device so you can match to it. See the post I linked to one post above this.

Edited to update:

AsI think about it, it might be OK to leave it blank and then you could just manually assign the device to your device type handler, but I’ll leave that discussion for other people who actually code.

The device is still going to send its fingerprint to SmartThings and SmartThings will assign it to the generic device handler, and then you can manually switch it to your own.

My background is network engineering, so I understand the protocols pretty well, but I now rely on text to speech and it’s really hard to do groovy with text to speech, So I don’t write code for the system. But a lot of people do and they will hopefully chime in. :sunglasses:

1 Like

This thread is handy…

1 Like