using threading.Event()s to synchronize
optionally use Event() for sleeping

so we can wake up early.
stp thread if we don't have an smbus