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.
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:
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.
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.