[BETA] IKEA TRADFRI Shortcut Button

I got three duplicate events on a single press.

Log 1

I properly got single event per press after removing
every "zdo bind"s
from configure().

But now the device generates an event saying button 2 was pushed few minutes after being paired to the hub, with out being actually pressed.

Log 2

I was seeing this also on one of mine. By doing a reset/re-pairing it resolved it.
That seems to be an issue with these, it can take multiple pairing attempts to get the functions working correctly. And every time the battery gets pulled it needs to be done again.

  1. Start Zigbee Pairing on Hubitat Device Discovery page.
  2. Push "TRÅDFRI Shortcut button" reset switch 4 times.
  3. When device found wait for discovery mode to time out. Repeat steps 1 & 2.

Unfortunately I'm not sure how to tell if its paired 100% other than to try it and watch the logs. :man_shrugging:

My 2 are working fine atm for single push so just letting them idle for now.

Thanks! But it didn't work for me..
I tried repairing it 5 times(discovered as previously discovered device) but the button sent the packet three times per press in every try.

I have done some test with two buttons and it seems like the device properly sends a 'button 1 pressed' packet without any reporting configuration once paired with the hub.
But when the device is configured to report the On/Off cluster[zigbee.onOffConfig(), zdo bind ... x y 6 ...], it sends the 'pressed' packet(On/Off cluster) twice.
Same happens when the device is configured to report the Level Control cluster[zigbee.levelConfig(), zdo bind ... x y 8 ...], the device sends the 'pressed' packet(On/Off cluster) twice.
And when the device is configured to report both the On/Off cluster and Level Control cluster, it sends the same 'pressed' packet three times.
Configuration for reporting IAS Zone cluster[zigbee.enrollResponse()] had no affects.

And as for 'button 2 press' event, it seems like the device sends it only one time shortly after being paired with the hub no matter the configuration for reporting was performed or not.

So just removing

seems harmless and works fine for my shortcut buttons.

My shortcut button's article number is 803.563.84 and has firmware 2.3.015 which seems to be the latest.

I couldn't get my button to work before I added the zdo binds. Now it seems to works without them. Perhaps they are needed the first time the button is paired, but not afterwards?

I'll check it out when I get around to buying a couple more,

In the mean time, I have tried using zdo unbind but the device just ignores it. I might be using it wrong.

    "zdo unbind unicast 0x${device.deviceNetworkId} {${device.zigbeeId}} ${device.endpointId} ${zigbee.ON_OFF_CLUSTER} {${location.hub.zigbeeId}} 1",
    "zdo unbind unicast 0x${device.deviceNetworkId} {${device.zigbeeId}} ${device.endpointId} ${zigbee.LEVEL_CONTROL_CLUSTER} {${location.hub.zigbeeId}} 1",
    "zdo unbind unicast 0x${device.deviceNetworkId} {${device.zigbeeId}} ${device.endpointId} ${zigbee.IAS_ZONE_CLUSTER} {${location.hub.zigbeeId}} 1"

I've managed to get it paired.
Since nothing changes in Current States if i press it, i made a rule so that when i press the button it send a text to my phone. Problem is that for each press i get 3 messages.

I am looking forward for a stable version of the driver.

It seems the device it self sends 3 messages at every push. I haven't had time to dig into how to eliminate the extra events without introducing other disadvantages.

The duplicated events are raised within so little timespan (~10 ms) that it is quite difficult to make a workaround without any synchronization or mutex available. Using state isn't fast enough. Other device drivers seems to be using something like this:

def rejectTime = 0
if(debounce) rejectTime = debounce
def recentEvents = device.eventsSince(new Date(now() - rejectTime)).findAll{it.name == eventType}
log.info "Duplicate event rejected" 
if(recentEvents.size == 0){
    return [ name: eventType, value: 1, isStateChange: true, descriptionText: "Button 1 was $eventType" ]

See “New” SmartThings 2018 sensors

But that aren't fast enough either because the first event hasn't been fully processed before the duplicate arrives.

I am open for suggestions.

Got one at Eliminating redundant device events.
Fix pushed to GitHub.

Boy oh boy, do these things drain battery quickly! They seem to be working intermittently for a few days at a time, but the cost in batteries alone doesn't seem worth it at this point. Any suggestions on other affordable Zigbee Button devices?

The Xiaomi Mi Zigbee smart button can be paired directly to HE. The battery lasts forever and recognizes different button pressing and hold.

Cheap, compact and very reliable in my experience.



The battery drain thing seems to be a theme with the IKEA buttons and other controllers when connected to hubutat.

I saw it in the small dial button - SYMFONISK Sound Remote 704.337.88 (black) or 403.704.81 (white)

I'm not sure there's a solution.

Thanks for verifying. I ended up switching to Aqara switches and haven't looked back.

Happy to report the first two are still working fine, so of course had to add another one.

After discovery it was doing the "three event" thing, multiple reset/re-pairings later it's working properly (1 push = 1 log entry) as well.
Unfortunately I didn't really keep track of the process (if there is one) to get it paired correctly.
From what I remember:

It was more than five but less than thirty times I pushed the "link" button four times to reset the button.

Deleted and re-discovered the button once. Initially the "Device Data: Details" section had no in/out clusters information until after the device was deleted and re-discovered from HE.

Device Data: Details

I switched to the Aqara button to control my Ikea blinds manually. One tap opens them 55%. A double tap opens them 100%. A single push closes the blinds.

Might be worth investing less than $20 for a button that works using the driver on guthub.

Just reporting that I bought 4 of those Tradfri Shortcut Button (203.563.82) and they work flawlessly with this driver.

I installed the driver first, went into pairing mode at 3-4' from the hub, pressed the battery button 4 times and they were recognized immediately.
Now, I just hope the battery will last more than 1 month.
Thank you very much for the work!

1 Like

Just wanted to say thanks - I did get this to work! The driver worked perfect for me, plan to get more buttons.

I'd gotten the button connected before without the driver, but hadn't had time to fuss with it to put it to use. Once I saw this, I reset the button, "forgot" it as a device, loaded the driver... it only took me about two hours to realize I coudn't get the button to be re-recognized by Hubitat... because the battery was now dead. New battery, and everything is beautiful. We'll see how long that lasts.

For now it's a doorbell button, sends an alert to my phone, until I get a smarter doorbell...

This driver doesn't seem to be working for me. My device says it has two buttons, But I only see one button that has a push and hold.
I am on my 4th driver. Yes, I tried the generic driver. I have no debug logs or error logs to show you.

Can somebody point me in the right direction?

Have you tried this one?
It's on my "someday" list. :smiley:

I tried the one with presents and I couldn't get it to work. it wouldn't configure.
My battery says it's at 30, so I'll get some batteries. I also have an Aeotec Walmote on order. :grinning:

Got it working! The problem was not the button or the fantastic driver by Ranchitat! it was the Zooz zen15 I wanted to turn on/off my espresso machine.

I couldn't set it to toggle for some reason. I used two actions. One to turn it on and one to turn it off. no biggie.
Also, the driver tells me there are two buttons. I only see one button with two actions. Push and hold.
Does this shortcut button actually have two buttons?

Download the Hubitat app