The central piece of my new system is a TCP/IP based server program I wrote in Microsoft Visual Basic - I call it the Smarthome Server. This program runs all the time on my Toshiba machine and monitors the activity in the house through the Lynx 2 way X10 interface. The Homebase unit still handles the majority of the "autonomic" functions of the house such as turning on the outside lights when it is dark and the front door is opened. The Homebase also manages all the hardwired connections such as the door sensors. What the Smarthome Server does is add a friendly user interface to all of this as well as the Internet and email connections. The client program called Smarthome Agent (also written in Visual Basic) has command line and interactive modes and makes a TCP/IP connection to the Smarthome Server to make requests of the system.
I run DynamIP which senses when my Toshiba machine connects to the Internet and uploads an HTML file with its dynamically assigned IP address to my home page. From any browser anywhere on the Internet I can follow this link to connect with Apache running on the home Toshiba machine. A set of HTML files on this machine provide a user interface for the system. CGI scripts called by the HTML pages make calls to the command line interface of the Smarthome Agent to do the actual work of turning things on and off, or retrieving information from the Smarthome Server. I can also run the Smarthome Agent remotely on the Internet and type commands and receive responses directly from the Smarthome Server.
For me the most interesting new piece of the system is the incorporation of Microsoft Agent ver 2.0 into my system. Aside from being cute and friendly, this technology provides a very easy to use voice synthesis and recognition engine. As a user interface I can think of the agent as the representative of the house. The character I chose is one provided as a demo from Microsoft named "Peedy". Once you get used to the voice, it is pretty easy to understand what it says. I use Peedy in both the Smarthome Server and the Smarthome Agent.
When I am supposed to wake up (only on weekdays, the system knows my schedule), the home automation system turns on a loud annoying buzzer on my night table. As usual, when I need a few more minutes of sleep I hit a button on the control panel near my bed and the buzzer goes off. Then, after a 10 minute snooze the buzzer goes back on again. I cancel my alarm by pressing the button on my control panel three times. The system responds by turning on the light over my head, resetting itself again for the next weekday morning.
When I drive up to the garage, the motion sensor there senses me and decides if it is dark enough to turn on the lights. If it is, then in addition to the garage light coming on, the computer turns on the front porch light as well as a light inside the living room to give me a lit house to walk into.
The lights in the living room are programmed for several moods that I might be in for the living room. One press of a button tells the home automation system what kind of light I'd like in the room. One setting is for when I want lots of light, and automatically turns on all the lights at full brightness. The next setting is gentler for TV viewing and sets the incandescent lights at 75% brightness with the big halogen light off. The next is a more romantic setting with the lights at a dimmer setting for cuddling in front of the fireplace, and last but not least is all lights off. During the holidays, the wall pushbuttons can easily be programmed to control the Christmas lights as well and make sure they are turned off when appropriate.
Speaking of Christmas, since I get a photocd made of every roll of film I take, I use those pictures to create my own custom Christmas cards and print them out on the color printer. I find it much easier to browse pictures I have taken and view them on the computer screen than to dig out the actual prints.
If I am working on the computer in the living room and want to write a letter or something, I can use IBM ViaVoice 98 Executive Edition to dictate it to the machine hands free - it's fun to type something with your hands behind your head! When I decide that I need to access the normally powered down network server machine, one button press on a radio frequency remote tells the home automation system to turn that server on which it acknowledges by flashing a light in the living room.
If I want to watch a video in the living room, I put the tape in the VCR in the bedroom, press a selector switch to send that video to the rest of the house, and I can watch it anywhere, and because of the IR links back to the bedroom I can use the remote control everywhere as well. I can also listen to music in the living room because the stereo there is connected to the bedroom stereo - I get music everywhere without having every stereo component in each room. I can even play music through the TV's in rooms without stereo speakers! With the connections between one of my computers and the stereo system, I have even had my computer read some text into the tape deck so that I could listen to it on the way to work!
If I am working all over the house cleaning or something like that, I can set all of the TV's in the house to channel 3 and use one of the VCR's to change the channels on all of them at the same time. This may sound like just a gimmick, but I do it all the time.
The home automation system keeps a log of the last days worth of activities, so if I had to ask someone to walk my dog, the computer has a record of a door opening to do this. If someone came to my front door passing the garage, the system knows that too. When someone comes to the front door and passes the garage motion sensor, the light in the living room that gets turned on in response lets me know that someone is on the way up even before they ring the doorbell. Also, a light that is also turned on downstairs tells me of the visitor even when I am out of earshot of the doorbell.
Before I installed the home automation system, I had no way from within the house to turn on the light connected to the motion sensor over the garage. This meant that when I had guests that were leaving my house I had to escort them down my front walk and wave at the garage motion detector to turn on the lights for them. Now I just open the front door and the home automation system responds by turning on the outside lights for me. This may sound like a minor thing, but it annoyed me a lot before, and is much safer now that nobody has to walk down steps in the dark. The computer turns the lights back off five minutes after the front door has been closed or no motion has been detected at the garage - whichever is later.
The home automation system allows me to control lights, fans, and stereo from a console next to the bed, so I have the ultimate in convenience. If I get hot I can turn on one or both fans to cool things down. If I have been listening to the stereo either by itself or with the TV I can turn it off when I go to sleep. I can even turn on and off the network server computers and the bedroom computer from the same panel without getting up.
The purpose of the network is not because I need all the computing power of all of my machines combined, but instead so that I can access what I am working on from whatever machine I happen to be sitting in front of. Having the computer in the living room means that I can work on the stuff I last edited in the bedroom, but in the room with the fireplace. Before I set this up, if I wanted to work on the computer, I'd be isolated in the computer room where the printers and wiring force a single computer to be. Now I can enjoy more of my house while I play. I can also have friends come over and play network multi player games.
The HP200LX palmtop computer is also a great tool for me because it allows me to take notes, or capture thoughts wherever I happen to be. Since it fits in my back pocket I can take it with me most of the time which a notebook computer would not allow, so if I am at the mall or somewhere else and think of a gift idea, or need some measurements for the house to know what size to buy, my palmtop is there to receive or provide that information. With it's scheduler and phone book, I can make plans or call people if my plans change and never worry that I won't have the information I need.