Indeed, I could not find a node or flow in Node-RED library that address this need.
The subject of dimming light has already been discussed once in our forum and people provided a lot of insights and suggestions.
This smoothing problem resembles somewhat the capabilities that CSS give us to "ease" transitions.
It is feasible to build a solution without using timer functions (setTimeout , setInterval) since the smoothing factor depends only on the time elapsed since the beginning of the fading (only subtracting current time from the start time). Plenty of smoothing functions can be created based on easing functions or bezier curves.