I’ll chime in with a situation I see when using cURL to toggle a thing property “on” between true & false values (turn Z-wave device on or off).
In my case, when the property changes to on=true the action is mostly instantaneous (< .5s) and reliable, no matter the previous state of the thing.
When the property changes to on=false (off) the action is often fast (< 2s) due to expected slow dim-to-off behaviour.
Occasionally, button presses changing to on=false, just hang for up to 30 seconds, and then eventually complete. Note that the cURL command includes a 30 sec timeout to prevent blocking (like this case)
At the end of 30 seconds, the thing almost always transitions to on=false (off) as I have pressed the button that initiated cURL a second time. I’ll have to avoid button-pressing off a second time to debug the flow of this…
So, what I have on my system is the GW receiving cURL commands that are blocking on the GW. At this point I’m not sure if the issue is with the GW, the Z-Wave dongle, or communication link issues to/from the Z-Wave device. I just know that it’s not 100% reliable when using the cURL to set a property (see: curl_examples/setProperty.sh)
Scheduled rules or manual toggling of the Z-Wave device on/off using the GUI are 100% reliable hinting that there is something fishy going on and blocking API commands.