[Edge] Unlock IKEA BILRESA scroll wheel and dual button

The ST detect all the clicks and the scroll wheel…. But dont work well… maybe my automations are wrong, i dont know. And the button works well on HA.
I scroll to left and do the opposite than the automation i set up :smiley:

Is the event history correct? What kind of automation are you creating?

Are you sure the problem is a SmartThings automation and not a Home Assistant automation?

ST automation. Just dimm a group of lights

That will set the brightness to 100% when you swipe left, and set the brightness to 1% when you swipe right. Is that what you want?

Also, since that action lasts 5 minutes and it’s a SmartThings cloud thing I’m not sure what’s the behaviour if the action runs twice… maybe you have multiple actions running simultaneously.

I have just that… Left dim down, right dim up

I woud try with other actions like setting a colour red for left and a colour blue for right for instance, at least you can rule out the driver as the issue. I’m pretty sure the driver has no bugs regarding events and there’s only one firmware version.

Those dim down and dim up routines of SmartThings don’t start with the current brightness, they start at 100% to dim and start at 1% to brighten.

well, it works now… i must have lights and billresa on same driver, and put dimmer to -15 or +15 when i put to left or right.

Sorry for the double post, but you can make this driver compatible with this shelly remote?

Sorry, that’s not Matter and the way it works with three different ZigBee group bindings would need a driver made from scratch just for it.

I think it’s better if you use that Shelly remote by binding to Zigbee lights instead of trying to create automations or use it for other kind of devices.

Works on HA so i will keep to use on there :slight_smile: Thanks anyway :smiley:

Trying to understand how to use the scroll wheel to smoothly change temperature as well. I mirrored your example for the brightness, but it does not seem to work.
Rule is validated fine
ref [Edge] Matter Playground - #46 by TapioX

[
   {
      "if":{
         "greaterThanOrEquals":{
            "left":{
               "device":{
                  "devices":[
                     “bilresaid”
                  ],
                  "component":“group2”,
                  "capability":“panelorange55982.scrolledSectors”,
                  "attribute":"scrolledSectors",
                  "trigger":"Always"
               }
            },
            "right":{
               "decimal":-100
            }
         },
         "then":[
            {
               "command":{
                  "devices":[
                     “lightid”
                  ],
                  "commands":[
                     {
                        "component":"main",
                        "capability":“panelorange55982.colorTemperature”,
                        "command":"setColorTemperature",
                        "arguments":[
                           {
                              "device":{
                                 "devices":[
                                    “bilresaid”
                                 ],
                                 "component":“group2”,
                                 "capability":“panelorange55982.scrolledSectors”,
                                 "attribute":"scrolledSectors"
                              }
                           },
                           {
                              "integer":30
                           }
                        ]
                     }
                  ]
               }
            }
         ]
      }
   }
]

On a sidenote, is there no docs for any of these? Even for these capabilities name I had to look through comments on here :slight_smile: @mocelet

What is the purpose of this? This is not in the @mocelet model.

You are partly using different styles of quotation marks. RulesAPI is using neutral quotation marks.

April 16th update. SmartThings app now allows linking the scroll (if using this custom driver, stock drivers do not support that at the moment) to the colour temperature depending on the lights. If you can see the option in the app just use it and call it a day!

Jan 29th update. Edited response since new driver version 2026-01-29 offers more features.

The idea of the old scrolledSectors as step, or the new knob capability that is already available and is the recommended way, is that the button will provide a number between -100 and 100 and you pass that to a step command that expects a number from -100 to 100.

The stepLevel command to dim takes a percentage and steps (adds or substracts) the percentage, that’s why it works, it perfectly matches and a full rotation fully dims the light.

For the temperature you need a step command which takes a relative value, not a set which takes an absolute value. Right now your rule is setting temperature to negative numbers or up to 100 K, that’s why it doesn’t do what you expect.


Easy option. Use the app

Forget the Rules API, delete the rule and use a basic control for now. Make Swipe Left step the temperature in one direction and Swipe Right in the other. For instance using the new action that takes a relative temperature percent:

Advanced option. Use stepColorTemperatureByPercent

The best way to achieve temperature control with the scroll is the new capability statelessColorTemperatureStep and the command stepColorTemperatureByPercent, passing the step value with a Rule like in the brightness example. BTW, I’ve asked SmartThings to add the transition time but would be surprised if they do.

That command takes a percentage so a full rotation right goes to the coolest temperature allowed and a full rotation left to the warmest, with any partial rotation increasing or decreasing proportionally.

Would look like this:

"capability": "statelessColorTemperatureStep",
"command": "stepColorTemperatureByPercent",

Those are the best options now, the advanced one provides a better experience. I guess SmartThings will eventually add the capabilities required to every light supported by SmartThings so you won’t even need a custom driver for the light or the button at all.

Regarding documentation, you can check the capabilities and commands available in the advanced website, the command names and arguments are self explanatory most of the time and if it starts with panelorange it is a custom capability. This post is the documentation though, which is more focused in real use cases. In fact I didn’t mention the temperature since changes were coming :slight_smile:

New version 2026-01-29 to revamp the advanced scrolling features.

I’ve updated the instructions to use the scroll to dim because the driver now implements the official knob capability and rotateAmount attribute to communicate the step value.

The old scrolledSectors as step options are still there and work but are no longer needed, feel free to migrate to the knob capability to simplify things.

Change colour temperature by scrolling

Matter Playground now implements the official statelessColorTemperatureStep capability and the stepColorTemperatureByPercent command so I’ve updated the previous comment regarding using the scroll to change temperature.

In fact, you can go one step further with the Rules API and use the rotateAmount attribute of the knob for brightness control and the heldRotateAmount attribute for colour temperature control while long pressing the wheel. Scrolling the wheel while pressing it is extremely awkward though and you end up triggering other events but I find it convenient sometimes. You can disable the heldRotate events in settings if you find them annoying.

Click here to show Rule controlling colour temperature with the scroll while long-pressing the wheel. For normal scroll just use rotateAmount instead of heldRotateAmount
[
  {
    "if": {
      "greaterThanOrEquals": {
        "left": {
          "device": {
            "devices": [
              "BILRESA-SCROLL-ID"
            ],
            "component": "main",
            "capability": "knob",
            "attribute": "heldRotateAmount",
            "trigger": "Always"
          }
        },
        "right": {
          "integer": -100
        },
        "changesOnly": false
      },
      "then": [
        {
          "command": {
            "devices": [
              "LIGHT-DEVICE-ID"
            ],
            "commands": [
              {
                "component": "main",
                "capability": "statelessColorTemperatureStep",
                "command": "stepColorTemperatureByPercent",
                "arguments": [
                  {
                    "device": {
                      "devices": [
                        "BILRESA-SCROLL-ID"
                      ],
                      "component": "main",
                      "capability": "knob",
                      "attribute": "heldRotateAmount"
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
]

New version 2026-02-21 makes BILRESA scroll wheel more useful:

  • Better scrolling while held detection. If you use knob heldRotateAmount events to change the colour temperature while pressing the wheel, now it’s rare that it will be mistaken by a regular scroll (rotateAmount) and do a brightness change instead.

  • Scrolling while held no longer triggers Toggled Up, i.e. the release after the held. That’s so you don’t need to sacrifice the long press action if you use the scrolling while held feature: you can use the Toggled Up instead of Held for the long press action since that one will only trigger if you did not scroll during the long press.

It also borrows a couple improvements from stock drivers like an early knob step as soon as the wheel reports something and using Button category instead of RemoteController so it displays another icon with more resemblance to a dial.

I published another video in reddit showcasing the scroll while press.

Can you please confirm if the knob functionality is supported in the ST app? I can’t find any options for the knob. Unfortunately, the swipe up/down conditions work very erratically for me.

If you want to use the knob capability for a better scrolling experience, right now you need the Rules API and create a rule like the one in the example. In fact, you can do that with the stock driver already.

SmartThings talks in GitHub about an app plugin for this model but so far is not in production. In any case, the plugin is probably just a nice user interface, nothing you can’t do with a rule.

except the rule fails with error 422 for me, I’m using smartthings cli

smartthings rules:create -i ~/scroll-wheel-to-dimmer-rule.json -j


[

  {

    "if": {

      "greaterThanOrEquals": {

        "left": {

          "device": {

            "devices": ["f699c587-a390-4b4e-84e2-b610e133ae09"],

            "component": "main",

            "capability": "knob",

            "attribute": "rotateAmount",

            "trigger": "Always"

          }

        },

        "right": {

          "integer": -100

        },

        "changesOnly": false

      },

      "then": [

        {

          "command": {

            "devices": ["1db2d730-780c-4b27-8183-2301feb5852f"],

            "commands": [

              {

                "component": "main",

                "capability": "statelessSwitchLevelStep",

                "command": "stepLevel",

                "arguments": [

                  {

                    "device": {

                      "devices": ["f699c587-a390-4b4e-84e2-b610e133ae09"],

                      "component": "main",

                      "capability": "knob",

                      "attribute": "rotateAmount"

                    }

                  }

                ]

              }

            ]

          }

        }

      ]

    }

  }

]

Remove the [ ] from the input. See here for examples.

I see, the json in the example is the actions value that you can just paste in the Advance website when creating a new Rule. Way easier than the CLI.

Edit: In https://my.smartthings.com/advanced/rules click the Add Rule button and paste the rule in the Actions section. Would look like this:

I’ve added the screenshot next to the rule to avoid further confusions.