It’s not about fading properly with CoRE… as I’ve said above, CoRE takes the time given divided by % difference required, and that becomes your step size, so a large % change over a short time will be big, juddery steps.
The Fibaros do indeed have a built in fade setting which is very smooth, but it’s part of the parameter settings not a straight command that can be sent.
So if you want it to fade slowly always, Fibaros will work nicely, but if you only want t to fade slowly at certain times and turn on/off quickly at other times, it won’t be ideal.
There is however a way to send parameter settings to a Fibaro via CoRE, so in theory you could do this:
Set parameter to x speed fade
Wait 5 seconds (to allow parameter to take hold)
Set level to x
Wait x minutes (for fade to complete)
Set parameter to Normal speed fade
Clunky and probably unreliable but might work!!