[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?

1 Like

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.

1 Like

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.

1 Like

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.

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:

2 Likes

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"
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
]
4 Likes