Microsoft has recently presented HomeOS, a platform designed for smart homes and presents users users and developers with a PC-like abstraction for technology in the home.
The operating system presents home's network devices (remotely controllable locks, lights, thermostats, cameras, motion sensors e.t.c) as peripherals with abstract interfaces, enables cross-device tasks via applications written against these interfaces, and gives users a management interface designed for the home environment.
Unlike past home technology models, which rely either on an "appliance abstraction," in which a closed, monolithic system supports a fixed set of tasks over a fixed set of devices, or a "network of devices abstraction," in which a decentralized collection of devices relies on interoperability protocols, HomeOS provides users and developers with a PC-like abstraction. It presents network devices as peripherals, enables cross-device tasks via applications, and gives users a management interface that is designed for the home environment. By so doing, the HomeOS overcomes the extensibility limitations of the appliance model and the manageability hassles of the network of devices model. At the same time, it brings the "app store" to the home environment, allowing users to extend the functionality of their home by downloading applications.
Microsoft says that HomeOS has already tens of applications and supports a wide range of devices.
It has been running in 12 real homes for 4?8 months, and
students have built new applications and added support for additional devices.
For example, HomeMaestro from the MIT Media Lab shows the power of the HomeOS approach. HomeMaestro is a platform for defining home appliance behavior. The key concept in HomeMaestro is a repository of rules defined by other users, which can be mashed into interesting scenarios. These rules could be simple if-then statements, such as "if my bedroom window is open, then switch off the heater." The rules can be defined on Windows Phone 7 and uploaded to the cloud (Project Hawaii web services and Windows Azure) for later use and sharing.
In another example, students at the University of Washington recently used HomeOS with Windows Phone 7 and cloud services (from Project Hawaii) to create a door-monitoring system and networked alarm, and to control various home devices using the Kinect sensor.
HomeOS' design is based on management primitives that map to how users want to manage their homes, protocol-independent services that provide simple APIs to applications and a kernel that is agnostic of the functionality and protocols of specific devices.
Experience with real users and developers,
in addition to controlled experiments, help Microsoft validate the usefulness of the abstraction and its design. This experience also reveals gaps where Microsoft's engineers could not cleanly implement the abstraction due to limitations of device protocols (e.g., little support for diagnosis and incompatible implementations across vendors) or due to limited features being exposed by devices over the network.
Microsoft plans to to address these limitations in the future. More broadly, the company hopes is that this work spurs the research community to further explore the home as a future computing platform.
Services provided by the Home OS should not only be broadly useful but also almost universally implementable. For instance, consider occupancy information - which rooms are currently occupied by people. It can benefit many applications (e.g., lighting control, thermostat control, and security), but depending on the devices in the home, it may be difficult to infer reliably (e.g., motion sensors can be triggered by pets; cameras are more reliable). Making occupancy an essential service requires each home to possess the necessary devices, thus increasing the cost of a basic HomeOS installation.(This is akin to PC or smartphone OSes specifyingminimum hardware requirements.) Thus, careful consideration is needed to determine which services a system like HomeOS should provide in all homes.
In addition, some desired reactions to physical actions in the home depend on the identity of the
user or who else is around. For instance, users may want
to play different music based on who entered and turned on the lights, or parents may not want their children to
turn on the Xbox in their absence. Currently, HomeOS
can either not support such policies (lightswitches have
no interface to query user identity) or support them in
an inconvenient manner (ask parents for their password).
A promising avenue for future work is to build nonintrusive identity inference (e.g., using cameras in the home, or users? smartphones), and then allow users to express policies based on that inference. A key challenge in realizing this system is to maintain safety in the face of possible errors in identify inference.