It should still join as a “Thing” if it doesn’t find a fingerprint it likes. Once joined if you go to the device info page in IDE via My Devices, there is a line called Raw Description that contains key zigbee info like the endpointId, zigbee profile, zigbee device class, plus in and out clusters.
That’s the starting point for a zigbee device. Then using the zigbee spec, you can start writing/testing expected commands and see if the device supports binding, reporting and message formats.
PS: this keyfob is probably not a good example to use as a primer for device handlers. It uses multiple endpoints which is uncommon. I honestly don’t know that anyone besides @mitchp or @johnr would know enough zigbee to figure this out. I certainly wouldn’t have.
Two quirks with this device…
Buttons are labeled from the circle proceeding clockwise (kinda strange to me), and the button seems to be able to unlock a locked door but cannot lock an unlocked one.
I used the numbering that the manufacturer used internally (endpoint numbers) as the numbering for the buttons. This can be changed if you’re up for editing the code.
If true, that would be a limitation of the Button Controller app (or whatever you’re using to perform actions based on button presses)
No problem. The buttons didn’t bother me… Once they’re set up, it’s just a matter of remembering which shape does what. The labeling is just counterintuitive.
And I’m not sure if it’s a limitation of the button controller app or my Schlage lock, but I’m testing out using a routine to lock the door to overcome this quirk.
Ultimately, I want one of these in each car as a garage door opener/mode changer and one to give the nanny when she comes/goes as her key.
Thanks for making this device type! I like the size of this better than the minimote.
The Button Controller and Button Controller + apps are both missing a line of code to allow locking when unlocked. Look at the app this section and you will see the missing option:
else if (devices*.currentValue(‘lock’).contains(‘locked’)) {
devices.unlock()
}
else if (devices*.currentValue(‘lock’).contains(‘unlocked’)) {
devices.lock()
}
Ah, good to know!
I’ve circumvented the issue with Trigger Happy for now. Maybe I’ll look at the code and see if I can integrate it at a later date.
Thanks
av8rdude, Can you tell me how to get the Button Controller and Button Controller + apps code for the Iris 3450L ? Because I have the same problem can not lock the door too. And I am a code dummer , what I can do is only cut and past.
Technical Specifications
Power
Rated: 3V
Battery: CR-2450 (1x)
Battery Life: Up to 2 years
Environmental
Operating Temperature: 0° to 40°C
Shipping/Storage Temperature: -20° to 50°C
Humidity Range: 0 to 90% RH. (non-condensing)
Wireless RF Protocol
Protocol: ZigBee HA 1.2
TX Strength: +3 dBm
RF Channels: 16
Range: 130 ft. (40m) LOS
Compatibility
The Lowe’s Iris Smart Fob is fully ZigBee HA 1.2 certified and will work with other open ZigBee HA 1.2 certified systems.
Alias
Keyfob
I considered adding this using a timer like they are in this device type, but scheduled events were not the most reliable for me at the time (still aren’t 100%), so I considered that function mostly broken.
I can probably add this to the existing device with the caveat that timed events are flaky and it may just stop working.
Picked one of these up today to control my lamps/light/ceiling fan in our master bedroom. Got everything set up and paired and it’s working with one exception. I have the ‘held’ seconds for 3, but noticed that sometimes the button is not doing what I expect. So, I am watching the events in live logging and notice that sometimes when I press the buttons it sometimes registers as a hold even though it was a push. Any ideas? Think I got a bad FOB?
Something just doesn’t seem right. I put some displays in the log to show what he values of the push time are and I’ve seen as much as 19 seconds when it was really less then 1 second (a quick push). Sometimes it works great but about one in every 10 pushes or so I get a rogue ‘hold’ event. Not sure if its something with the code or something with the device (been years since I have coded but enjoying the troubleshooting ). For now, I just made all events a push event as I really don’t need the hold right now.