X-10 has been around for ages and is the basis for many “wired” homes. Unfortunately X-10 has a number of deficiencies. However, those deficiencies have now been addressed by SmartHome’s Insteon technology, which is backward-compatible with X-10. It does not attempt to challenge high-bandwidth solutions like HomePlug or Ethernet, but rather targets the same type of control functions that X-10 attempted to solve.
One big difference with Insteon is that SmartHome is providing hardware access to Insteon’s features. I had the opportunity to take a look at the Software Development Kit (USB interface) and the Prototyping Module. The latter lets you wire up hardware directly to the Insteon network.
We’ll take a look at Insteon and standard hardware before diving into the software and hardware for those unfamiliar with the technology.
Insteon is a wired (powerline) and wireless system. It uses peer-to-peer communication. It is unsupervised and therefore does not have routing tables. Rather, it implements a mesh topology where all devices are two-way repeaters. This often eliminates the need for wireless bridges except in the case of completely disconnected networks, since a node at one end of a network does not have to generate a signal that goes to the other end. Instead, it can be passed from node to node. Actually, it does not run through all the nodes. Because the protocol uses acknowledgements, the nodes learn to forward messages as necessary.
The protocol is packet oriented and message payloads are encrypted for security. The actual transmission is synchronized with the powerline to minimize interference. The system is compatible with X10 and it can generate X10 commands. However, X10 commands are not repeated and an Insteon device must be programmed to send or receive X10 commands. Insteon nodes are normally associated with each other by pressing the buttons on the side of the nodes.
The wireline protocol has a burst rate of about 12.8 kbits/s with a sustained rate of about 2.9 kbits/s using FSK modulation. The wireless link uses a frequency range of 902 MHz to 924 MHz with a line-of-sight range of 150 feet. This translates into an average of 10 messages/s with a 16-byte message. Each Insteon device has a unique 24-bit address and there may be up to 256 logical groups. Each message has up to a 14-byte payload plus 10 additional bytes for things like addressing.
The consumer price of most modules is around $20. The LampLinc (see Fig. 1) plugs into an outlet and has one unswitched and one switched (Insteon controlled) socket. It can be controlled using a SwitchLinc dimmer switch (see Fig. 2). The switch can also be used alone to replace a conventional switch. The switch has a row of LEDs on the left side that show the dimmer setting. These are typically missing on X-10-style products.
More sophisticated switching is possible using the KeypadLinc (see Fig. 3). It has 6 or 8 buttons and doubles as a dimmer switch and control for additional Insteon devices.
The wireless SignalLinc (see Fig. 4) module bridges problem areas in larger systems where the powerline wiring may be divided into different areas. In this case, at least a pair of SignalLinc modules are used. They communicate with each other and forward messages between two Insteon networks. It allows a switch on one network to control a device on the other. SignalLincs can also be used to extend the range of a system.
Most users will begin with something like the Starter Kit (see Fig. 5) that includes some wireless SignalLinc and LampLinc modules along with a desktop Control Linc II. As with X-10, Insteon switches can control more than one device or one device can be controlled by more than one switch.
Associating an Insteon switch and device is done using a single switch on each device instead of the clumsy rotary switches used with X10. Press the button on a switch and then press the button on a device and the two are linked together. Its simple once you know what to do.
Programming can also be done using software that works with the network via the USB (see Fig. 6) or serial computer-interface modules. The USB module can also be used with a SmartHome Manager Essential front end for managing switches and devices.
Software Development Kit
The software development kit is priced at $99. It comes with a USB or serial interface module. The kit comes with documentation and software, although I downloaded new versions from the developer’s website. Development is ongoing with enhancements available to registered developers.
The Insteon messages use an interpreted command language called SALad. The SALad interpreter runs on each Insteon device and processes messages sent from another Insteon device. The serial interface with the Insteon controller uses special ASCII handshake characters like STX, ACK, and NAK when a message is sent through the controller. This is the same protocol used on the Prototype Module that will be described in the next-to-last section.
I used the SALad IDE (see Fig. 7) to modify some sample SALad applications. Applications can operate in push (default), even triggered, or polled mode. The SALad application controls how a device will operate. There is always a common core included in each device, but this can be augmented using SALad within the limits of available memory.
I was able to modify some SALad samples that were included. SALad is its own language. It is sort of a mix between Basic and Assembler, but it has very limited data-manipulation capabilities. It is primarily setup for handling events and calling built-in functions to perform requested actions. It appears that the Insteon controller is an 8- or 16-bit microcontroller. SALad is built on top of that with sufficient limitations so you cannot completely crash the system, although that may be possible. Subroutines are available so it is possible to make a very sophisticated application.
No programming is required if a device is going to be managed using the core functions. Still, if you are planning on developing a device that will control or be controlled in a more sophisticated fashion, then SALad can help.
As with most IDEs, the SALad IDE has compiling and debugging tools. The debugging tools let me look at operations being performed on the network and in the device. You can examine raw data or decoded information. I especially liked the trace facility since actions can occur very quickly and you don’t want to try stepping through most operations. The IDE can also send commands, so you can initiate operations on a device that you programmed.
SALad is not hard to learn but it will take some time to master. This is due to the variety of functions available and the new syntax that must be used. Likewise, the debugging and diagnostic tools take some getting used to, but I didn’t find them any more difficult to use than network trace tools. In fact, having everything integrated was rather nice.
There are other tools available. The SmartHome Device Manager is a web server that can process text commands that match the SALad functionality. The Device Manager communicates with a USB or serial controller. For example, the following URL entered in a web browser on the machine running the Device Manager will add the designated note to the database maintained by the system:
In theory, this web interface can be used to create web-based applications that control devices without having to download SALad code to a device or to interface directly with a controller. Right now the Device Manager is functional, but still a work in progress.
Overall, the software development kits let me twiddle with a node at a very low level, generate commands, and with the Device Manager, control the network via a web interface. You can take advantage of one or all of these methods and even augment a node using the prototype module.
The Insteon Prototyping Module (see Fig. 8) includes a built-in patch area. You will need the software development kit to take advantage of most features available though this module.
The module’s patch area has space for surface-mount chips and provides DC power that can be used by the custom hardware. There is a 4800-baud serial interface that is accessible either through a cable that plugs into the bottom of the module or via traces and holes on the patch area. Figure 8 includes a pair of sockets I used for connecting some single-chip microcontrollers to the Insteon network. Using microcontrollers with integrated clocks greatly simplified the project.
The module’s interface includes one general-purpose I/O line connected to an LED plus 11 uncommitted I/O lines. The serial interface is available as TTL lines on the patch area and RS-232 via the connector. There is also one interrupt that feeds back into the module. A non-isolated version also provides a module-controlled 120-V supply. Internally, the module has an I2C-based EEPROM and real-time clock. The I/O lines and other peripherals are accessible via software through the network.
Using the interface to the module is relatively trivial. I used a Microchip PIC with a built-in serial port to exercise the system by sending some basic commands to the module. A more ambitious project would try to control an external device like an LCD display with a keypad or a motor. Unfortunately I didn’t have time to do anything more sophisticated, but I would not expect the process to be any more difficult than interfacing the microcontroller to a serial-port device. The module interface allows you to easily build controlled or controller-type functions.
Insteon represents a significant step forward in powerline control. The cost of getting started is very low and the tools are not too difficult to use. The number of developers is growing and the support software is being improved, so debugging systems in the future should be easier. If you plan on building devices that plug into a power outlet, then Insteon may be worth a look.