[BETA] IKEA TRADFRI Shortcut Button

Hold/held isn't working

I just, as in a couple of minutes ago, made a fix to that functionality. Check the newest version.

@martin4

Once this driver is finished, a driver for the IKEA two button remote that comes with their blinds would be much appreciated.

2 Likes

Still not working.
Push is fine.

Push

Push and Hold doesn't seem to do anything.

Push and Hold

Except, when I next do a Push after a Hold I get a new entry on the "Current States" portion of the Device page called batteryVoltage.

batteryVoltage

batteryVoltage

If I then refresh the page the batteryVoltage entry goes away until I repeat the process of a "Hold" followed by a "Push".

"Trace Logging" doesn't seem to add anything to the logs.

Push and Hold doesn't seem to do anything.

I have a new version with som extra Zigbee bindings. Give it a try.

My one and only button of this kind works fine, so I am debugging in the blind.

1 Like

If you are in the UK I would be more than happy to send you my non-functional button to play with...

If you are in the UK

Thank for offering, but that's not the case. I'm from Denmark.

2 Likes

I got three duplicate events on a single press.

Log 1

I properly got single event per press after removing
cmds.addAll(zigbee.onOffConfig())
cmds.addAll(zigbee.levelConfig())
cmds.addAll(zigbee.enrollResponse())
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.

cmds.addAll(
    "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.

https://xiaomi-mi.com/sockets-and-sensors/xiaomi-mi-wireless-switch/

2 Likes

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

Download the Hubitat app