Feature Request: Relative Brightness control / Step Dimming for Lights and Groups

Over the years, the community of smart button users has been looking for workarounds so a button can increase or decrease the brightness level of lights. From complex routines checking current values to custom drivers for the lights to virtual devices like the scene switcher or the recently published virtual dimmer with steps.

Feels like it’s about time to make increase / decrease brightness a stock feature. Google Home supports relative brightness in their script editor (ironically they don’t support buttons yet) and Alexa has increase / decrease brightness routine actions (hardcoded to 25% though, please don’t hardcode it - like the Sonos driver for relative volume actions which are harcoded to 5% and not even exposed to the mobile app).

Since the idea would be to make it available to every light and group with dimmer level control, a good strategy would be:

  • For cloud devices add the desired step to the current cached dimmer level and change the absolute level. The integration would not be affected.
  • For groups, use the group dimmer level as reference, add the step and set the absolute level, again, integrations not affected.
  • For Zigbee and Matter devices it would be nice to use the native Step level command, which is better as it’s the light running the action and does not depend on the cached state. It would require just a few new lines in the Zigbee and Matter driver. Bonus points if there’s a command like stepLevel(size, transition_time), similar to the existing setLevel(level, rate), so the step is smooth and not harsh.
7 Likes

I hired an UX/UI designer and he came up with this idea for the device presentation:

1 Like

That’s a good idea so it’s the same “language” everywhere (app/routines). In the app an increase and decrease button and in routines an increase and decrease action, with the actual step size in settings which can be a sensible default.

Although, being realistic, they could start with routine actions, adding a stepLevel(size) command to the switchLevel capability for instance, so at least users can use the Rules API with smart buttons even if there’s no UI at all. Then expose it to the routines in the app with a nice slider.

2 Likes

Hi @nayelyz , I’m always tagging you because I don’t know if there’s a better way to submit requests for production capabilities :sweat_smile:

The switchLevel production capability used in lights has the setLevel(level, rate) command for setting an absolute level with optional transition time but it lacks a command to set a relative level, useful for smart buttons as discussed in the first post.

The proposed command is:

stepLevel (step_size, transition_time)

  • step_size being how much to change the level relative to the current level, an integer from -100 to 100.
  • transition_time would be an integer like the rate of setLevel so the change is smooth.

As discussed earlier, in Matter and Zigbee there’s a native StepWithOnOff command so the light does the job. For other devices, the capability already stores the level attribute so adding or substracting the step_size does not seem too complicated.

1 Like

Hi, @mocelet

I’ll create a request for the engineering team.
However, I can’t promise it will go through because it depends on their analysis and it’s difficult for me to get feedback on whether this was accepted or not and when it would be implemented.

4 Likes

Brute force this with a pull request. Doesn’t need to be perfect but at least they have to react… :grin: