Location tracking within the home is often one of the first things that comes to mind when a person hears the phrase "smart home." If the house knows where you are and what you are doing, it can respond in all sorts of cool ways ranging from simple things, like turning lights on and off for you as you enter or exit a room, to complicated tasks, such as having a Skype conversation follow you from room to room. But how might the house keep track of its occupants? You could install a network of cameras, motion sensors, and other equipment, but these options are often expensive and requires a retrofit of the house. Smart phones on the otherhand are becoming increasingly common and are packing in more and more hardware. Most new devices have accelerometers, gyroscopes, cameras, microphones, and GPS antennas. And most of the time, you keep it nearby or on your person. Using the phone in your pocket, the smart home can keep track of where you are and what you are doing and can produce many amazing feats with the collected data.
For our project, we used the smart phones Wi-Fi capabilities to detect nearby wireless access points and send this data to a server to analyze. The idea is that each room in the home possess a characteristic Wi-Fi "fingerprint", that is, the strength of the Wi-Fi signal coming from an access point varies from room to room, but tends to be fairly consistent within each room. We measure and store each room's fingerprint, and then in the future your phone can sample the airwaves, compare against the known fingerprints, and determine where you are in the home based on the closest match.
The first step is to collect fingerprints. We accomplish this with a small Android app that samples a room's Wi-Fi signals at regular intervals for a few minutes, and then processes the dta to pull out key statistics, such as the mean, maximum and minimum observed signal strengths. These fingerprints are then stored inside of HomeOS, a platform being developed at Microsoft Research that simplifies the building of smart home applications and that serves as the nerve center of our smart home. Now, a phone running our smal Android can connect to HomeOS wirelessly and push to if Wi-Fi "snapshots" of the room that the phone is currently in. HomeOS compares these snapshots against its stored fingerprints to determine location, and then broadcasts this location to any other HomeOS modules that care to use the information. Our video switching app is just one example; you could use this same service to intelligently control house lights, manage a whole-house universal remote, or to build any app that benefits from knowing where its users are.
Our system does have limitations of course. Having too few wireless access points nearby can mean that there is not enough information to distinguish one room from another, and having too many can cause problematic interference. Large open spaces can also be difficult to fingerprint because they lack walls to attenuate and vary the wifi signal. Even the prescence of people (particularly in large numbers) can throw off a reading.
The smart phone does have other sensors that could be used to help alleviate the weaknesses inherent in a pure Wi-Fi-based setup. A camera might help to positively identify the room you are in if the Wi-Fi reading is ambiguous or to be more confident of your room when the phone is actively in use. We have experimented with using the accelerometer to determine whether a user was moving and how likely it was that we were transitioning from one room to another, but were never quite able to get it to a useful level of accuracy.
Still, even with utilizing only wifi, we've managed to successfully identify a user's location in the home without additional or exotic equipment and with a reasonable level of accuracy.