__switch_level_step_transition_time handler

0.61.5 doesn’t seem to implement the configurable transition time for the native Matter handler used by knobs to improve performance, it seems to use a hardcoded 0.3 seconds.

A confirmation about the feature being present or not would be nice, at least to know if I’m doing something wrong.

Hi @mocelet

The team reviewed this and confirmed that overriding __switch_level_step_transition_time should work as expected, and it shouldn’t depend on the persist flag.

To help us investigate further, could you please share hub logs showing the test where you attempt to change the transition time?

Provide the Hub logs through the my.smartthings.com:

  1. In the my.smartthings, enter “your hubs”
  2. Enter the corresponding Hub
  3. Click on “Dump Hub Logs”
  4. Change the reason for requesting hub logs if needed
  5. Click on “Dump Hub Logs”
  6. Confirm that the request is submitted
    Note: If you have more than one Hub, the name of the one involved in the issue.

This will allow us to better understand what’s happening on your side and compare it with expected behavior.

Thanks.

Done!

This is the call to the native handler:

2026-06-06T06:51:13.131072935Z INFO Matter Lights Playground hub handled command: d9f0e93c-0e08-4ee2-985f-19d6e556a6f9:main:statelessSwitchLevelStep:stepLevel [70]

It is not using the field set in __switch_level_step_transition_time which was 50 for the test, instead it is using the default 3 tenths of a second.

Does not work either when setting 0 in the field, it will still use 3.

Also, I have logs for the __native_context_fields field used by Lua libs to sync the fields and it is empty when, as I understand, should have the names of the fields expected by the native handler.

Hi @mocelet
We checked with the team, and they were able to reproduce the behavior successfully using the following approach:

device:set_field(fields.TRANSITION_TIME.SWITCH_LEVEL_STEP, payload, {persist = true})

Where payload is a number between 0 and 100 representing tenths of a second.

The team mentioned that the key piece is using {persist = true} when setting the field.

Could you try that approach and let us know if it makes any difference?

So that was it! That explains why the native context fields of Lua libs were empty since they are not used at all for this particular handler, completely misled me.

There was another issue on my side, I had to wrap the number of tenths calculated from the preferences in seconds with a math.tointeger() for the field to work as expected. If it’s not an integer it uses the default apparently.

Anyway, seems to be working now and when changing the preferences it has effect in the handler, thanks so much @Itati and the team!