Use try: finally: to run the threads - this way, exceptions will not stall the thread, just cause log spam.
Removed spammy debug from user_active.
Handle set failure as well (revert state).
set_state now returns value so device_tracker can use it to determine if set succeeded.
New, improved sid-enabled event subscription code.
Fixed the start.py to actually work again.
Fixed the failure check for resubscribe logic - hopefully.
If next update <= 0 seconds, just assume it is second, not instantly (=busyloop).
Some refactoring to allow for device URL changes - it seems sometimes port migrates e.g. from 49152 -> 49153 -> 49154 :p