Dont require devices, assume all thermostats have .present() and .away() (requires a custom device type - such as Nest), remove some unnecessary scheduling things.  Most importantly - if someone returns home after everyone has left - but before the state has changed, it will interrupt the state change to Away