  Smart environments (homes, factories, hospitals, buildings) contain an
increasing number of IoT devices, making them complex to manage. Today, in
smart homes where users or triggers initiate routines (i.e., a sequence of
commands), concurrent routines and device failures can cause incongruent
outcomes. We describe SafeHome, a system that provides notions of atomicity and
serial equivalence for smart homes. Due to the human-facing nature of smart
homes, SafeHome offers a spectrum of {\it visibility models} which trade off
between responsiveness vs. incongruence of the smart home state. We implemented
SafeHome and performed workload-driven experiments. We find that a weak
visibility model, called {\it eventual visibility}, is almost as fast as
today's status quo (up to 23\% slower) and yet guarantees serially-equivalent
end states.
