[Edge] IKEA RODRET, SOMRIG and SYMFONISK Gen 2 Button Edge Driver

Thanks, although I believe it’s just a hack. SmartThings doesn’t even have a “increase brightness” action for lights so few people will find it useful unless they use specific drivers like custom Mc ones.

Once you depend on custom drivers then it’s just better to make the drivers support a continuous increase/decrease action, just like @TapioX suggested here. That way it will work with any button and the brightness change will be smooth, plus less load for the hub (the auto-fire feels wrong since it is spamming the hub with events after all :sweat_smile:).

Regarding other buttons, I only use these so I’m afraid can’t help you with those Symfonisk ones.

Edit:

I was looking at that SYMFONISK Gen 2, the square one that looks like a STYRBAR. The rotary one does not exist in my country apparently or maybe they don’t sell it anymore.

It’s such a Frankenstein device! As learned in zigbee2mqtt site and also in this Hubitat driver by Dan Danache, each button supports a different set of features and uses different non-standard ways to send the events that even vary depending on the firmware version :scream:. I believe they don’t send release events, most buttons don’t even support hold actions. As a multi-button looks great though, I like the big large centric button like in the old 5-button TRADFRI remote.

3 Likes

New update for RODRET:

  • Custom tweak for Toggled-up events now available for independent buttons too instead of just Main. While RODRET will not say which button was released, I’m storing the last button held so when the release message arrives I can emit the Toggled-up for that button.
  • Button order matches the physical arrangement so the [ I ] button appears first. Also changed the settings order so multi-tap and autofire for [ I ] are first. I’ve received feedback about it and it certainly was causing me some OCD too :sweat_smile:. Looks like SmartThings orders the buttons alphabetically by label (although I changed the order in the profile too, just in case).

As usual will take few hours to auto-update.

3 Likes

TL;DR: Added support for SYMFONISK Gen2 remote :partying_face:. Tested with modern firmware versions only. Watch out for the default repeating Held behaviour, the driver lets you suppress repetitions too and adds multiple tap support!

May take a few hours to auto-update! Check in the driver description that it mentions SYMFONISK before trying to pair it, if it was a Zigbee Thing just delete it.

Welcome to the Zigbee Buttons jungle

Three weeks ago I had no idea about how drivers or Zigbee buttons worked. Now, after RODRET, SOMRIG and STYRBAR I see it is a jungle because they are not really buttons :see_no_evil:. Sometimes they are on/off switches, sometimes scene selectors, sometimes dimmers, sometimes proprietary things. Sometimes all at once: that’s SYMFONISK.

Drivers translate all those different behaviours to common actions like pushed, held or double. That’s why adding support for a different model is far from just adding a fingerprint, usually you need a brand new “translator”, technically known as a message handler, especially with IKEA stuff.

The SYMFONISK gen2 remote

I’ve purchased a SYMFONISK gen2 remote to play with. Box says 2336 and comes with the modern 1.0.35 firmware where things work differently to the older ones (the jungle again :palm_tree:).

It’s a Frankenstein! :robot:

  • Buttons + / - are meant to be a volume control for Sonos and behave like a dimmer, they even generate multiple Held actions per second if you keep the button pressed. Funny thing: for other models I added an auto-fire feature to automatically repeat the Held and here I added the opposite feature to suppress the repetitions! :rofl: Otherwise I couldn’t use it to toggle lights on Held, it would toggle multiple times.
  • Play / Prev / Next don’t support held, only pushed :expressionless:. Boring! The driver adds an optional double-tap up to a useless but pretentious sextuple-tap :sweat_smile:.
  • Dots use custom clusters, like the SOMRIG, they support pushed, held and double-tap. Even clusters are different in old and new firmwares. The driver tries to account for both albeit only tested in the new one.

The custom features

Have the old firmware?

I’ve only tested the driver in my unit with modern firmware. If you have old versions, either update the firmware or test it and see what works. The button is already documented thanks to other communities so I accounted for old versions too but could not test it. I expect most buttons to work, the breaking changes between old and new are the dots.

Credits

The handler and the custom features are all original work but would not exist without existing knowledge. I found this zigbee2mqtt device info, this hubitat driver and this zigpy discussion with logs comparing both firmware versions extremely helpful to navigate the messaging-maze.

7 Likes

I’ve published the source code so you can look at the handlers for each device to build your own driver or reuse any of the original custom features which are implemented in a generic way with a fair amount of comments.

While it is on github, the idea at the moment is just sharing the current code. I’ve disabled as much collaboration features as possible :sweat_smile:.

If there’s any issue let’s talk about it here. If you have any request, the same. Github does not allow to disable pull-requests but mind I might not accept any.

Hope it is useful for you anyway! As you may have noticed, the source combines all the drivers yet the one for the new firmrware version of STYRBAR is actually published as standalone in the channel so the fingerprint does not fight with existing drivers which use different bindings.

Tagging @lmullineux who asked for the RODRET driver source few posts above, it’s the simplest one by the way. The actual fun is the STYRBAR with all the handling to support the holding arrows message-feast.

5 Likes

The family is growing! Added support for TRADFRI on/off and TRADFRI 5-button! :partying_face: Should work with modern firmware versions too! (24.x)

I think I have enough buttons for a while…

Stock drivers already supported TRADFRI so, why?

  • Labels, I never remember what is button2 or button5 in the stock profile.
  • Custom features like multi-tap or toggled up on release.
  • Compatibility with modern 24.x firmwares released in 2023. At least in theory… it uses the mandatory device bindings of new versions, tested to work in the old ones, and checks the firmware version to apply the correct battery readings. The stock one would report double the battery in new firmwares and, if it works like in other new models, buttons might not register events.

Users with working stock TRADFRI drivers

  • Just switch the driver, no need to pair again. I preserved the button IDs of the stock drivers so your automations / actions don’t notice any difference.

Users with non-working new versions

  • Delete the device, uninstall any custom driver handling the device, install this one, touch wood, add the device. Let me know if it works because it’s not really tested with new Tradfri versions :sweat_smile: They don’t sell them anymore, SmartThings cannot update the firmware and I don’t have Zigbee sticks or IKEA hubs to update them.

Will take a few hours to auto-update as usual.

8 Likes

Thanks for adding the older buttons. :grinning:

4 Likes

Anytime! Old buttons play nice with Toggled-Up on release and auto-fire, they can be awful with multi-tap. My units at least are slow and have a bad habit of debouncing and delaying consecutive presses, even if it’s just a double-tap. I get it, they are on/off/toggle buttons, why would someone press them twice :rofl:.

Just having meaningful labels was worth the addition!

5 Likes

mocelet, you are a wizard!! These are the best set of drivers I have added to my ST - so easy to configure and you added all the great functions, like double click etc. THANK YOU!!!

2 Likes

New update (2024-03-27), will take few hours to auto-update:

  • Better Fast Tap tweak for Somrig and added to Symfonisk too. Now hides the disabled held/double actions instead of just asking you to ignore them :see_no_evil:. Newer firmwares of Symfonisk support it too, so you can make the single-tap of the dots as fast as the other buttons, not waiting almost a second for a possible held/double-tap if you don’t use those actions.
  • General improvements: better wording, cleaner code, takes even less space thanks to some refactoring! Now it’s easier to maintain and add future buttons or custom features.

As in any tweak that changes available actions, you may have to exit the device screen and come back again to see the changes.

I’ve noticed that sometimes SmartThings does not correctly update the preferences, maybe it uses a cached value or it’s just a bug. If you feel a preference is not doing what it should, you may need to switch the preference and then switch it back again so it’s correctly set.

Glad they’re useful! I’ve learnt a lot in this magical Edge adventure :mage:. It’s a pleasure seeing that people are using the custom features too!

I believe the drivers are feature complete now so I guess updates from now on will be mostly fixes if I broke anything with the code refactor or if there are changes in firmwares.

5 Likes

Editing this, was too long. I’ve found a firmware bug in SOMRIG which will generate ghost events, more especifically single-taps or double-taps that should not be there.

Steps to replicate (all within a second):

  • Hold button
  • Release button
  • Push button

Expected outcome: a Held event and then a Pressed
Actual outcome: a Held event and a Double-Pressed instead :ghost:

Sometimes happens due to a bad debouncing when you are naturally releasing a button after held, especially if it’s a long-press.

A double-tap (0x06) milliseconds after releasing the button (0x04) should be impossible, yet…

2024-03-29T06:45:26.154339567Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x04
...
2024-03-29T06:45:26.414914401Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06

For reference, this is an actual double-tap:

2024-03-29T06:46:23.249518199Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
...
2024-03-29T06:46:23.968267491Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06

It’s either a bug or an undocumented feature but the only way to know if it’s a ghost or not is looking at the times of past events. If it follows a 0x04 (release) it’s a ghost because a physical double-tap goes after a 0x01 (first press).

I’ve implemented a detection for this condition and called the feature ghostbuster :sweat_smile: It’s not published yet, there is more to it.

The basic detection works:

2024-03-29T09:25:47.703228578Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x04
...
2024-03-29T09:25:47.832453078Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-29T09:25:47.844944620Z DEBUG Ikea Button Tweaks  Ghost event suppressed

But I kept pushing it and SOMRIG went crazy. Definitely lacks a proper debouncing. The following are all ghosts pressing the button just on the edge of making contact but, of course, the easy one to tell is the first one. Three “real” double taps in 300 milliseconds? Not even humanly possible. That can’t be fixed without hurting the multi-tap feature. Suppressing the ghost after release (0x04) is enough most of the time, just press it correctly and release it at once :rofl:

2024-03-29T14:12:28.883254080Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x04
2024-03-29T14:12:29.259461330Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-29T14:12:29.264718663Z DEBUG Ikea Button Tweaks  Ghost event suppressed
2024-03-29T14:12:29.350493997Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
2024-03-29T14:12:30.641151914Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-29T14:12:31.429520830Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
2024-03-29T14:12:31.883491497Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-29T14:12:32.473570206Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
2024-03-29T14:12:33.033568622Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-29T14:12:33.311863247Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
2024-03-29T14:12:33.391921914Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-29T14:12:33.519071122Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
2024-03-29T14:12:33.579496914Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-29T14:12:33.647150622Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
2024-03-29T14:12:33.692385164Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06

Just for fun I’m working on the ultimate ghostbuster, that unfortunately does not catch 100% of the ghost presses but it is way smarter to detect a ghost chain of events if the ghosts wreak havok:

2024-03-30T06:53:39.407711865Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x04
2024-03-30T06:53:39.749051324Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-30T06:53:39.767688907Z DEBUG Ikea Button Tweaks  Ghost tap suppressed
2024-03-30T06:53:39.851437740Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
2024-03-30T06:53:39.856643824Z DEBUG Ikea Button Tweaks  Ghost first-press suppressed
2024-03-30T06:53:40.123465240Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x06
2024-03-30T06:53:40.128390782Z DEBUG Ikea Button Tweaks  Ghost tap expected after flagged first-press suppressed.
2024-03-30T06:53:40.240555074Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x01
2024-03-30T06:53:40.245718991Z DEBUG Ikea Button Tweaks  Ghost first-press suppressed
2024-03-30T06:53:40.981232699Z INFO Ikea Button Tweaks  Executing ZclClusterCommandHandler: cluster: 0xFC80, command: 0x03
2024-03-30T06:53:40.986455616Z DEBUG Ikea Button Tweaks  Ghost tap expected after flagged first-press suppressed

Will eventually update the driver when I’m happy with the fix, doesn’t seem urgent since it’s actually hard to replicate using the button “normally” and want to make sure it does not have false positives.

3 Likes

New update (2024-03-31T13:43:59.8509469)

  • Somrig: Fixes the ghost double-tap issue explained in the previous post, ignoring the double-tap event if it comes after a release event (0x04) instead of a first press (0x01). I tried more approaches to detect ghosts following the first one but decided to keep it simple.

  • Symfonisk gen 2: Held action rate limiter. By default the button repeats the Held event while pressed, that’s why initially I included the repeat suppressor. However, you may want the auto-repeat behaviour, but not at unpredictable rates, for instance to increment a virtual counter and switch scenes or control volume and whatnot. Now you can enforce a minimum time between triggers of the Held action so whatever you’re controlling does not change too fast. 800ms is a good value for the aforementioned use cases.

3 Likes

With all your driver updates which button is better the RODRET or SOMRIG!

1 Like

Good question! It depends…

SOMRIG is nicer to the touch and it’s not that noisy, plus comes with a translucent plastic cover to place labels underneath. Has native double-tap too although that makes the single-tap slow (that you can make fast with the driver but losing held and double).

RODRET has a loud click, but the button is better. It’s fast and the driver multi-tap works great with it. In SOMRIG it’s better to use its native double-tap.

4 Likes

Hi All,

Not sure whats happening on my end, but I am not able to select edge drivers from here.

I have installed the Edge driver, removed and added the button again but it defaults to Smartthings driver and it is not picking the edge driver and not allowing me to manually select that too as seen below - Any help?



I don’t know, if you installed it recently, sometimes SmartThings takes a few hours to recognise there’s a custom driver.

Which button is it by the way?

Edit: I see you have a post asking for the TRADFRI shortcut button, that one is not compatible with my driver.

ah ok! Which driver should I use then? @mocelet

Did you try this one? It says it is compatible: [ST Edge/Beta] Buttons and remotes Edge Driver (Aqara,IKEA,Tuya)

Another problem with IKEA buttons in general and old ones in particular is that there are different firmware versions with different behaviour, that’s why you may read in forums that some driver works but it might not for you.

2 Likes

Hi, I was wondering if your ST drive is also compatible with the Ikea smart blinds button (Type E1766 TRÄDFRI Open/Close Remote). I installed the drive and even waited about a day; however, when I go under the button settings to select your drive, it doesn’t come up. If it’s not compatible at this moment, I hope it will in the future because the way it is at the moment in ST, it doesnt work half the time when the button is pressed to open/close the blinds. Thank you.

No, it’s only compatible with the models in the first post, mostly the new buttons and the old on/off and 5-button.

If the button is not reliable with the official SmartThings driver, a custom driver will not fix it anyway.

Edit: Actually, it happened to me twice in RODRET and once in SOMRIG that I had to remove the battery and place it again or it would not send any event at all. It’s not the driver because it does not even get to receive anything, so it’s either a bug with IKEA firmware or a bug with SmartThings and the recent issues with Zigbee.

Oh, I see. I hope that eventually, the button gets improved in ST since family members have a hard time with the smart home and like manual switches/buttons instead. Thank you.