Insteon Home Automation

This post covers some installation tips about setting up automation products that use the popular Insteon technology marketed by a company called Smarthome. One of the reason for this tutorial is that I plan on creating some Insteon-related software products, and it makes sense to document a typical Insteon home installation that can be used as a realistic model for the software.

Why Insteon?

Smarthome will enumerate a number of reasons why insteon is better than other technologies like X10. The crux of the matter is that X10 doesn’t have a retry mechanism (messages that are lost due to interference are lost) whereas Insteon does. Insteon doesn’t absolutely guarantee delivery as there are a limited number of retries, but it’s certainly much better than X10. Insteon also offers an automatic repeating function (devices that receive a message destined for a different device will retransmit it), and the ability to link multiple power phases using a RF link between hybrid RF/PLC modules. The end result is a system that’s much more reliable than X10 without the need for explicit repeaters, signal bridges, etc.

Another thing about Insteon that’s better than X10 is the addressability. X10 devices use two dials for house and unit codes. A module typically only responds to one code, and a controller typically only sends one code. Insteon modules have 24-bit addresses burned into them at the factory, and links stored in nonvolatile RAM. An Insteon module can be configured to respond to many different controllers, and a controller button can control many different modules. This leads to something called a “Scene”, whereby a single button on a controller can set a variety of lights or appliances to a set of configured states.

Configuration Methodology

There’s a couple of different ways to setup modules:

  1. By running around the premises pushing buttons. You push and hold a button on one Insteon device, then run around pushing buttons on other Insteon devices to link them together. Lots of pushing and holding and movement from place to place.
  2. By software. Using a program like Houselinc or Powerhome, you can program the Insteon modules remotely. Rather than having to manually pair them all by hand, you can drag and drop using a windows interface.

I’m going to use method #2 (software programming) whenever possible. The advantage of this is that it’s very easy to get a high level overview of the links between devices. These links do get complicated, especially when you start introducing devices called “keypadlincs” that have multiple buttons and can control and respond to multiple devices.

Type of devices

The sample configuration is going to use all of the following:

  1. Switchlinc (dimmable). A standard paddle-like light switch. Pushing the top of the paddle turns a light on, pushing the bottom turns a light off. Pushing and holding the top or bottom will brighten or dim it.
  2. Switchlinc (relay). Similar to the dimmable switchlinc, but without the dimmer feature. It’s handy for devices that cannot be dimmed like ceiling fans, motors, pumps, etc.
  3. Keypadlinc. The keypadlinc comes configured in either a 6-button or 8-button configuration. These function as in-wall controllers for other devices. For example, you could use one button on a keypadlinc to run your front lights, another button to run your back lights, another button to turn the living room lights on and off, and a final button to run a ceiling fan. Each keypadlinc also includes a dimmer or relay (depending on the model ordered), so it’s possible to also control a load on the keypadlinc. This means a keypadlinc can easily replace a switchlinc.
  4. Appliancelinc. These are traditional appliance modules. You plug it into an outlet, and then you plug the appliance into the module. It can then turn the appliance on and off. The functionality is similar to a switchlinc-relay, but in a portable module rather than an in-wall switch.
  5. Lamplinc. Traditional map modules. Plug it into the wall, then plug the lamp into the module. Like the Appliancelinc, but supports dimming.
  6. Motion Sensors. These are passive infrared detectors that can detect motion and control the other modules. Two obvious uses are occupancy sensors (to turn room lights on when people are in them) and security sensors (to turn outdoor lighting on when people are around).

Installing Switchlincs

Here we run into our first set of modules. The premises to be retrofitted had some leviton X-10 modules installed and the goal was to replace them with switchlinc modules. The switchlinc modules were just ever so slightly wider than the leviton modules and didn’t fit the electrical box! Here is a comparison of the two modules:

– insert pic here –

The problem is the type of junction box. Rather than having square corners, it had rounded corners. The switchlincs would not fit this box because of the width problem. Here is a picture of a typical box (this one has traditional paddle switches in it):

– insert pic here –

These are the sorts of issues that you might run into setting up Switchlinc modules in your premises. It probably makes sense before an installation to do a survey of the junction box, checking:

  1. Make sure the boxes are wide enough.
  2. Make sure the boxes are deep enough.
  3. Make sure there is a neutral wire in each box.

Installing Motion Detectors

The motion detectors can be configured in two ways

  1. By using a set of jumpers on the back of the module
  2. By setting jumper #5 on the back of the module (software configuration) and then using Houselinc or similar software.

Again, we’re going to stick with our philosophy of using software to configure modules whenever possible rather than manually configuring and linking. So, we set jumper #5 and use the houselinc software to setup the module. Here we run into our first peculiarity.

The Motion Sensors will not listen for configuration messages unless they’re in linking mode. To initiate linking mode, you have to open up the cover and push the link button. Then you click the synchronize button in the Houselinc software and it’ll download your configuration (and links) into the motion detector. This is just plain silly. It’s a software-configurable device, but in order to configure it you must 1) take it down, 2) remove the cover, 3) push and hold a button, and 4) run to the other room and click a button in the program. Either that or I was really missing the obvious on these devices. At the very least, it needs to be possible to push the link button without having to remove the cover.

Integration with SmartLinc

Now that everything is setup on the physical devices (switches, keypads, etc) and in the Houselinc software, the next step is to figure out how to integrate Houselinc with the Smartlinc controller.

Smartlinc is more limited than Houselinc, but offers several advantages. First and foremost, it doesn’t require a PC be constantly powered on and running like Houselinc does. Second, it has some great iPod/iPad/Android integration features. Third, it allows access from any web browser. If you’re going to be traveling, you’d perhaps like to leave all of your home computers off, but still have control of your lights and other devices remotely. This is what Smartlinc is good for.

So, how do we get Smartlinc to recognize all of our Houselinc scenes? The process isn’t all that difficult and we can get by doing it all in software, without having to run around the premises pushing and holding buttons on switches. First we need to create some placeholders for the scenes in Smartlinc. We’ll create two rooms: Bedroom and Outdoor. In Bedroom we’ll add two devices: light and fan. In Outdoor, we’ll add Front Lights, Back Lights, and Side Lights. We don’t need to actually link these to devices yet, we’ll do that in a moment in Houselinc. What we do need to do is to figure out some scene numbers.

Go into each room in Smartlinc and mouse over the name of the scene. Your web browser should show in it’s status bar the URL (if not, click it and note the URL in your browser URL bar). In our sample household, the button for the bedroom light has a link to http://ipaddr/01-01-F and the bedroom fan as a link to http://02-01-F. The two numbers in these URLs are the room and screen numbers respectively (light = room1:scene1, fan = room2:scene2).

Now, we go into Houselinc to setup the links. First, make sure our Smartlinc device has been added to houselinc (if not, write down the device number and use the <add> button). If you expand the Smarlinc device, you’ll see that it has links for 15 rooms and 16 scenes per room. These correspond exactly to those numbers for the URLS. For the purposes of Houselinc, the Smartlinc device looks a lot like a Keypadlinc but with 240 buttons (15 groups of 16) instead of 6. Think of it as a super-keypadlinc connected to a web browser. Thus, If we drag smartlinc room1:scene1 into the controllers box for our ‘bedroom light’ device, then we’ll associate the light button in the smartlinc as a controller of the bedroom light. Be sure to also associate it as a controller of the buttons of any other keypads that also control that light, so that it controls the LED on the keypad. Houselinc will then synchronize these links, and our Smarlinc can be used to control our houselinc scenes. At this point you should feel pretty confident at dragging and dropping links, so this should be easy by now!

TED-5000 Interference Issues

Our little test environment also includes a TED-5000 whole home energy monitor attached to the main panel. The TED also communicates using PLC between the measuring unit that is installed inside the main panel and the gateway which is installed in a branch circuit (this is done to keep low-voltage wiring, such as Ethernet out of the main panel, and because wireless does not penetrate metal enclosures well). Unfortunately, the TED-5000’s PLC caused some grief to the insteon devices.

In particular, dimmer modules (switchlinc, etc) would experience a momentary flicker from on to off and back to on again at random intervals of about 30 minutes to a few hours. The precise reason for this is unknown, whether the switchlinc was misinterpreting TED communication as an Insteon command, or if it was causing the dimmer componets (for example,a triac) some issue. The solution is to isolate the TED from the rest of the household wiring.

This can be done using an X-10 XPF filter module, available for as little as $6 on ebay. Use the XPF to isolate the branch circuit that the TED gateway will be plugged into, as well as the TED’s MTU (i.e. The red wire fromt he XPF connects to both the black wire from the MTU and the black wire from the branch circuit; The MTU’s red wire is capped, and the MTU is put into 120V mode in the footprints software). An existing branch circuit can be used if one is handy. Whatever circuit you want to isolate should not have any insteon devices attached to it, as the filter will filter out Insteon signals as effectively as it filters out the TED signal. Think outside the box — circuits for dishwashers, garbage disposals, washers, furnaces, etc, may be on isolated circuits already. If you can’t find anything, then adding an additional dedicated branch circuit is another option, which is what we did in our case.

Once isolated by the XPF module, the TED no longer introduced Insteon interference, and the flicker on the switchlinc went away.

SmartLinc timekeeping

My smartlinc loses about 30 seconds to a minute per day. I don’t know why, as it as a DS1337 RTC. A couple of pictures: (click to make bigger). The DS1337 is the chip right under the battery backup.

There’s a couple of ways to solve the problem without having to do any modifications. In particular, if you have a linux box handy then you can create a simple cron job and use the following script:


#! /bin/sh

# script from Bruce (bmaw) at smarthome forums, see forum topic:
# http://www.smarthome.com/forum/topic.asp?TOPIC_ID=6597

# Configuration
smartlinc=smartlinc.example.org

date=date
wget=/usr/local/bin/wget

# Retrieve current date
now=`${date} +%H:%M`

# Set it on the SmartLinc
${wget} -q -O - "http://${smartlinc}/1?TD=${now}=1=falsefalse" > /dev/null

Leave a Reply

Your email address will not be published. Required fields are marked *