[an error occurred while processing this directive]
Home Automation Tips
and Tricks Archive
June 2000
|
Entry 1- Automating Draw Curtains
Marcus Hyde compguy@quik.com Gastonia, NC, USA |
So how do you automate draw curtains? Mount an old electric auto antennae on the floor next to the pull cord. Attach the antennae to the cord and connect the motor to a power supply and your favorite automation relay. Presto! Automated draw curtains!
List of Components
Old antennae motor from an auto junkyard - $5.00 or less
Clamp - approx 75 cents
Power supply (12V DC) - $20 Misc.
Brackets, screws etc. - $2.00 Approximate
Total Cost of Components - Under $30
| Entry 2
-
Secure X-10 Without Extra Hardware
Frank J. Perricone hawthorn@sover.net Montpelier, VT, USA |
X-10 components allow for inexpensive, modular, easy automation of household gadgets, and one of the best things about X-10 is the wide availability of modules to control many things: garage door openers, blinds, sprinkler systems, water pumps, even units that will unlock and open your front door. Imagine the convenience: as you pull into the driveway, a single press of your keychain fob turns on the outside and inside lights, unlocks the door, and even opens it for you so you can carry in that double-handful of groceries with ease.
Neither of these is required, and assuming you're using a CM11A, Ocelot, etc. and versatile enough software, you can add as much security as you like at no cost except a little bit of time. I use HomeSeer ( www.keware.com ) and a CM11A at present, so I'll talk in those terms, but the same approach can be adapted to any software that has variables (or virtual devices) and conditional logic. (I doubt ActiveHome could do it.)
Step 1: Remove all but one of your transceivers. If you have transceivers on multiple housecodes, remove all but one, and set that one to a housecode you don't have any devices on. (For the sake of argument, I'll assume that this is housecode M hereafter.) Switch all your PalmPads to use that housecode. From now on, you will not be directly controlling any of your devices with your PalmPad -- and neither will anyone else. Instead, everything you want to control will be done through an event or macro.
Step 2: Create macros for all your devices. While you're at it, think about whether you need to control things individually. Sometimes you will have a group of lights you turn on all at the same time; better to assign them to only one button or unitcode. Assign each of these macros to one of your buttons on the M housecode (or whichever you used in step 1).
Note: if you have enough devices, you might not be able to fit them all onto one housecode. In this case, you can do one of two things. Either put them onto several housecodes and add more transceivers for them (being sure that you never have a physical device on the same housecode as a transceiver -- only macros), or do some more macro programming that lets you do two-button sequences to control things. This tip should give you inspiration on how to do that (or I might write it up for a future tip). A third possibility is to have one housecode to control the secure things, then use other housecodes the "old-fashioned way" to control the things you don't need to secure.
Step 3: Choose a few of the 32 buttons on housecode M (M1-M16 ON and M1-M16 OFF) to be an "activation sequence", a sort of passcode only you know. For instance, M6 ON, M17 OFF, M3 OFF, M5 ON. It's up to you how many buttons in sequence you want; the more you use, the more secure things will be, and the longer it will take for you to do what you want. For example, assuming that a burglar doesn't know what housecode to use, a two-button sequence would require him to try, on average, 131,072 combinations; a three-button sequence would require 67 million; a four-button sequence would require 34 billion. And that's even if he knew how many buttons to use. If he could do one every three seconds, even a two-button sequence would take four and a half days!
Step 4: Modify your startup process, when your home automation software loads, to create a variable named SecurityLevel and set it to 0. Alternately, you can use a virtual device, and set its dim level to 0. This will vary from software package to software package. Just make sure you can both query and set the level from your scripting system.
Step 5: Create an event or macro called "Reset Security Level". You might want to assign this to an X-10 code (like M16 OFF) so you can do this automatically from your PalmPad, but it should also be possible to have other macros or events trigger it with a time delay. Let it do the following:
if SecurityLevel = 100 then speak "System secured." SecurityLevel = 0
I'm assuming you have something like HomeSeer that can speak (in HomeSeer's case, the first line should actually say hs.Speak instead of speak). If not, do whatever you want in the first line -- write to a log, flash a light, whatever. Or just omit it. It's just to provide you with a cue if you happen to be around paying attention.
Step 6: Create an event or macro called "Security 1" mapped to the X-10 key you want to be the first one in your sequence (M6 ON in my example above). Make a script for it like this:
if SecurityLevel = 0 then SecurityLevel = 1 schedule event "Reset Security Level" for ten minutes from now flash or brighten a light, speak something, beep, etc. if desired elseif SecurityLevel = 100 then do whatever you want the key to normally do, if anything else speak "Security violation." SecurityLevel = 0 end if
The middle condition can be omitted if you don't intend to map that key to control something. The last condition can also be omitted if you don't want to do anything in cases of security violations, or replaced with other actions as above. The ten minute period can also be adjusted to your preference.
Step 7: Repeat step 6 for each other key in the sequence you want to use, except the last one. Change the first condition to increment in sequence. For instance, the second button would start like this:
if SecurityLevel = 1 then SecurityLevel = 2
The next would be 2 and 3, etc. The rest of the code is the same each time.
Step 8: Repeat step 6 for the last key in the sequence, except the first section looks like this:
if SecurityLevel = 2 then SecurityLevel = 100 schedule event "Reset Security Level" for ten minutes from now speak "System unsecured for use."
The 2 in the first line is for a three-button code; use one less than the number of buttons in your code. The differences here from in Step 7 are the speak command, or whatever else you want it to do to notify or log the action; and the SecurityLevel being set to 100.
Step 9: For all other events (the ones you created in step 3) make them only run on condition that SecurityLevel = 100. For instance:
if SecurityLevel = 100 then do whatever else speak "Security violation!" SecurityLevel = 0 end if
Step 10: There is no Step 10. You're done.
The advantage of this approach, of course, is that you get very strong security without any additional hardware or even software. The most vulnerable thing you have to worry about is someone plugging a transceiver into an exposed outlet next to your porch and then playing with the PalmPad... and someone that determined will probably just break the glass and be done with it.
The disadvantages include:
* It takes a while to set things up -- but you only have to do it once.
* You have to key in the sequence before doing anything, and when you do, you
only have ten minutes before it expires and you have to do it again.
* It takes an extra 0.6 seconds or so for the lights to go on (above and beyond
the extra time it takes to key in that sequence).
* You can't let a motion detector or other sensor trigger anything... because
how can the system know if it's really the motion detector or someone hiding in
the bushes? Exception: if you keep separate systems as described above in Step
2, the motion detector can trigger things in the unsecured half.
* If the X-10 system loses a signal, you might have to go back to the beginning,
which can be frustrating. You might not even know.
* You're dependent on that darned computer since you can't turn anything on or
off without it. But, you're no more dependent on it than you would be on the
central controller of a secure system.
For most of us, most of these disadvantages are minor, null, or exactly the same as any security system would have.
Components: just the software and controller you probably already have.
Approximate Total Cost: an hour or two to set it up.
| Entry 3 -
Convenient remote tuning of automated
sprinklers.
Konstantin Vyaznikov kvyaznikov@bigfoot.com Nepean, Ontario, Canada |
List of Components:
1. Cheapest: Firecracker from X10. or
2. X10 appliance module + X10 remote controller.
Approximate Total Cost of Components:
1. $6 + something left for other purposes. or
2. X10 appliance - $14 + PalmPad controller - $20 = $34.
Tom Porcher porcher@acm.org Stow, MA, USA |
I have a number of switched outlets in my house controlled by wall switches. Unfortunately, the outlets are not always where I want to put a lamp. This tip shows an inexpensive way to put the controlled lamps where you want them using X-10.
So here are two less expensive ways of using your existing switched outlets for X-10 control by using radio controllers and a cheap wall transformer. Note that both of these require an X-10 radio transceiver (TM751, RR501, or any of the security bases) which you probably already have.
#1 - Using a keychain remote (KC674/HC40TX)
This modification requires some parts to be assembled on a separate board and then wired up to the keychain remote. Note that the keychain remote does not need batteries when this is complete.
The
schematic in figure 1 shows the circuit needed for this modification. The
two relays are used to "push" the buttons on the keychain remote when
power is turned on or off. Relay K2 is energized for a short period after
the power is applied while capacitor C1 charges. This relay closes the
contacts on the "on" button, sending the "on" signal and
thus turning the controlled device on. Relay K1 is energized whenever
power is applied. The normally-closed contacts of K1 push the
"off" button when the power is turned off. The charge in C1
powers the keychain remote long enough to send the "off" signal,
turning the controlled device off. The rectifier diode D1 keeps K1 from
using the charge on C1. Resistor R2 is to bleed C1 so that it can be ready
for the next "on" cycle and also limits the time the "off"
signal is sent. The relays in the parts list are 1 VDC relays with a 12
ohm coil. You can use other relays but you'll probably have to experiment
with the resistor and capacitor values. For example, if you use a 6V DC
wall transformer, you can use the more common 5V relays and then use a voltage
divider to supply 3V to the remote.
|
|
|
Wire
the 3 VDC transformer to the board. The positive lead needs to be connected
to the junction of the rectifier diode and the 33 ohm resistor. The
negative lead is connected to the relay coils.
| Switch selects between units... |
Use on/off IC pins | Modify unit select? |
| 1 or 5 | 19 on, 18 off | No |
| 2 or 6 | 17 on, 16 off | No |
| 3 or 7 | 15 on, 14 off | No |
| 4 or 8 | 13 on, 12 off | No |
| 1 or 9 | 19 on, 18 off | Yes |
| 2 or 10 | 17 on, 16 off | Yes |
| 3 or 11 | 15 on, 14 off | Yes |
| 4 or 12 | 13 on, 12 off | Yes |
Cut
the etch going to IC pin 15 with a razor knife, being sure to have removed
some of the etch. Run a piece of wire from where the etch begins at a
diode to IC pin 14.
The
+VE wire can be connected directly to the positive battery terminal. The
negative battery terminal on the remote is surrounded by the remote's radio
antenna, so it is better to connect the -VE wire to another location on the
board. The ON and OFF wires are connected to the IC pins shown in the
table above for the units you want to control. The COMMON wire gets
connected to the common connection for all the buttons. Make sure that
the wires don't interfere with the operation of the slide switch or the code
wheel.
Parts list
| Item | Cost |
| KC674 keychain remote | $7 from X10.com in the RCA overstock section |
| 3 VDC wall transformer | $1.50 from All Electronics |
| (2) 1 VDC SPDT relays, 12 ohm coil | $2 ($1 each) from All Electronics |
| 1K resistor | $.05 from All Electronics |
| 33 ohm resistor | $.05 from All Electronics |
| 50V rectifier diode | $.07 from All Electronics |
| 1500 uF 10V capacitor | $.40 from All Electronics |
| breadboard, hookup wire, etc. | $0 more or less if you have it on hand |
| Total | $11.07 |
#2 - Using a HawkEye motion sensor (MS12A)
This method is much simpler but has these disadvantages over method #1:
This
modification requires removing a jumper from the MS12A, adding three resistors,
and connecting this to the wall transformer. The schematic in figure 8
shows the circuit involved. For a complete schematic of the MS12A, see http://www.nysaes.cornell.edu/cc/staff/pool/homeauto/ms12a.html
The MS12A incorporates a dawn/dusk sensor which sends out X-10 ON and OFF codes
at dusk and dawn respectively. These codes are sent to unit UNIT+1 where
UNIT is the unit number selected for the motion sensor. This modification
replaces the light sensor with a control voltage from the wall transformer.
Open
the MS12A by removing the four Phillips screws on the back.
Slip
a piece of electrical tape under the resistor Y to prevent shorts when you
close the unit up.
Parts list
| Item | Cost |
| MS12A HawkEye motion sensor | $20 from X10.com (discontinued; see note about MS13A) |
| 3 VDC wall transformer | $1.50 from All Electronics |
| (2) 100K resistors | $.10 from All Electronics |
| 100 ohm resistor | $.05 from All Electronics |
| hookup wire, etc. | $0 more or less if you have it on hand |
| Total | $21.65 |
| Entry 5 -
Control
Multiple House Codes With Palm Pad
Guy Lavoie guy@lavoie.com |
Here is an algorithm that allows you to control any selected House Codes and Unit Codes using a single Palm Pad and transceiver. Better yet, you can also trigger "All Lights On" and "All Units Off" commands from the Palm Pad as well. This algorithm could be programmed using several different controllers, as long as they support conditional statements and interval timing on the order of seconds ( 10 seconds is enough ). You MUST use a dedicated House Code with the Palm Pad and the transceiver to implement this. I have only tried this with the Ocelot, since this is the controller I have. The functionality described here is part of a project I am currently working on; a transceiver that can receive on all House Codes. I spelled out some of the features I wanted to implement a few weeks ago on the comp.home.automation newsgroup, and there are several people awaiting the final product, but in the meantime, here is a software version that you can implement to achieve similar results. Of course, the transceiver will be a faster solution since it receives RF and transmits X-10, and will have a command buffer. With this software implementation, you are sending X-10 to your controller, so you have to wait for the desired X-10 command to then be sent out before you can enter another one. Nonetheless, here is how you use it:
If you look at the Palm Pad, you see two columns of 8 buttons ( ignore Bright/Dim and the 1-8/9-16 slide switch ). Imagine the two columns are labeled as:
| A | I |
| B | J |
| C | K |
| D | L |
| E | M |
| F | N |
| G | O |
| H | P |
If you want to send an "All Lights On", you would begin your command sequence ( at least 10 seconds after any On/Off commands ) by pressing the "Bright" button on the Palm Pad, followed within 10 seconds by the House Code selection as shown in the above illustration. An "All Units Off" would similarly be generated by starting with the "Dim" button and then selecting the House Code. In the two cases of "All Lights On" and "All Units Off", the House Code then selected is immediately "forgotten", and you do not have to wait 10 seconds before sending another command.
That's it as far as functionality goes; simple, yet quite versatile. One last detail: Whenever you are selecting a House Code, you can ignore the 1-8/9-16 slide switch. Either position will work since the program treats a received "1 ON" and "9 ON" as equivalent to "House Code A" ( and so on )when it comes to waiiting for a House Code. This minimizes use of the slide switch.
Here is an example of the implementation on the Ocelot. Of course, if you want to be able to control all possible House Codes and Units Codes, the program will become huge. Fortunately, you will usually only want to control 2 or 3 House Codes this way. In the example here, I have implemented control of Units 1 and 2 for House Codes A and B. You can then expand upon this by copying/pasting for the additional codes in each part. Part 1 looks for an initial House Code selection. Part 2 looks instead for the Bright or Dim button being pressed. In both cases, the timer is started and variable 0 is set to indicate the kind of command sequence that was selected ( House Code A to P by values of 1 to 16 respectively, All Off by value of 17, All On by value of 18 ). Part 3 looks for Unit Code commands ( On, Off, Bright , Dim) that are received while the timer is active and always restart a new timer interval so that several commands can be sent within a selected House Code, as long as the commands are never more than 10 seconds apart. Part 4 looks for a House Code selection after an All On or All Off sequence was selected, and stops the timer when this is done. Part 5 simply checks if the timer has exceeded 10 seconds, and if so, stops it. Enjoy.
Cost: none…
| STATEMENT | COMMENT |
| PART 1 wait for house code selection | |
| IF X10 N/1 ON Command | If N1 ON command received |
| OR X10 N/9 ON Command | or N9 ON command received |
| AND Timer0 = 0 | and timer is not yet started |
| THEN Timer0=1 | then start timer |
| THEN v0=1 | var = 1 (for house code A) |
| IF X10 N/2 ON Command | If N2 ON command received |
| OR X10 N/10 ON Command | or N10 ON command received |
| AND Timer0 = 0 | and timer is not yet started |
| THEN Timer0=1 | then start timer |
| THEN v0=2 | var = 2 (for house code B) |
| PART 2 look for All ON/OFF prefix | |
| IF Received X10 N/BRIGHT, 1 times | If N BRIGHT command received |
| AND Timer0 = 0 | and timer is not running |
| THEN Timer0=1 | then start timer |
| THEN v0=18 | and set variable to 18 (ALL LTS ON) |
| IF Received X10 N/DIM, 1 times | If N DIM command received |
| AND Timer0 = 0 | and timer is not running |
| THEN Timer0=1 | then start timer |
| THEN v0=17 | and set variable to 17 (ALL UNITS OFF) |
| PART 3 Look for Unit code and command | |
| *** House code A *** | |
| IF X10 N/1 ON Command | If N1 ON command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 1 | and variable indicates HC "A" |
| THEN Timer0=1 | then retrigger the counter |
| THEN X10 Quick On A/1 | and turn on A 1 |
| IF X10 N/1 OFF Command | If N1 OFF command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 1 | and variable indicates HC "A" |
| THEN Timer0=1 | then retrigger the counter |
| THEN X10 Quick Off A/1 | and turn off A 1 |
| IF X10 N/2 ON Command | If N2 ON command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 1 | and variable indicates HC "A" |
| THEN Timer0=1 | then retrigger the counter |
| THEN X10 Quick On A/2 | and turn on A 2 |
| IF X10 N/2 OFF Command | If N2 OFF command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 1 | and variable indicates HC "A" |
| THEN Timer0=1 | then retrigger the counter |
| THEN X10 Quick Off A/2 | and turn off A 2 |
| IF Received X10 N/BRIGHT, 1 times | If Bright command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 1 | and variable indicates HC "A" |
| THEN Timer0=1 | then retrigger the counter |
| THEN Transmit X10 A/BRIGHT, 1 times | and transmit A bright command |
| IF Received X10 N/DIM, 1 times | If Dim command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 1 | and variable indicates HC "A" |
| THEN Timer0=1 | then retrigger the counter |
| THEN Transmit X10 A/DIM, 1 times | and transmit B dim command |
| *** House code B *** | |
| IF X10 N/1 ON Command | If N1 ON command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 2 | and variable indicates HC "B" |
| THEN Timer0=1 | then retrigger the counter |
| THEN X10 Quick On B/1 | and turn on B 1 |
| IF X10 N/1 OFF Command | If N1 OFF command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 2 | and variable indicates HC "B" |
| THEN Timer0=1 | then retrigger the counter |
| THEN X10 Quick Off B/1 | and turn off B 1 |
| IF X10 N/2 ON Command | If N2 ON command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 2 | and variable indicates HC "B" |
| THEN Timer0=1 | then retrigger the counter |
| THEN X10 Quick On B/2 | and turn on B 2 |
| IF X10 N/2 OFF Command | If N2 OFF command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 2 | and variable indicates HC "B" |
| THEN Timer0=1 | then retrigger the counter |
| THEN X10 Quick Off B/2 | and turn off B 2 |
| IF Received X10 N/BRIGHT, 1 times | If Bright command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 2 | and variable indicates HC "B" |
| THEN Timer0=1 | then retrigger the counter |
| THEN Transmit X10 B/BRIGHT, 1 times | and transmit B bright command |
| IF Received X10 N/DIM, 1 times | If Dim command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 2 | and variable indicates HC "B" |
| THEN Timer0=1 | then retrigger the counter |
| THEN Transmit X10 B/DIM, 1 times | and transmit B dim command |
| PART 4 Look for HC to turn All ON/OFF | |
| IF X10 N/1 ON Command | If N1 ON command received |
| OR X10 N/9 ON Command | Or N9 ON command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 18 | and variable indicates All ON |
| THEN Timer0=0 | then stop the counter |
| THEN Transmit X10 A/All Lights ON | and transmit A all lights ON |
| IF X10 N/2 ON Command | If N2 ON command received |
| OR X10 N/10 ON Command | Or N10 ON command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 18 | and variable indicates All ON |
| THEN Timer0=0 | then stop the counter |
| THEN Transmit X10 B/All Lights ON | and transmit B all lights ON |
| IF X10 N/1 ON Command | If N1 ON command received |
| OR X10 N/9 ON Command | Or N9 ON command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 17 | and variable indicates All OFF |
| THEN Timer0=0 | then stop the counter |
| THEN Transmit X10 A/All Lights OFF | and transmit A all units OFF |
| IF X10 N/2 ON Command | If N2 ON command received |
| OR X10 N/10 ON Command | Or N10 ON command received |
| AND Timer0 > 0 | and timer is running |
| AND v0 = 17 | and variable indicates All OFF |
| THEN Timer0=0 | then stop the counter |
| THEN Transmit X10 B/All Lights OFF | and transmit B all units OFF |
| PART 5 verify if timer expires | |
| IF Timer0 Becomes > 10 | If timer reaches 10 seconds |
| THEN Timer0=0 | then stop the timer |
| END OF PROGRAM | (null) |
© 1996 - 2009, Home Toys Inc. - All Rights Reserved
Powered by LJB Management Inc.