The biggest challenge in designing an X-10 HA system is in assigning the house and unit codes in a meaningful manner. I use "O" for outside, so I can turn all of those lights on or off at once. "H" is for the hall (and also the upstairs bedrooms). "F" is for Family room. "M" is for Master bedroom. "K" is for Kitchen. "I" is for Inputs from PIRs or other detectors. In the Family room, I use 1..8 for direct control of units on an RF keypad, and 9..16 for computer macros (such as announce dinner, turn off Nitendo, turn on dining room light). I have the luxury of using any housecode except "A..D", which my neighbor uses (I can turn his lights on and off across the street!).
I have a magnetic switch on the garage door that is closed when the door is open, and I can close the door from any phone, and automatically close it at night.
I use the telephone responder in conjunction with the Covox voice synthesizer - I can get audible feedback by sending an X-10 command to the PC which will write a status file and then read it while I listen in.
If I lived in an apartment where lots of people used these or had wireless intercoms, I might have to work out how to divide up housecodes, or even put in a whole house power filter.
When you get further along in the maturation and expansion of a HA system, it tends to become very complex. I went to the "Street of Dreams" home show a few years ago, and there was some simple-minded HA stuff (Home, Not Home, Vacation, etc.), but I have found my needs are more complex - I am working or not, my significant other is working or not, school is in session or not - this affects coffee, security, alarm clocks, etc. Fortunately, I can build whatever I want into the system, and it can be as sophisticated as needed.
My next major delta will be to install a Pentium PC with a lot of analog and digital I/O. This will open up many possibilities that are now too costly to do with individual modules. Window-based software will allow the HA system to run all the time in the background, and the PC will still be available for use. I will be rewriting everything in Delphi, using triggers on a relational database. I will have window prompt screens that will build the system (perhaps in a text file form), and the system would automatically know how to display a map of the house, know what symbol to display for a unit, and automatically turn on and dim to 0 a dimmer, so that it could brighten up by stages instead of coming full on (this would occur during the object construction). This would be useful for bringing up the lights as the sunlight fades. I will use a net browser to control my house, perhaps after using the telephone responder to have the PC log onto the net. I also will utilize net browser data push/pull to give audio and video feedback.