Since purchasing a home, I have been trying to make our living space more comfortable and convenient through home automation. To implement this, I started with the X10 system. The X10 technology has been around for a very long time. It uses your house wiring to transmit low data rate signals to various modules plugged or wired into it. Though slow and prone to noise, the system does work and is very easy to install and configure. X10 also offers a wirless solution for control over the system. A special tranceiver module receives the signal and transmits it to the modules through your wiring. You then have many transmitters to choose from, such as keypads, keychain remotes, multifunction remote controls, motion sensors, etc.
X10 (the company) is only one vendor from which you can buy X10 (the technology) devices, though they are generally the cheapest. There are other vendors, such as SmartHome, Leviton, PCS, and Home Pro that also offer X10 products, often of better quality and flexibility than those from X10 (the company). Still, the quickest, most cost-effective way to get started is using one of X10’s (the company) starter kits.
While X10 devices are completely self-sufficient (you can buy timer, etc to improve automation), in my mind the next level of home automation is to put it under intelligent computer control. X10 (the company) offers several “ActiveHome” kits that are great to get started in this area. The software that comes with ActiveHome leaves a few things to be desired, however (more on this later). With a computer at the center, you can configure it to do intelligent things based on the time of day, whether it’s light or raining outside, activity within the home, etc. The possibilities are endless.
There are devices that you can connect only to a computer to improve flexibility and performance. You can also extend the automation systems further with multi-I/O units that can interface with the world outside of X10, giving you control of doors, sprinklers, etc and allowing other types of sensor inputs (rain gauges, temperature, etc).
I have tried several different home automation software packages. They are described below in the order in which I tried them:
This is the software package that comes with the X10 ActiveHome kits. It’s fairly easy to setup and use, but I found it to be unstable and unreliable. Specifially, the service that interfaces with the X10 CM11A controller (via a serial port) would hang after sending a few commands, especially when requesting status. I thought that it might be the infamous CM11A-lockup problem, but that proved not to be the case. This may be a Win2k/XP-specific issue, but it rendered the software useless for me, so I quickly began searching for an alternative.
The “HCA Plus Evaluation” package seemed to be the best alternative for Windows that I could find at the time. It has a very “visual” and “object oriented” approach to setup. You can even provide a layout to your home. One of the nicer things about it was that it came with a powerful macro “language” that allows your setup to be very flexible. You basically drop little squares onto a grid and create a flowchart describing the action. It’s nice for anyone who may not have any programming experience. The main thing that drew me away from this software (besides the price) was the fact that I would need to have a Windows machine up all the time. While that is a feat in itself, I already had a Linux server running 24/7 which left me searching for a Linux solution. Another annoying thing about this software is that it hogged 100% of my CPU while it was running (on a 1.4GHz Athlon system).
The first tool I found for controlling X10 devices in Linux was a very simple shell utility, aptly named “x10”. I installed it right from Debian’s repository, so I don’t have a link for it. It basically would allow you to send X10 commands through a CM11A or similar controller. I also found a little daemon “x10d” that would listen on the serial port for X10 traffic and display them to stdout. For the most primative of control, these tools are sufficient. x10 can be called from a cron job to do things and output from x10d can be parsed by a Perl script to take simple actions. Things get complicated very quickly when the states of other devices or whether it is light out need to be considered. For that you really need a truely event-driven interface.
The next tool I tried was HomeDaemon. Though it is a bit painful to install and configure (read the instructions CAREFULLY), it does get the job done. It uses a sort of crude language to describe devices and events and gives just enough functionality to do basic, but intelligent events based on motion, etc. I used this for several months with no problems at all. It proved to be very reliable.
MisterHouse is probably one of the most feature-rich software packages for home automation that I have found. From an X10 perspective, devices are represented by Perl objects and it is up to you to write the code to handle events as needed. A simple table file is all that is needed to tell MisterHouse what devices you have. It will instantiate all the objects for you. It also provides a large number of utility functions to simplify pretty much anything you would need to do to handle events, so the amount of Perl code that you end up writing is fairly minimal.
I actually found MisterHouse shortly after I got x10/x10d working. The installation took quite a bit of work and the configuration is daunting. Unfortunately, it defaults with all kinds of whistles and bells turned on, which makes sifting through the errors a time-consuming process. It’s also a swiss army knife of features and goes well beyond X10. It basically tries to do everything, which is why it has such a steep learning curve. Looking back, I would suggest just following the installation instructions, get the web interface up and turn everything off except what you really need. It was the plethora of misconfigured and uneeded (for me) features that caused me to abandon MisterHouse and use HomeDaemon for a while instead.
My intent here is to cover the basics of some of the available home automation devices that I have used, X10 and otherwise.
X10 by X10
X10 (the company) is probably better known on the Internet for their obscene uses of banner and pop-up advertising, which is why I don’t have any direct hyperlinks to their website (http://www.x10.com). That aside, they do offer a wide range of products, mostly based on the original X10 device designs. In addition, most of their products are quite cheap, especially when bought in quanity. Here are my thoughts and experiences on some of their offerings:
Lamp Modules: These modules have the major disadvantage of only being able to control incandescent bulbs. Anyone using fluorescent or low voltage halogen bulbs will have to use appliance modules or buy from a different vendor. The 2-way LM14A module can remember its dim setting, will soft-start the lamp while powering up, and can report its status. The other lamp modules can only receive commands and do not allow you to dim the lamp from the off state. The lamp must be turned on and then dimmed down to the desired level.
Applicance Modules: These are simple on-off modules that are pretty much universal. They come in a few variants, depending on whether you have an appliance with a grounded plug and how much current the appliance needs. The non-heavy duty versions can be turned on and off by toggling the power switch on the appliance, which is handy if you don’t have a controller nearby. There is also a 2-way version of the 2-prong appliance module (AM14A), which can report its status.
Switches and Sockets: The lamp and appliance modules are also available as wall switches and wall outlets, respectively. They are installed in the electrical boxes, in place of the conventional switches and outlets. This makes for a cleaner installation. The wall switches leave a few things to be desired, but they are functional. For starters, like the lamp modules, they can only switch incandescent bulbs. Also, the interface is a single, odd-looking, cheap-feeling button. Momentarily pressing it toggles the light on and off. Holding it down (after turning it on) will cause it to dim down and up until the button is released. The “decorator” switches look much better from the outside, but they are the same mechanism behind the nice bezel. They can be a pain when you are in a hurry because you have to hit them “just right” to get them to come on. There are several other vendors that make superior switches. The wall outlet is equivalent to the AM466-HA appliance module (15A grounded). The top outlet is controlled while the bottom is always on. As with the appliance module, you can turn it on by toggling the power switch on the appliance.
Wired Controllers: There are a number of controllers that plug directly into your outlet to send X10 commands. These range from simple banks of switches to computer interfaces. If you don’t intend to put your home automation system under computer control, then you can use X10’s time (MT10A-HA) or light (SD533-HA) driven controllers to manage your devices.
Wireless Controllers: There is an even larger number of wireless controller available for X10 systems. There are keychain and wall-mounted remotes that can control a small range of unit codes. The slim wall-mounted controllers (like SS13A) are handy for implementing a 3-way switch where there is none without cutting holes in the wall. There are also wireless motion sensors that can be placed throughout the home to illuminate hallways at night, etc. The MS14A/MS16A motion sensors actually send two unit codes. It sends an “ON” event when motion is detected and will also send another “ON” event on the next unit code if it is dark. It will then send an “OFF” command on both codes after a specified delay.
Wireless Transceivers: If you are going to use any of the wireless controllers, you will need one or more transceivers. There are two available from X10, both of which also function as 2 prong (ungrounded) appliance modules. The appliance module portion of the TM module can be set to unit code 1 or 9 and can be queried for status. The other module (TM751) uses unit code 1 only. These transceivers can only “represent” one house code, so you would need one for each house code that you need to receive wireless commands on (note also that many of the controllers can only send on one house code as well). Also, the receiver’s sensitivity is rather poor, resulting disappointing range with the controllers.
Wireless Receiver: WGL offers a few products to address some of the problems with other X10 products. Their W800 series receivers are many times more sensitive than the X10 transceivers. The RF32 versions will also receive extended commands for all X10 house and unit codes, so you only need one. The disadvantage is that it does not interface to your house wiring. Instead, the commands are sent over a serial port to a computer. The idea is that the computer provides the wired X10 interface (via CM11A, etc) and it will relay the codes revceived by the W800 to the X10 devices. Since the receiver talks to the computer directly, the time it takes for the X10 device to respond is cut in half. I am using the W800RF32A, which has the external whip antenna that I mounted in a closet at the center of the house. It can receive signals from anywhere on my property!
SwitchLinc Switches: I picked up a half-dozen of their refurbished 2-way switches (model 2380) on clearence for about half price. These are the older design, which apparently can have thermal problems when powering heavy loads. The newer design supposedly takes care of this.  Compared to the X10 dimmers, these switches are far superior in quality, “feel”, ease of use, and intelligence.  Since they are 2-way (in terms of X10 commands), they can transmit their code and status which is handy for intelligent control via a computer.  They also support preset dim and programmable dim rates for pleasant scene control (and no blaring bright lights coming on at night when you just want low lighting).  There are non 2-way switches as well that are less expensive, have the same nice feel and dimming capability, but can’t transmit X10 codes.
There are other vendors available that I have not used. These include PCS, Leviton, and Home Pro.