I assume you have checked the device page for the switch, and confirmed it is still changing the motion attribute when you switch it?
There are other virtual switches out there, like this one, you could try instead. You can try triggering with lock or contact as an alternative, but it looks like you have already tried others.
I used to use virtual switches, but I moved to having Echo Speaks trigger my routines with the executeRoutineID command. So that is another option, though it is a pain to set up if you are not using Echo Speaks now.