How To Connect Z-Wave and X10 Networks

Photo of author

Tim Higgins


ELK M1 Gold Cross Platform Control

One of the most valuable characteristics of building your own home automation system is the ability to personalize it by picking and choosing the devices that meet your needs. However, there are times when you require a product to perform a certain function and that product may not exist for the protocol of your choice.

The history of the X10 protocol dates back to the mid 1970s and X10 devices are still in production today. Throughout the lifetime of X10, engineers and hobbyists have created a large variety of device types from wall modules to light switches, motion sensors, water leak detectors, drive way sensors, and much more.

Eventually, we will probably see similar devices available that utilize the Z-Wave protocol. But until then, we can use existing X10 devices to meet our needs. How can we allow the different protocols to interact with each other? We do this by bridging the communication gap between the two protocols using a home automation controller.

The X10 protocol is known as a power line carrier (PLC) protocol and how it works is straightforward. In the United States, home-based power alternates current direction 60 times a second. Each time it changes direction the voltage at the point of change is zero. X10 sends data over the home’s power lines as close to this point as possible.

By contrast, the Z-Wave protocol is known as a wireless mesh network protocol and it does not rely on the home’s power lines to transmit data. Everything is transmitted using a radio frequency (RF) signal in the 908 MHz signal band.

So there is an obvious communications barrier between Z-Wave and X10! They not only speak different languages but they also use two very different methods of transportation. So how do we cross this barrier? By building a bridge using software or hardware. Basically we need something that speaks both protocol languages and provides a logic engine.

The inexpensive solution to this problem is to use a software product such as HomeZix or HomeSeer. You would then use a X10 PC controller such as the W800RF wireless X10 receiver or SmartHome PowerLinc PLC. Both of these X10 controllers communicate with the software using the computer’s serial port.

You would also need a Z-Wave PC controller, which comes in many varieties including USB, serial, and Ethernet. HomeZix and HomeSeer both support speaking the X10 and Z-Wave language and they both have built-in logic engines.

An Example

Let’s look at a practical example to try and understand the needed components. Say we have installed an X10 driveway sensor and we want that to turn on our Z-Wave light switch to illuminate our driveway when we come home after dark. The driveway sensor would send an X10 message to the X10 PC controller, which would then relay the message to your software. This is where the logic engine comes in to play.

The software allows you to react to events in specific ways based on the logic you tell it to perform. For example, you would write a logic statement such as "WHEN driveway is On AND after-sunset is True THEN turn lights On". The logic engine allows you to accept input from one type of device and react by outputting a message to another type of device. Thus, the communication gap has been bridged.

A more expensive, but just as effective, solution to bridging the communications gap is to use hardware controllers. Hardware controllers such as the ELK M1 Gold also contain logic engines that you, the installer, must program. The advantage of using a hardware controller is they are typically more reliable and consume less power than leaving a PC on.

There are other hardware solutions in development that will likely be less expensive than those I’ve already mentioned. One of these is the Wayne-Dalton X-10 Bridge Controller, which, according to the company, is coming soon.

Wayne-Dalton X-10 Bridge Controller

Figure 1: Wayne-Dalton X-10 Bridge Controller

The ELK M1G is a fully functional home security system that can replace your existing security system, while allowing you to keep your existing security sensors. If you don’t have an existing wired security system, don’t worry; the ELK M1G also supports the use of many different wireless sensors including X10.

To work through this tutorial, I am going to assume you already have an ELK M1G installed. If this is not the case, then follow these video tutorials from Interscience International to learn everything from how to properly unpack your ELK to programming the logic controller.

What You’ll Need

  • ELK M1G (ELK M1)
  • Various Z-Wave Devices (On/Off/Dim Switches)
  • Primary Z-Wave Controller with group replication (ACT HomePro ZTH100)
  • ELK-M1XZW (M1 Z-Wave Interface)
  • ELK-M1DBHR or ELK-M1DBH (*OPTIONAL* – M1 Data Bus Hub)
  • ELK-M1XSP (M1 Lighting / Thermostat & Serial Port Expander)
  • W800RF32 (X10 RF Receiver)
  • Various X10 (DS10A Door Contact, EagleEye Motion Sensor)

ELK Products has done a good job documenting the installation of all of the above components. (The above hardware is listed in the order it should be installed.)


In a nutshell, here is what you will need to do to install the hardware. Start by creating a Z-wave network with a controller that supports group replication. Group replication is required and as I write this I know of only the following primary controllers that support this feature.

  • Intermatic HA09 and HA07 (16 Groups)
  • Wayne-Dalton Wireless Gateway (3 Groups)
  • ACT HomePro ZTH100 (64 Groups)
  • ControlThink PC SDK

The ACT HomePro ZTH100 is by far the easiest to use. To use the PC SDK you must know the Node ID of the devices you want to copy into the ELK Z-Wave Interface. You’ll also need to do a little bit of C# or coding. Click here to open a coding sample.

Once you have set up your Z-Wave network, you are ready to install the ELK-M1XZW Z-Wave Interface. There is more to installing this than just connecting wires. Follow the instructions carefully, as you may need to run the ELKRP software or set up the hardware through your ELK M1G keypad.

After the ELK-M1XZW Z-Wave Interface is installed, you are ready to copy your primary controller to it. You must put your primary controller in replication mode. For the ACT ZTH100 remote, you press MENU then arrow over until you see SETUP on the display. Press OK to enter the setup menu and arrow over to COPY REMOTE CTRL. Arrow over to Send Information and press OK to start the transfer. That’s it!

If you are using the ControlThink PC SDK, then you simply plug in your USB stick and edit the code to use your Node ID then run the application.

Now that your primary controller is in replication mode, you need to put the ELK-M1XZW into programming mode. Open the cover of the module and you will notice two circuit boards. Press the button on the larger board for five seconds. (The button is located on the edge of the circuit board near the LEDs.)

After you perform these steps the ELK M1 and Z-Wave controller will start transferring data. The ELK-M1XZW and primary remote must be within three feet of each other for this to work. Read the ELK-M1XZW manual for instructions on testing the setup using your ELK M1 alarm keypad.

Now you should finish installing the remaining ELK M1 modules. The ELK-M1DBHR and ELK-M1DBH are optional components and are used only to make wiring the Serial Expander easier and with fewer messy wires.

Note that the ELK-M1XZW Z-Wave Interface is displayed as a Serial Expander in the ELKRP software. If you happen to wire the ELK-M1XSP Serial Expander incorrectly, you will only see one listing of a serial expander in ELKRP. Figure 2 demonstrates what should appear under serial port expanders.

ELKRP Serial Port Expanders
Figure 2: ELKRP Serial Port Expanders

Since there are two serial expanders on the ELKRP data bus, you will need to make sure the address jumpers on each Serial Expander are set correctly. If you have been following my order of installation, the Z-Wave Interface should be set to address 1 and the Serial Expander should be set to address 2. You will also need to ensure the jumpers on the Serial Expander are set for use with the W800RF32. (They are by default.)

The W800RF32 is connected with a standard nine-pin serial cable to the Serial Expander. Apply power and you’re done.

Program the ELK M1

The ELKRP software can be downloaded from ELK Products. You’ll need to register for a dealer account, but anyone who owns an ELK M1 can register. All you need is some personal information and the serial number of your ELK M1.

In the above list of "what you’ll need", I listed two X10 devices: the EagleEye motion detector; and DS10A wireless door/window contact sensor. Both devices are readily available. However, there are two major distinctions in how you use each to trigger events. The EagleEye uses the lighting features of ELK and the DS10A uses Text. I’ll start by demonstrating how to configure the EagleEye motion sensor.

But first, let’s take a step back and talk about configuring your Z-Wave devices. In ELKRP under the Automation tree, click Lighting. The ELK translates all Z-Wave groups into their X10 equivalent. So A1 in X10 is equivalent to Group 1 in Z-Wave and A2 is equivalent to Group 2 and so forth. Only the devices in groups set up by your primary controller and copied to the ELK Z-Wave Interface will be available for you to use in the logic engine.

Figure 3 shows the proper configuration if you copied three groups. Required fields are Format and Type. Z-Wave support in the ELK does not allow status reporting so there is no need to check Show.

Z-Wave Lighting Groups

Figure 3: Z-Wave Lighting Groups

Once you have your Z-Wave devices set up you can now write "rules" in ELKRP. Writing rules is another way of saying to program the logic engine. But before we write rules, we should configure the EagleEye motion sensor. To do this, first follow the instructions that came with the EagleEye to set the X10 house code and Device Code. Keep in mind that your Z-Wave Devices are already using A1 through however many groups you have. In our example, this would be A1 through A3.

You should pick something much higher to allow for expansion of your Z-Wave network. In this example, we will you house code C and device code 1 (C1) for our motion sensor. Figure 4 shows the proper configuration under lighting for an X10 EagleEye motion sensor. Again, Format and Type are the required fields.

X10 Motion Sensor
Figure 4: X10 Motion Sensor

Under the same automation tree, select rules then Click New->Whenever->Lighting Change and you will see a window like the one shown in Figure 5. Select "X10 Motion [33(C1)]" as the device that will trigger your event.

Whenever X10 Motion Changes
Figure 5: Whenever X10 Motion Changes

You want the device to trigger the event whenever it is activated (Turned ON as in Figure 6). You have now set up a rule that states whenever the X10 Motion Sensor is triggered, you want to turn on a Z-Wave light. You have successfully bridged the gap between the two protocols!

Then Control Z-Wave

Figure 6: Then Control Z-Wave

Figure 7 shows what the rule should look like in ELK RP. You may also want to create another rule that is triggered when the motion sensor is turned off so the light will also turn off.


Figure 7: ELK RP Rule

Adding the DS10A

Setting up the DS10A wireless door/window contact sensor is different from the previous setup. The DS10A sends a wireless signal that the ELK Logic Engine does not recognize as an X10 lighting command. So you will need to use the incoming text on the Serial Port expander to determine if your DS10A is sending an On or Off command.

To do this, you need to learn a little more about your DS10A devices. First view this video from CocoonTech to get a better understanding of the software you need to download. Then download and install the W800RF32 Demo Software (ZIP file link).

Now disconnect the W800RF32 from the Serial Expander and connect it directly to your computer’s serial port. This is where owning a laptop comes in handy. If you don’t have a laptop, you may want to simply disconnect the serial cable between your PC and your ELK main board and use that temporarily.

Now that the W800RF32 is connected directly to your PC, you can run the W800RF32 Demo Software. Select the correct port and click Apply. Now physically open and close the DS10A sensor and record the third byte followed by the first byte in that order. There will be a different code for open and closed so make sure you record both.

Back in the ELKRP software under the automation tree, select Text->New and enter the four-character alphanumeric code that you recorded from the demo software. Then click the Insert combo box and select Carriage Return. Your results should be similar to Figure 8.

Create Text String
Figure 8: Create Text String

Click OK and follow the same steps you did for setting up a rule for the Motion Sensor, except this time instead of triggering from lighting changes, you need to select WHENEVER->Text (ASCII) String is Received and configure the trigger as shown in Figure 9.

Text ASCII Trigger

Figure 9: Text ASCII Trigger

Finally, Figure 10 demonstrates how your final rule should appear for a DS10A X10 Contact Sensor controlling a Z-Wave Lighting Device.

DS10A Contact Sensor Rule

Figure 10: DS10A Contact Sensor Rule
This article originally appeared on Go here for a broader look at Z-Wave technologies and applications.
© 2008 ZWaveWorld, Inc.

Related posts

Consolidate Control Using Logitech’s Harmony 890 Remote

We kick off our new Home Control section with a How To for using a Harmony 890 to control Z-wave devices.

How To Reduce Phantom Power Use

You can get rid of power wasters with the help of some new products.

Remote sync your smartphone with Sync ML and Funambol

Did you know that your "smart" cell phone probably has remote sync capability just waiting to be used? Kevin Herring shows how open source once again comes to the rescue for a free way to keep your Outlook data up to date no matter where you are.