How would you like to build your own conventional (wired-in) alarm system with complete X-10 connectivity ? Here are some of it’s features:

* 10 zones: 8 wired zones plus 2 X-10 “zones”
* special “watch zone” to protect a garage or garden shed while you’re home
* bypass any zone(s), find out which zone was triggered first, automatic re-arm with auto bypass of any tripped zone(s)
* panic button function by hardwired button and/or by X-10
* monitor (chime) mode to alert you of any doors being opened while you’re home
* all the above functions controllable from X-10 as well as from the control panel
* inquire about status remotely by X-10 STATUS REQUEST commands
* manually trigger all-purpose X-10 macros right from the control panel
* guest code that can be temporarily enabled
* does dishes while you’re gone

All this functionality can be yours ( well…ok, it doesn’t do dishes ) by building this 2-chip project based on the Intel 8751 micro controller. Interested ? read on…


AVToolBox Home Theater Components
I got into home automation for probably the same reason as many of you reading this did; I wanted to give my home a lived-in look while the house was unoccupied. In my case, it was after being the victim of a small break-in that I felt the need to do something to prevent a re-occurrence. Like most victims of such events will tell you, even if your insurance covers every loss and there is no financial impact whatsoever, the unpleasant feeling of knowing that someone violated your home can never be compensated for.

My first experience with home automation was about 18 months ago. After having acquired the original ActiveHome kit and having gradually converted all my light switches to X-10, I started to like the convenience of remote control (especially being able to turn off all the lights at once when leaving, or when the kids leave them on all over the house ) and then started to automate certain tasks like turning the pool filter off at night and back on in the morning. Having had a life-long hobby of building and designing electronics projects, I started to look for do-it-yourself projects on the Internet involving X-10 or home automation, and have found very few! I suspect that this is due to the difficulty of interpreting the X-10 protocol and interfacing it to what would be otherwise simple circuitry. I still see home automation mostly as a hobby, done by enthusiasts who actually enjoy digging in and customizing things. This reminds me of personal computing in the early 80’s, when computers were far from being off-the-shelf consumer items with standardized user interfaces and peripherals.

Fortunately, the X-10 protocol is an open specification and is well documented. I therefore started to investigate the best way to interface X-10 to the outside world and have found the micro controller chip to be the best solution, since not only the X-10 connectivity could be addressed by the micro controller, but also the logic of the project itself, resulting in a device with very few parts. In my particular case, I have chosen to work with the Intel 8751 since I had a good source for many of these at an unbeatable price ( i.e.: free ) and I had access to the original compiler from Intel. This chip is also widely available and well supported in the micro controller community, being the “granddaddy” of them all. Those of you who have tried to interface to X-10s TW-523 module know that it is not for the faint of heart, but the 8751s timers and interrupts make the tight timing much easier to deal with than with a PC.

The Project

This is actually my first ever micro controller project of any kind, so I first started to learn the particular assembly language for the 8751. What I originally set out to do was simply build an alarm with basic functionality, but my initial success ( after MUCH trial and especially error ) with X-10 connectivity spurred me on to add more and more features until I had filled the entire 4K EPROM of the 8751 and had used all 32 I/O pins (actually, I am only using 4094 bytes of the 4096 available. If anyone has an idea for a new feature that fits in 2 bytes, let me know…) . It’s amazing how much you can accomplish with 4K in assembly language! I now have a very complete alarm system with full X-10 connectivity for every function.

Your first question probably is: how do I get my 8751 programmed ? I have provided you with a downloadable binary file representing an image of the 8751’s EPROM. I had my own EPROM burner and I only needed to buy the micro controller adapter to be in business (by the way, my EPROM burner, a real bargain, came from Needham’s Electronics. I bought it, the PB-10, over 10 years ago. When I wanted the micro-controller module I looked for them on the Internet and there they were, not only still supporting it but even offering a software upgrade for free…). If you do not have an EPROM programmer, you will need to take the binary file to an EPROM programming service. You should be able to find this service at the same place you bought your micro controller, or they can probably refer you to an appropriate provider. Since this is a binary file, no conversion of any kind is necessary. You should, however, edit the file to put in the 4 digit arm/disarm code that you want, as well as the desired 4 digit guest code. Since this project does not have any non-volatile writeable memory, you must have these codes “burned in” the micro controller. The codes are located in the last 8 bytes of the EPROM and are in ASCII. First is the guest code, followed by the main code. As it stands, the file comes with “4096” as the guest code and “8751” as the main code, so the last eight bytes, in hexadecimal, are: 34,30,39,36,38,37,35,31 from locations FF8 to FFF.

There are few other bytes that you can change to customize the system (all values are in hex). Note that timing values should be adjusted at pro-rata of current value, because they are not exact seconds.
1CE 35 duration of WZ siren if tripped ( approx: 1 minute )
26B 17 exit delay ( approx: 25 secs )
2F1 17 entry delay ( approx: 25 secs )
325 75 duration of alarm siren if tripped ( approx: 2 minutes)
2DB C0 immediate zones ( no entry delay ) lowest bit zone 1, highest bit zone 8. currently 1100 0000 meaning zones 7 and 8 are immediate.

The particular version of the 8751 that I used is the 8751H. I know there are several variations ( including the CMOS 87C51) and various manufacturers of compatible chips, but I have not tried any of those, so if you have one of these, you may want to test it thoroughly. Study the schematic diagram carefully, being careful not to confuse what goes to +5V and what goes to +12V. The DB25 connector is used to allow a cable between the control panel and the actual system. Keep this cable as short as possible ( ideally 6 ft or less ). I have my control panel in a cut-out in the wall, and the system right below it in the basement. Also avoid using conductors that are next to each other in the cable for the 8 keypad connections, because the rapid switching transients from the keypad scanning routine can induce noise and cause the keypad to operate erratically. All the zone inputs are configured as normally closed (normally pulled to ground) by the various sensors. If you require some inputs to be normally open, you can add an inverter circuit (like a 74LS04) between the optocoupler and the 74LS244 inputs for these zones. Do NOT modify anything between the 74LS244 and the 8751, since the pins on the 8751 are used both as inputs and outputs. In fact, that is why the 74LS244 is there in the first place, to allow the zone LEDS to either show the zone inputs in real time, or show which zone was tripped. Also, do NOT use a crystal with a frequency other than 11.059 MHz. If you do, the X-10 timing would be altered and will not work.

The keypad contains the 16 key keypad, the 8 zone LEDS, the ARM status LED, the WATCH Zone status LED, and the pre-alarm buzzer. The two status LEDs have equivalent open collector outputs on the main board that you can use to add status LEDs to your door frame(s), so you can see if your system is armed or has been tripped even before entering the house. I chose this keypad because it was available for 75 cents at a surplus store. If you can only find a 12 key telephone type keypad, you can use it along with four extra normally open switches wired as shown in the schematic. Just make sure that the keypad is a switch matrix (most are).


To ensure successful construction, you should build a small part and then test it before continuing. Start by connecting the oscillator circuit (11.059 MHz crystal and the two 30 pf capacitors), the power-on reset circuit ( the resistor and capacitor connected to pin 9 ), and the 2 keypad status LEDS (ARM status and Watch Zone status. When you power it up, the two LEDs should be blinking together about once every 4 seconds. Now you know that the EPROM is correctly programmed and the processor is working. If it doesn’t work, try a manual reset of the CPU after powering up. You can do this by momentarily applying +5V to pin 9 of the 8751. If this gets it going, you might need to get a more stable power supply.

Next you should add the keypad and the pre-alarm buzzer. Test these by pressing keys randomly; the pre-alarm buzzer should acknowledge every keypress by a short beep. If you key in the arming code followed by the CODE key, you should get the keypress beep plus a second; longer beep (because the system can’t be armed unless all zone inputs are low ). This last test tells you that the keypad is correctly wired and is operating normally.

The next step is to add the X-10 connectivity components. These are the parts connected to pins 11,12,and 13 of the 8751, as well as the house code selection DIP switch connected to pins 14 to 17. Set the DIP switch to the desired house code according to the table on the schematic. With the TW-523 connected ( see caution on the schematic about the RJ-11 cable ), you should receive a 14 OFF when the circuit is powered up. This corresponds to an “alarm disarmed” message and could be used in some kind of auto-recovery mode with your HA system, although this should not be necessary with the backup battery on the alarm system. The 14 OFF received will also confirm your setting of the house code selected with the DIP switch. At this point, you could try sending X-10 on/off commands with the keypad (see Triggering Macros below).

After these initial tests, you can proceed to build the rest of the project and try the various commands described in the operating instructions. To be able to arm the system, you will need to connect the inputs to ground. You do not have to connect the TW-523 to test everything ( In fact, you could build this as a regular alarm system without X-10, although YOU, reading this on THIS web site would never imagine doing a thing like that …).

The X Philes…

Of course, X-10 connectivity is what made you read this far ! This project uses an entire house code to itself and if you take a look at the X-10 implementation table, you will see that the alarm system really milks the most from a single house code and does not waste much “address space”. The system was designed with the intent to use it in conjunction with a home automation (HA) system. Although you could use it with individual controllers or modules, you will not achieve the maximum versatility that a HA system provides. Bear in mind that certain events can transmit AND receive for a given unit code (eg. 13 ON is transmitted when system enters exit delay mode, and 13 OFF is a command accepted by the system to trigger the delayed X-10 zone). I originally tried to set up a logic where a same unit code and command could be received as one event and transmitted as another; it worked within the alarm system ok, but HA software ( in my case ActiveHome ) is not as discriminating: it will receive and interpret the codes it transmits. I therefore had to treat X-10 more as a broadcast medium instead of point to point.

In light of the above explanation, the keypad commands to initiate manual X-10 commands should be used only to trigger MACROS, and nothing else. This is because DIM and BRIGHT commands are used with the same unit codes. For example, if you were to use issue a 3 ON command from the keypad to directly turn on a lamp that is part of your HA system ( and the lamp is thus on the same house code as the alarm system ), it would turn on ok, but if you have another controller then sending DIM commands to the lamp, you would also be issuing a command to the alarm system to bypass zone 3 the next time it is armed! To avoid this, the 3 ON command should be received by your HA system as a macro that will then issue the ON command to the lamp, which will be on a different house code. This may sound complicated now, but in reality, you will rarely encounter this kind of problem if you stick to triggering macros ( since you can’t DIM a macro …).

The X-10 implementation was given extra attention ( …and memory space) to obtain a reliable system. It transmits for all 3 phases of the powerline, “listens” before sending, and detects collisions; it will re-transmit up to 5 times if a collision is detected. I’ve tested this by having it send a keypad command while hammering away on a mini-controller at the same time; when I stopped “jamming” it with the mini- controller, the command it tried to send finally got through. I made the X-10 routines as generic as possible because I have other projects in mind ( stay tuned…) with this micro controller.

X-10 Implementation Table
1 keypad macro(o) keypad macro(o) monitor zone 1(i) bypass zone 1(i) tripped status zone 1(i)
2 keypad macro(o) keypad macro(o) monitor zone 2(i) bypass zone 2(i) tripped status zone 2(i)
3 keypad macro(o) keypad macro(o) monitor zone 3(i) bypass zone 3(i) tripped status zone 3(i)
4 keypad macro(o) keypad macro(o) monitor zone 4(i) bypass zone 4(i) tripped status zone 4(i)
5 keypad macro(o) keypad macro(o) monitor zone 5(i) bypass zone 5(i) tripped status zone 5(i)
6 keypad macro(o) keypad macro(o) monitor zone 6(i) bypass zone 6(i) tripped status zone 6(i)
7 keypad macro(o) keypad macro(o) monitor zone 7(i) bypass zone 7(i) tripped status zone 7(i)
8 keypad macro(o) keypad macro(o) monitor zone 8(i) bypass zone 8(i) tripped status zone 8(i)
9 enable monitor(i) disable monitor(i) clear all monitor zones(i) bypass zone 9(i) send all zone tripped statuses(i)
10 monitor tripped on(o) monitor tripped off(o) (none) bypass zone 10(i) is monitor mode on ?(i)
11 W.Z. alarm tripped(o) in pre-alarm(o) (none) clear all bypassed zones(i) is guest mode on ?(i)
12 Panic on/off by X-10(i) in alarm/panic(o) (none) (none) any zones auto-bypassed ?(i)
13 zone 9 (X-10 delayed)(i) in exit delay(o) (none) (none) has W.Z. ever tripped ?(i)
14 zone 10 (X-10 immed.)(i) in disarmed mode(o) (none) (none) has alarm ever tripped ?(i)
15 arm W.Z.(i) disarm W.Z.(i) (none) (none) is W.Z. armed ?(i)
16 arm system(i) disarm system(i) enable guest code(i) disable guest code(i) is system armed ?(i)

(i) = input command (incoming command interpreted by alarm system)
(o) = output command (command sent out by alarm system) status requests are input commands that will cause a status response to be output.


To keep things as clear as possible, I will describe each functional area separately, along with the X-10 commands related to each function. When I refer to the LEDs flashing cadences, I will describe one of 4 different possibilities;

* Slow: LED is ON briefly once every 4 seconds.
* Regular: LED will turn ON and OFF once per second.
* Fast: ON and OFF twice per second.
* Alert: LED flashes ON and OFF 3 times in quick succession, with a short pause between each 3 flash group.

Zones: Before discussing any functions, it is important to understand the different zones and their characteristics. This is basically a 10 zone system ( 8 wired and 2 X-10 zones). Of the wired zones, zones 1 to 6 are delayed entry zones, meaning that if these are triggered, you will have the 25 second pre-alarm condition before the siren is activated. Use these with magnetic door switches or motion sensors. Zone 7 is an immediate alarm zone. If triggered, the siren will sound right away. Use this one with window breakage sensors or wired loops that are normally never tripped even when you’re home. Zone 8 is also an immediate alarm zone that doubles as the Watch Zone. This is a special zone that you can arm/disarm while you’re home by pressing a single, dedicated key on the keypad. Use this for your garden shed, detached garage or any other out-building. I chose to make this zone immediate if violated ( how long does it take to steal a bike ?). Since you do not want to trip this one accidentally, it has its own status LED and its own siren output. You can thus verify its door frame LED every time you go there. Zone 9 is the X-10 triggered zone with entry delay, which you could use with all those free Hawkeyes you’ve got…This zone is triggered if the alarm system receives a 13 ON command. Zone 10 is an X-10 immediate trigger zone, for whatever use you can come up with. It is triggered by a 14 ON command.

Arming/Disarming: To arm or disarm the system, enter the 4 digit code followed by the ENT key. If you get a second, longer beep after pressing the ENT key, it’s because a zone is triggered ( e.g.. a door is still open; all 8 zone lights should be lit ) and the system can’t be armed. There is also a dedicated input for remote arming and disarming; a momentary connection to ground on this input will toggle from one mode to the other. You can have zones ignored if desired by bypassing them before arming ( see bypassing ). When the system is unarmed, the ARM LED and the Watch Zone LED will blink at the Slow rate. Once the system is armed both LEDs will go in a Fast blink, and the pre-alarm buzzer will sound. You have 25 seconds to exit and leave all active ( non-bypassed ) zones undisturbed. Once the exit delay is over, both LEDs will blink at Regular rate and pre-alarm buzzer will silence. If you installed any door frame LEDs, you will be able to see that your system is armed when you leave and return simply by watching the LED flashing at the Regular speed. If, upon your return, you see that the LED is flashing the Alert sequence instead, this means that the system was triggered in your absence, and you may want to have a quick look around the house before entering.

If the system is triggered and the entry delay expires, the system will sound the siren for about 2 minutes and then re-arm itself. At the moment it re-arms, it will automatically bypass any zones that are still triggered ( burglars don’t always take the time to close the doors when they flee…). These are added to any manually bypassed zones ( see Bypassing ).

When you return and open the door, you will trigger the system. This will sound the pre-alarm buzzer and put the LEDs in Fast blink. You have 25 seconds to disarm the system before the siren is activated. If you see that the system was triggered before you returned, you may now (after disarming ) verify which zone triggered the alarm ( see the Display section ).

X-10 Functions: You can arm and disarm the system by sending it 16 ON and 16 OFF respectively. The same conditions apply as before for a successful arming in regards to zones being ready or bypassed. You can find out if the system did arm by issuing a STATUS REQUEST to unit 16. A status of OFF is returned if disarmed. ON is returned for any other condition (in exit delay, armed, or entry delay). In addition, the following X-10 commands are transmitted by the system: 11 OFF when entering in pre-alarm mode ( I use this to turn on the light in the entrance when I return and open the door, so I can disarm a lit keypad ). 12 OFF when in alarm mode ( how about some flashing lights to go along with the siren ? ). 13 OFF when in exit delay ( you could use this to trigger a macro that will turn on a driveway light for a few minutes as you are leaving ). 14 OFF when system is disarmed ( Hey, use this to stop your robo-dog that you activated when you went in pre-alarm…).

Other status information can be obtained as well: request STATUS of unit 14 to know if alarm has been tripped, response of ON if so, OFF if not. Request STATUS of unit 12 to know if any zones were auto-bypassed as a result of an auto re-arming operation, response of ON if yes, OFF if not. You can inquire about each zone if it was triggered when the system was tripped the first time since arming. Request STATUS of unit 1and you will get ON status if zone 1 was tripped, OFF if not. This is valid for zones up to 8. If zone 9 ( X-10 with delay) was tripped, you will get ON status for units 1 to 4 and OFF status for units 5 to 8. For zone 10 (X-10 immediate), you will get the opposite pattern ( 1 to 4 OFF and 5 to 8 ON ). See the Display section for more details about tripped zones. Finally, requesting STATUS for unit 9 will cause the system to respond with the statuses of units 1 to 8 in succession.

Guest Code: If you have guests or other people to whom you want to give temporary access to your home, you can enable guest mode, which will give them the ability to arm and disarm the system. This was the last function added and I was just able to find enough memory to implement it… The idea is that you want to the person enabling the guest code to have to know the main code first, and you don’t want it to be turned on without your knowledge. To meet these criteria, guest mode can only be turned on DURING exit delay time! Thus, you arm the system ( using the main code ) and then press * followed by ENT to turn on guest mode, or # ENT to turn it off. If you do not need to arm the system at this time, you can then disarm it now. 25 seconds should be amply sufficient to press the two keys needed to switch guest mode on or off. By default, guest mode is disabled.

X-10 functions: You can enable or disable guest mode by X-10 anytime. Send a 16 BRIGHT to enable guest mode, and a 16 DIM to disable it. Inquire on the STATUS of unit 11 to know if guest mode is enabled. Response of ON if it is, OFF if not.

Bypassing: Bypassing zones is done with the BYP key on the keypad. You can put the display In bypass display mode before doing this to see the zones as you bypass them, if you wish. To bypass a zone, press the digit corresponding to the zone followed by the BYP key. The X-10 delayed zone is zone 9 and the X-10 immediate zone is zone 10, bypassed with the “0” digit. If you make a mistake, you can clear all bypassed zones by pressing the # key followed by BYP, and start over. Important: zones will only bypassed for the NEXT time armed ! EVERY TIME the system is disarmed, all bypassed zones are CLEARED ! This is a safety measure designed to avoid having zones inadvertently bypassed forever…

X-10 functions: You can bypass zones by X-10 using DIM commands ( just imagine that you are “dimming” the zone from view …). This is where a versatile HA system is needed… so you can send DIM commands without sending a ON or OFF first. Bypass zones 1 to 10 by dimming the corresponding unit number. To clear all bypassed zones, DIM unit 11 .

Watch Zone: This is a function that I wanted to design-in from the start. I have heard too many tales (including my own brother’s) of thefts from garden sheds in the night while the owner was home. To be effective, this had to be simple to use. The WZ button on the keypad toggles the zone on or off every time it is pressed. If the zone cannot be armed because it is already triggered (i.e.: a door is open), you will get the “double beep” warning, like with the main alarm. This zone has its own status LED (so you can check before opening your shed…) and its own siren output, in case you want to make it a different sound and/or intensity. When disarmed, the status LED will blink at the Slow rate, and will go to the Regular rate when armed (there is no entry/exit delays on this zone). You can have both siren outputs activate the same siren by simply connecting the outputs together. This zone will sound immediately if triggered. Once triggered, the siren will sound for about 1 minute, and then attempt to re-arm itself if the input is back to normal. After having been triggered, the status LED will blink at the Alert rate, until it is eventually disarmed. I have a small detached garage with a roll-up door and a side door that I protect with this zone, the magnetic reed switches are thus wired in series.

X-10 functions: You can arm and disarm the Watch Zone by sending it 15 ON and 15 OFF respectively. You can inquire about it’s arming status by requesting STATUS for unit 15, which will respond ON or OFF accordingly. The Watch Zone is a nice application to have with X-10 because this is the kind of thing that you want to arm every night, but don’t want to trigger accidentally during the day, and thus tends to get “forgotten” by the users of the shed or garage. I have setup a macro in my HA system to arm it at 11:00 PM and disarm it at 6:00 AM every day. You can request STATUS of unit 13 to know if the watch zone was triggered, response of ON if yes, OFF if not.

Panic Button: No alarm system is complete without a panic button ! There is a dedicated input for a normally open pushbutton(s) to activate panic mode, which will immediately sound the siren. This button is a toggle; press once to activate panic mode, press it again to de-activate. You can also toggle panic mode by X-10, by sending a 12 ON command to the system. When panic mode is entered, the system will also transmit a 12 OFF command (like when it goes into alarm mode) so that your HA can also get in on the act…

Monitor Mode: This is also called chime mode in some alarm systems. Monitor mode allows you to select any of the 8 wired zones to be monitored for activity while you’re home, and will sound the pre-alarm buzzer for 2 seconds when any of the selected zones are triggered. There is also a dedicated open collector output that will be turned on for the 2 seconds if you want to add a chime or other warning device. This is useful, for example, when someone is alone in one part of the house during the day and you are concerned that someone could “sneak into the house” silently. I have heard stories of people being robbed in broad daylight while everyone is in the backyard or in the swimming pool. Another side benefit of this mode is to setup motion sensors and such; it chimes every time you trigger it.

This function was added late in the game and does not have a dedicated key on the keypad. It uses the * and # keys for programming and activation ( and X-10, of course…). Keep in mind that the * key corresponds to ON and the # key to OFF ( I chose these to be consistent with the usage on X-10s Telephone Responder). You activate monitor mode by pressing # followed by * (“from OFF to ON”) and de-activate with the opposite * # sequence. By default (after power on), all zones are unmonitored and monitor mode if off. To add zone 1 to the monitored zones, press #1* (“OFF 1 ON”). To remove zone 3 from monitoring, press *3# (“ON 3 OFF”) and so on. You can use the DSP key to display the monitored zones as you program them, see the Display section. Just remember that if you are displaying the monitored zones, they will not trigger until you exit display mode.

X-10 functions: Turn on monitor mode by sending a 9 ON command and turn it off with a corresponding 9 OFF. When a monitored zone is triggered, the system will transmit a 10 ON command and 2 or 3 seconds later, transmit a 10 OFF. You can also program the monitored zones using BRIGHT commands (“brighten” up the zone you want to monitor…). A BRIGHT 2 command will monitor zone 2,etc. You cannot remove monitor zones individually by X-10, but you can clear them all by sending a BRIGHT 9 command and then add the zones you want. For example, you want to monitor zones 1,2,3, and 6 between 9 AM and 5 PM, then just zones 1,2,and 3 from 5 PM to 8 PM, and none at night: A 9 AM macro would send 9 ON, 1 BRIGHT, 2 BRIGHT, 3 BRIGHT, 6 BRIGHT. At 5 PM, another macro sends 9 BRIGHT, 1 BRIGHT, 2 BRIGHT, 3 BRIGHT. At 8 PM, a macro sends 9 OFF. Get the idea ? You can also find out if monitor mode is activated by requesting STATUS for unit 10, you will get the appropriate ON or OFF response.

Displaying: The DSP key is used to toggle between real time input display and showing one of 3 zone conditions on the 8 zone LEDs . By default, display is “off” and zones will be displayed in real time, with a LED being ON if zone is ready and OFF if triggered. If no keys are pressed for 15 seconds, any display mode will be exited and returned to real time. This is important as the system (or Watch Zone) cannot be armed and monitoring will not work if in display mode.

Pressing DSP once will show the zones that were tripped the FIRST time that the alarm system was triggered since last being armed. Tripped zones will flash at the Alert rate. If zone 9 was the one triggered, LEDS 1 to 4 will be flashing. If zone 10 was triggered, LEDS 5 to 8 will be flashing.

Pressing DSP a second time will display the bypassed zones. Remember, every time the system is disarmed, these will be cleared. You can enter this display mode as you are programming the zones to be bypassed just before arming the system. Bypassed zones will flash at the Fast rate.

The third press of the DSP key will show you the zones being monitored. You can use this mode to program or verify which zones are being monitored; these will flash at the Regular rate.

A fourth press will exit display mode and return to real time zone display. This must be done in order for arming or monitoring to work.

Triggering Macros: Last, but not least, is the possibility to trigger X-10 macros from the alarm keypad. A key from 1 to 8 followed by * ( for ON ) or # (for OFF) will send the corresponding ON or OFF command to your HA system. Think of it as having a mini-controller right on the panel. I use this to trigger one of several “going away” or “coming home” macros in my HA system. You must agree that the alarm panel is a very convenient location to do this, since you are about to arm or disarm the system at the same moment. If you want to get fancy, you could even program an exit macro that sets the house the way you want it and ends by arming the system ( by sending a 16 ON back to the alarm system )!

Usage Examples

You are on vacation, and want to check up on your house. You connect to your HA system ( by phone, web, or whatever ). You inquire STATUS of unit 16 to make sure the system is still armed. You then inquire STATUS of unit 14 to know if it was triggered. A response of 14 ON says yes… Hmmm, what happened ? A status request of units 1 to 8 responds with ON for units 1 through 4 and OFF for units 5 to 8, which corresponds to the X-10 delayed-entry zone ( ah yes, the motion sensors in the stair- case) . Well, either someone broke in through a window, or your cat is having a hopping good time… A STATUS request of unit 12 with a response of OFF says that no zones were auto-bypassed when the system auto re-armed, so no doors appear to be open. Thinking that if your cat is the culprit, this could re-occur several times ( and annoy the neighbors ), so you decide to temporarily bypass the zone: 16 OFF to disarm system, 9 DIM to bypass zone 9, 16 ON to re-arm. A quick call to a neighbor to have a brief look around your house ( and take in the mail while he’s at it ) should give you a clearer picture of the situation, so you enable the guest code with a 16 BRIGHT command.


Well there you have it, a project to keep you busy …and connected. I hope you have as much fun building this project as I had designing it. If you have any comments about this system, or there are un-answered questions that you would like to ask before building it, do not hesitate to e-mail me at While I cannot guarantee an instant response, I will do my best to answer you with the available resources ( …time). As mentioned on the schematic diagram, I have provided this project for the enjoyment of the reader and cannot assume responsibility for any damage or consequences from using the information provided here, but do enjoy ! You may build this project and use the 8751 software for your own personal use, but I retain all rights to it and you may not build this project for profit. I sure would appreciate any feedback from those of you who build it, since the home automation community here, in Montreal, is still in it’s infancy and the opportunity to share ideas with other enthusiasts right now rests mostly on the Internet.

In ending, I would like to thank a few people for their help that made this project possible: Pierre Charbonneau of Ottawa for introducing me to X-10 and home automation, Ron Williams, also of Ottawa, for helping me with my initial tests with the TW-523, and work colleague Gaetan Doyon who provided me access to his 8751 compiler and documentation.