Push to hold to dim


Im sure this may have been asked - if so please point me to the solution.

I have several buttons / remotes of various brands
Ikea, benexmart, fibaro

All pair brilliantly, all are responsive.
However within smartthings i have the option to press, double press, triple press and then Hold.
Hold will allow a single action to be triggered. What id like is for Hold to progressively dim or brighten as the button is held.

Smartthings have said its a limitation of the smart app or device handler specific to the device type.
The old rotational ikea dimmers worked a treat but are no longer available and have been replaced by buttons. I also have some benexmart switches and fibaro remotes for the garden which would be great for dimming and/or volume control

Anyone helpe or point me in the right direction.

Thanks in advance

To the best of my knowledge, SmartThings still does not support a “Released” type of event from a Button Controller device. Without that, it is not really possible to achieve your goal. I use Lutron Pico remotes on Hubitat, which support “pushed”, “held”, and “released” events. This allows for automations that start dimming up/down when the button is either pushed or held, and then stop dimming when the released event is received. It works amazingly well. I have added wall-mounted Pico remotes to numerous rooms in the house that are then used to control Philips Hue bulbs that are installed in table/floor lamps. I can then easily turn the lamps on/off and dim them either up or down. They operate the exact same way that my Lutron in-wall dimmers behave, so users have only one paradigm to learn.

Here is one of my wall plates, that includes one Lutron Caseta dimmer switch and one Lutron Pico remote. The dimmer switch controls an overhead light fixture, while the Pico controls a Hue bulb in a desk lamp.

Update: Looks like you may be from the UK, which means no easy access to Lutron Caseta devices. Sorry if I took things off on a tangent.

Also, Pico remotes do not work with SmartThings natively the way they do with Hubitat. I just didn’t want anyone to believe I was implying that they do. :wink:


Use ABC Manager
You can increase/decrease lights and light temperature.


Yea, this is about as good as it gets on the SmartThings platform - and it is a very workable solution. I also use ABC on the Hubitat platform! Great SmartApp written originally by @stephack for both platforms. It is still my most used Community App!

On ST, it does require multiple button held events to each ramp the dim level either up or down. It is so nice simply being able to hold a button and watch the light brighten or dim, and then release the button at the correct level. It’s the little things like this that really improve the acceptance of my hobby amongst my family! :slight_smile:


Quick question. Does the hold down button to increase brightness on smart bulb work on ST…or do you mean it works on Hubitat but on ST it requires one to repeatably press a button to ramp it up by a percentage each time?

On ST, I believe one would need to repeatedly press the button to ramp the level up or down by a percentage. This is because I do not see any “Released” type of event being supported natively by SmartThings per their standard Capabilities documentation.

On Hubitat, one has access to ‘pushed’, ‘held’, and ‘released’ events. Thus, upon receiving a ‘held’ event the hub can ‘start ramping’ a light, and upon receiving a ‘released’ event, can ‘stop ramping’. Hubitat even supports the Zigbee start/stop ramping functionality, meaning the zigbee bulbs actually do the work, as opposed to having to implement looping/ramping logic on the hub.


You can just Hold button and it will gradually increase/decrease. Graduality depends on how you set up ABC manager.

I am not seeing how that happens in the ABC Manager SmartApp… Not saying it doesn’t, but I just can’t see how that would be possible on SmartThings. ABC on Hubitat? Yes, it works great.

Here are the functions with the ST ABC SmartApp that are responsible for increasing or decreasing the level of a light or selection of lights. It looks to me like for each button event (either pushed or held), the light level will increase or decrease by a user selectable set amount. But, continuing to hold the button does not appear to continue to ramp the level up or down. Are you saying that you can set the user configurable increment/decrement level to 1, and then just hold the button and have it ramp the light level up from 1% to 100%? I am not seeing where that is possible in the ST ABC Manager SmartApp code from Paul Sheldon. Is there a different version that I should be looking at?

def lightDim(devices, level) {
  log.info "Dimming to $level: $devices"

def lightDimUp(device, incLevel) {
  log.info "Incrementing Light by +$incLevel: $device"
  def currentLevel = device.currentValue('level')[0] //currentLevel return a list...[0] is first item in list ie volume level
  def newLevel = currentLevel.toInteger() + incLevel
  if (newLevel > 100) newLevel = 100

def lightDimDown(device, decLevel) {
  log.info "Decrementing Light by -$decLevel: $device"
  def currentLevel = device.currentValue('level')[0]
  def newLevel = currentLevel.toInteger() - decLevel
  if (newLevel < 1) newLevel = 1 //Disable turning off light by dimming too low.

def lightDimOff(devices, dimLevel) {
  log.info "Toggling On/Off | Dimming (to $dimLevel): $devices"
  if (devices*.currentValue('switch').contains('on')) {
  else {
1 Like

I think in any case, until ST can execute the commands locally, the results will be wonky at best.

I had experimented with gradual incremental dimming, using 'held", but the latency makes it almost pointless.

1 Like

Please please help me by showing how in ABC smartapp in ST this would work. I am using inovelli dimmer and on/off switches that have similar multiple button events as zooz switches. But I can only get it to increase brightness per button event. So like every double click up the brightness increase by 15 % and 15% down on every double down click. But no hold down to ramp up…

1 Like