[Beta] [Release] Ikea Styrbar

In case that can help someone: I had a similar issue to @dewhite04, no problem registering the device, but no events were sent pressing the buttons. After quite a few fruitless resets/reconnects, what finally worked for me was to pair the device while being close to the hub. So thanks @Vincent_The_Staat , another happy user of your driver :slight_smile:

1 Like

Button 1 and 4 press, held, release are working perfectly. For 2 and 3, only press is working, when holding 2 or 3, it register as button 1 presses instead. anyone having the same issue?

I found the problem. For some reason my device is sending a different message when holding the buttons. Here is my revised hold script, i've added msg.data for button 1 & 4 hold. And changed the clusterId for button 2 & 3.

For some reason, the catchall strings for button 2 & button 3 hold are identical, any idea how to distinguish them?

Model number on the back of the device is E2002, not sure if that helps.

		//-------------------------------Hold commands--------------------------------//
        } else if (msg.clusterId == 8 && msg.command == 05 && msg.data == [0, 83]) {
            def button = 1
            atomicState.releaseButton = 1
			if (txtEnable) log.info "Button $button held - Top button"
            map.name = "Button $button held"
            hold(button)
	    } else if (msg.clusterId == 5 && msg.command == 9 && msg.data == [0, 0]) {
            def button = 2
            atomicState.releaseButton = 2
			if (txtEnable) log.info "Button $button held - Left button"
            map.name = "Button $button held"
            hold(button)
        } else if (msg.clusterId == 5 && msg.command == 9 && msg.data == [0, 0]) {
            def button = 3
            atomicState.releaseButton = 3
			if (txtEnable) log.info "Button $button held - Right button"
            map.name = "Button $button held"
            hold(button)
	    } else if (msg.clusterId == 8 && msg.command == 01 && msg.data == [1, 83, 0, 0]) {
            def button = 4
            atomicState.releaseButton = 4
			if (txtEnable) log.info "Button $button held - Bottom button"
            map.name = "Button $button held"
            hold(button)

It appears the new styrbar firmware version breaks this driver. I posted about it here. IKEA STYRBAR pairing issues

I'm not expereinced enough to make a revised driver, but I'm going to give it a go slowly, unless someonce can point me to the issues?

The new fingerprint info is

infofingerprint profileId:"0104", endpointId:"01", inClusters:"0000,0001,0003,0020,1000,FC57,FC7C", outClusters:"0003,0005,0006,0008,0019,1000", model:"Remote Control N2", manufacturer:"IKEA of Sweden"

Any thoughts or similar experiences?

1 Like

I just bought one and updated akafester code to resolve left and right buttons not reporting properly.

Code can be found on:

3 Likes

There was a further FW update for Stryvar which broke the fix for the side buttons. I'm back to the OG driver for now.

Do you know what firmware you;re on now/broke the driver code fix?

I'm curious if your driver is still working for you. When I switch the driver from the OPs original driver to your driver, I'm unable to get the buttons to register any pushes. To confirm, I did click the configure button in the settings to initialize it. Could I be missing another step?

My firmware appears to be the older one, 117C-11CB-00010024, so I was hoping it would work.

I just saw your comment and tested my devices and they all work (I tested all buttons).

Here is my driver information (which is same as yours):
endpointId: 01
application: 01
firmwareMT: 117C-11CB-00010024
manufacturer: IKEA of Sweden
model: Remote Control N2
softwareBuild: 00010024

The driver is type User, Name: Ikea Styrbar

You might want to put the device in "Enable debug logging" to see what is happening as you press buttons. When you are using my driver and having debug on, you will see various "parse" and "cluster" messages.

Good Luck.

I enabled the debug log and this is what I'm seeing when I press the up and down buttons.

dev:27162023-10-14 04:59:01.139 PMdebugSmartShield(text: null, manufacturerId: 0x0000, direction: 0x00, data: [], number: null, isManufacturerSpecific: false, messageType: 0x00, senderShortId: 0x5154, isClusterSpecific: true, sourceEndpoint: 0x01, profileId: 0x0104, command: 0x00, clusterId: 0x0006, destinationEndpoint: 0x01, options: 0x0040)
dev:27162023-10-14 04:59:01.135 PMdebugParse description catchall: 0104 0006 01 01 0040 00 5154 01 00 0000 00 00
dev:27162023-10-14 04:58:59.564 PMdebugSmartShield(text: null, manufacturerId: 0x0000, direction: 0x00, data: [], number: null, isManufacturerSpecific: false, messageType: 0x00, senderShortId: 0x5154, isClusterSpecific: true, sourceEndpoint: 0x01, profileId: 0x0104, command: 0x01, clusterId: 0x0006, destinationEndpoint: 0x01, options: 0x0040)
dev:27162023-10-14 04:58:59.559 PMdebugParse description catchall: 0104 0006 01 01 0040 00 5154 01 00 0000 01 00

Anything catch your eye with these messages?

Yes. It looks like you pressed the UP button (button #1) & then the DN button (button #3). Here is my log:
dev:20122023-10-15 03:13:25.295 PMdebugbuttons 1 or 3 pressed
dev:20122023-10-15 03:13:25.292 PMdebugclusterId= 6, Msg.command= 0, atomicState.releasecalled 0
dev:20122023-10-15 03:13:25.290 PMdebugSmartShield(text: null, manufacturerId: 0x0000, direction: 0x00, data: [], number: null, isManufacturerSpecific: false, messageType: 0x00, senderShortId: 0x587d, isClusterSpecific: true, sourceEndpoint: 0x01, profileId: 0x0104, command: 0x00, clusterId: 0x0006, destinationEndpoint: 0x01, options: 0x0040)
dev:20122023-10-15 03:13:25.285 PMdebugParse description catchall: 0104 0006 01 01 0040 00 587D 01 00 0000 00 00
dev:20122023-10-15 03:13:21.888 PMdebugbuttons 1 or 3 pressed
dev:20122023-10-15 03:13:21.884 PMdebugclusterId= 6, Msg.command= 1, atomicState.releasecalled 0
dev:20122023-10-15 03:13:21.880 PMdebugSmartShield(text: null, manufacturerId: 0x0000, direction: 0x00, data: [], number: null, isManufacturerSpecific: false, messageType: 0x00, senderShortId: 0x587d, isClusterSpecific: true, sourceEndpoint: 0x01, profileId: 0x0104, command: 0x01, clusterId: 0x0006, destinationEndpoint: 0x01, options: 0x0040)
dev:20122023-10-15 03:13:21.874 PMdebugParse description catchall: 0104 0006 01 01 0040 00 587D 01 00 0000 01 00

here is an image of the device when I press button #1 (UP)

Here is an image of the device when I press button #3 (DN)

You can see pushed changes from 1 to 3.

This is very strange. When I push up and down, the "current states" does not show that any buttons are pushed. If I switch back to the original driver code, it will show that the buttons are pushed. Maybe I should try removing the device.. re-add, then choose your driver.

After removing and re-pairing the device two times and switching back and forth between the different device types, I was able to get your driver to register button presses, but then after I tried holding one of the side buttons, it stopped registering the button presses again. This is super weird.

I updated the code (download from https://github.com/BMX4605/Hubitat/blob/main/Drivers/IKEA%20Styrbar/IKEA%20Styrbar.groovy) to further correct the behavior of buttons 2 or 4 held/released. new version is 0.1.2.

Make sure you enable the following on your device:
Enable debug logging
Enable descriptionText logging

3 Likes

ive just got one of these today, its paired okay, but it doesnt register button pushes or anything in the logs, ive reset an paired it quite a few times now, no luck

have a look at these drivers - much more up to date for all things IKEA, especially STYRBAR

1 Like

Hi there. Did you ever get your to work?