News and Events
• Palm Pilot
• Weather Station
• Temp. Readings
• Precision 420
• Cisco 675
• Loc Notes
• GPS Find
OverviewOur home automation system consists of three subsystems:
Each of the subsystems is monitored and/or controlled by a unix daemon running under NetBSD.
For X-10 I use a client/server pair written by Dan Ridge to control a CM-11A. The daemon and/or it's clients can maintain state, and therefore track the current status (besides any local operation of the modules). I have patched the daemon for operation with the NetBSD serial line API; this required nonblocking access to the serial port during configuration, and some other line discipline adjustments. I also made some changes in the state tracking and experimented with the client/server communication protocol to allow for potential collision avoidance (though this doesn't seem to be detected as often as would be useful).
We use Hawkeye II motion detectors and a RR501 to control lights on the front porch, back yard, garage and mudroom. These are "directly connected" configurations: I have the light in question set to respond to the device+house code that the HawkeyeII generates when motion is detected. There are no intervening macros.
We use transmitter pads and maxicontrollers to send device+house codes to trigger macros that peform combinations of functions (e.g. turn all outside lights on).
We use one dedicated motion detector with the macro control code to trigger the backayard webcam.
For any periodic operations, I use at and cron to schedule scripts to be taken executed at sunrise, sunset or other specific times of the day. Sunrise and sunset are calculated via a program: suntime. The program emits times that are compatable with the command line format used by the "at" program.
A good example is Christmas: we have approximately 18 units across 5 or 6 house codes.
The daytime/nighttime setting of the thermostat at our cabin The Vistasea is controlled via a dry contact pair, and a X-10 Universal module. Our cabin goes on line every other hour. If we're going out to the cabin during the winter, I setup a script to trigger the univeral remote, and bring the thermostat to the "daytime" setting.
At the Vistasea X10 motion detectors also control the floodlights and the triggering of the Vistasea webcam.
Signal Propagation and Noise
I had some trouble with signal propagation but I added a 0.1 uF 600V capacitor across the two phases of our house current at the eletric dryer. This made X-10 command work so much better. Before, there only a few reliable modules and command: much frustration. After: almost all combinations worked at about 95% reliablity: much Joy. I have a copy of a more technical / electrical analysis of this modification.
I think I also had some trouble with line noise. I used a an AM radio tuned between stations to sniff out potential sources. Eventually, I made sure that there were no noise sources on the branch circuits hosting the CM-11A and the RR501 RF transceivers, and this helped some.
Weather Station: WM-918
We have a Oregon Scientific WM-918 Weather station which tracks local weather for us. Weather data is transfered via serial connection to the host dedicated for home automation and managed by wx200d as modified for NetBSD. The cable from the internal junction box to the basestation was too short for my needs, and since it was just a 8-pin ethernet like connector, I made a longer cable (about 30ft) out of cat-5. and plugged it into our wall plug system. Works Great.
At one time a few years ago my anemometer stopped working reproducibly, I was able to get a replacement from OS. The Tech at OS suggested that it was a grounding problem (and that the circuitry had been zapped), so this time I grounded the staff... no problems with the anemometer so far, but now the rain gauge gives spirous (high rate) readings now and then.
Temperature Sensor Network: DS-1820
In this kit, each sensor reqires a pair of leads, (1) 5+/signal (2) ground. I wired each sensor on to a short 3-6 row section of PC board (to keep the leads separated), and soldered a short (22ga ?) twisted pair wire to the leads: the wire is stiff enough to support the sensor against gravity if you keep it short: I bend the leads to point the sensor up and away from the wall or any other heat source. I try to use a socket that's behind a bed or bookcase, etc. The other ends are crimped directly into RJ-11 plugs.
At the type 66 patch panel the leads from the kit are patched to the appropriate runs from the room we want to measure. The setup is easy, but the placement in the rooms is sometimes sub-optimal (e.g. near a window), and often near a computer (which puts out significant heat).
On the software end, I have written a deamon which reads the serial connection and records the data in a fashon similar to wx200d above. Those phone lines that are old cat3 in our house appear noisy, where the new cat5 runs I've installed read pretty cleanly, so part of the code is error correction: if a reading is significantly out of range, I back fill it with the previous reading... this catches most of the noise but not all.
(if you're interested in the code, drop me a line).