Smart Home Hacks Excerpt

We wrote this article for the excellent Smart Home Hacks book by Gordon Meyer. For additional tips, ideas, and hacks to help you boost the intelligence of your home you can purchase Smart Home Hacks on Amazon.com.

Which Way Did She Go?

A hallmark of a good home automation system is the ability to predict what people are about to need and take care of it for them, such as a light coming on in a dark room right before a person enters and then turning it off shortly after she departs. An essential ingredient to this type of automation intelligence is detecting in which direction she is going. Is she:

   Walking up the sidewalk toward the house, or away from it?

   Climbing up the stairs, or down them?

   Walking down a hall toward the bedroom, or up the hall away from the bedroom?

This might sound like a complicated problem that would require video cameras and sophisticated visualization software to solve, but in reality, you can determine all of these things fairly accurately using two inexpensive X10 motion detectors.

The trick is to place one X10 motion detector at one endpoint (end of hall, sidewalk, stairs) and the other detector at the other end. Based on which motion detector triggers first, the home automation system can make a good guess about the direction of travel.

For example, consider a hallway leading to a bedroom:


 

If a person walks down the hall toward the bedroom, the Hallway Motion Detector will trigger first. At this point, we can predict that someone likely is going into the bedroom, and we can turn on the bedroom lamp in anticipation of her arrival. Likewise, when she leaves the bedroom, the Bedroom Motion Detector will trigger first and the system knows to turn off the lamp.

A person walking in the hallway will trigger both detectors eventually, so the key here is tracking which detector triggers first. Otherwise, the light would blink on and off as she approaches the bedroom, and off and on as she travels away from the bedroom. Let’s look at how to do this using Indigo for Mac OS X, beginning with turning on the light as a person approaches the bedroom.

After you’ve added the motion detectors to Indigo’s device list, create a trigger action that occurs when Indigo receives an X10 On command from Hallway Motion Detector:


The action for this trigger is a simple two-line AppleScript. The second line is straightforward; it turns on the bedroom lamp. It’s the first line that makes this smart. It disables another trigger action (which we’ll discuss in a moment) for 10 seconds.

 

This gives the person who triggered the motion detector just enough time to scoot down the hallway and pass the other motion detector, Bedroom Motion Detector. That detector still will send a command to Indigo, but there will be no enabled trigger actions for the command, so no action is taken.

You could replace the AppleScript commands with a two-step action group that accomplishes the same thing.

Now, let’s set up the trigger action for the Bedroom Motion Detector. As in the previous example, its trigger is the receipt of an X10 On command:

 


The action for this trigger turns off the bedroom lamp and then disables the action trigger for the Hallway Motion Detector we defined earlier:

 

Similar to the technique described earlier, this disables the action so that it does not occur when the person triggers the second motion detector. As long as she makes it past the detector within 10 seconds, the bedroom light will not turn back on.

When you implement this hack on your system, make sure you specify the correct names of the trigger you’re disabling.

You might need to tweak the 10 second delay so that it works better in your home. It needs to be long enough for the person to pass from the view of one detector and into the view of the other. Don’t make the duration too long, though, or you’ll miss a valid trigger if she reverses direction quickly, such as running back into the bedroom to grab a forgotten item.

You’ll need to carefully consider the placement of the motion detectors. For example, if the Bedroom Motion Detector was actually in the bedroom and not in the hallway, we would end up turning off the lights as the person walked around the bedroom. You can place the two motion detectors fairly close to one another; they just need to be far enough apart that the closest one will reliably trigger first in both directions.

Finally, as smart as this hack is, it is not perfect. In our example, if two people enter the bedroom, the lamp will turn off when the first person leaves. This is not necessarily a flaw in our scheme for predicting a person’s direction of travel; it’s caused by the fact that this system does not keep track of how many people have entered a room.

You could, indeed, extend the logic to increment a counter as people enter the room, and decrement it as they leave—keeping the lights on until the counter reaches 0. However, you will likely run into problems with the counter getting out of sync if two or more people walk down the hallway together. Two people passing each other between the detectors also will confuse our simple logic. But despite these flaws, this hack demonstrates that it is possible to create a somewhat intelligent system with a little careful analysis.