Home | Programming Resources | Home Automation |     Share This Page
Home Automation
P. Lutus Message Page

Copyright © 2008, P. Lutus

(double-click any word to see its definition)

 
Managing a System Controller

Introduction

This section deals with what I personally regard as the most interesting part of having a home automation system — yes, that's right, the home automation part.

The ISY-26 system controller is a self-contained computer that can be programmed to control your house system, send e-mail notifications of unexpected events, activate controls according to a schedule, and it does this autonomously. After it has been configured, it no longer needs to be connected to a computer, because it is a computer.

The ISY-26 can be configured and programmed from any computer having a browser with Java installed. With appropriate security precautions, that computer can be located anywhere in the world.

The 2412S RJ-45 interface
connector as it should look.

Installation

We must first deal with some hardware installation issues. We'll be installing the modem (2412S) and the system controller (ISY-26) and managing its connections to your desktop computer and/or home network.

Before connecting these parts together, I ask that you closely inspect the 2412S modem, in particular the "interface cable" connection at the bottom of the unit. This is an ordinary 8-pin RJ-45 connector that very rarely causes problems for anyone, but it was the cause of a problem during my installation, and in my online research I have discovered there have been other cases of a factory problem with the connector on this modem.

When I first installed the modem and system controller, the ISY-26 system controller gave an anomalous indication (RX LED constantly lit) that I realized could mean trouble. After a few tests, I decided to examine the connections. I found that the leftmost and rightmost pins (pins 1 and 8) on the modem's RJ-45 connector were both squashed down flat into the channels meant to align them with the mating connector (see photograph this page).

I saw that I had two choices — I could return the modem and demand a replacement, or I could use a long, slender sewing needle to pry the trapped pins into their intended position. At risk of making another gratuitous editorial remark, the reader may know there is a near-perfect correlation between an American's age and his willingness to fix things himself. It seems that if an American was born before about 1960 and he wants something, he will build one or fix the one he has. After 1960, a new kind of American arrived, the kind who only ever buys something ready-made, and whines when it breaks — "fix it, daddy!". In fairness I hasten to add that I live in a house filled with things Made in China, including ... the modem under discussion.

I suggest that the reader examine the modem connector (use the photograph on this page as a guide) before installing the modem or connecting it to the system controller, and if the connector defect is present, decide how to proceed (sewing needle, ship it back, sewing needle, ship it back — all these decisions!). I suspect this is a fairly common fault, and I also suspect these modems are not tested before leaving the factory — if they were, this defect would prevent a successful test.

Once we're past this hurdle, we can install the modem and the system controller — locate the ISY-26 system controller's serial cable, the cable with a DB-9 connector on one end and an RJ-45 connector on the other. Connect the controller to your home network by way of an Ethernet cable. Connect the modem to the controller, plug the modem in, then power the controller by way of its power adaptor. I have read that one wants to power the controller up last (this may not be a real requirement, and it should become less important in newer software versions).

Initial Connection and Testing

In order for the ISY-26 to make itself visible on your home network, the latter needs to have access to a DHCP server. This is a very common property of home networks and it will probably be true for yours. In particular if you have an 802.11 wireless access point connected to your network, the DHCP requirement will most likely be met.

Another requirement for communicating with the ISY-26 is an up-to-date Java runtime engine, available as a free download here.

I've decided not to try to exhaustively deal with the topic of making first contact with the ISY-26 — there are too many variations brought on by differences between operating systems. But I will offer two short summaries for Linux and Windows. Linux first, of course.

Linux:

First, install an up-to-date version of Java from here. I recommend this because the Java version that comes bundled with many recent Linux distributions most likely won't support the ISY-26 Java applet front end.

Second, if you are running a recent Fedora distribution, there is a problem symbolic link that, if it is not deleted, will cause problems for Java. The link is located here:

/usr/lib/mozilla/plugins/libjavaplugin.so

If you encounter problems running the ISY-26 Java applet, delete this symbolic link and see if it helps. This solution may apply to other distributions as well.

Be sure to link your browser to the Java plugin provided with the Sun Java JRE. For those running Firefox or Mozilla browsers, a typical linking command would be (as root):

# ln -nsf (Java installation directory)/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins

The ISY-26 needs to get an IP address by way of DHCP, so you must have a running DHCP server. And DHCP servers are famous for not telling you what addresses they have assigned to what devices. One solution to this problem is to set up your DHCP server to issue precisely one address, power up the ISY-26, and connect to that address.

Because of the problems created by DHCP, I recommend that readers assign a static IP address to the ISY-26 as soon as it comes online. Here is how to do that on Linux:
  • Open a shell session and type:

    $ telnet (ISY-26 address) 126

  • Assuming the address is right, a telnet session with the ISY-26 will commence. You will need to log in. If this is your first login to the ISY-26, the default username and password are both "admin".
  • Press Enter to see a list of menu choices.
  • Choose the menu option "CT - Configure TCP/IP" by typing "CT" in uppercase. You will be prompted for an IP address, netmask, gateway and DNS server.
Once you have assigned the ISY-26 a static address, it will be much better behaved and you will be able to connect to it reliably. Be sure to make a note of the IP address for later on.

To connect to the ISY-26 Administrative Console, open a browser and enter "http://(IP address)". If this doesn't work, or if you have an ISY-26 software version prior to 2.7, try this: "http://(IP address):65532".
Windows:

The ISY-26 uses the UPnP (you plug and pray) protocol when it's available, and Windows has it, so in principle getting into contact with the ISY-26 on a recent Windows machine should be relatively easy. We'll use Windows XP as our reference platform.

  • Go to the "My Network Places" dialog and look at the left-hand panel marked "Network Tasks".
  • If you see a task labeled "Show Icons for networked UPnP devices", click it. If a task is labeled "Hide Icons for networked UPnP devices", no action needs to be taken.
  • If you have powered your ISY-26 and if it is connected to your network, chances are an icon will appear in "My Network Places" labeled "My Lighting". Click it.
  • This should launch your browser and a Java applet. If the browser appears but the Java applet doesn't, check to make sure you have the most recent java version installed on your computer by going to http://www.java.com and installing the current version.
  • Assuming the java applet launched, type in username and password, which by default will be "admin" and "admin".
You will want to make note of the IP address your ISY-26 system controller has been assigned. Click "About" and note the IP address listed under "My URL".
Debugging and Monitoring (both Linux and Windows)

There is a way to monitor the activities of the ISY-26 that may prove useful during setup and testing, and the procedure for enabling the monitoring is nearly identical for Linux and Windows, so I have combined the procedures here.

There are two parts to the procedure — locating and enabling the Java Console, and setting the ISY-26 debug flag.

Enabling the Java Console
Windows:
  • Run Internet Explorer
  • Launch the ISY-26 Administrative Console applet (as explained above).
  • Select "Tools ... Sun Java Console".
Linux:
  • Open a command shell and type "ControlPanel".
  • In the Java Control Panel, select "Advanced ... Java Console ... Show console".
  • Click "Apply".
Setting the ISY-26 Debug Flag
  • In both Windows and Linux, run the ISY-26 Administrative Console as described earlier.
  • In the Administrative Console, click "About" and note the IP address listed under "My URL".
  • In Windows, open a "Command Prompt" (Start ... All Programs ... Accessories ... Command Prompt).
  • In Linux, open a shell session.
  • Both Windows and Linux:
    • Type "telnet (IP address) 126".
    • You will be prompted for username and password. The default values are "admin" and "admin".
    • When login is successfully completed, type "DBG 1" (uppercase) and press Enter.
    • The ISY-26 will reply with "Debug Level: 1".
At this point most system communications to or from the ISY-26 will appear in the Java Console window. This can be very useful in establishing what's going on.

Initial Configuration

First and very important — the ISY-26 Administrative Console is a Java applet, which means the browser window that launched it must not be closed. This is an important point to keep in mind while running this program — if you close the browser, the applet will also close.

First, choose a password other than "admin". Select "File ... Set Userid/Password" and make your entries.

Next, set a geographical location. This is important for computing sunrise and sunset times. Select the "Configuration" tab, then click "Change Location". You may choose a city from the provided list (it's not necessary to exactly match your geographical position), or you may directly enter your latitude, longitude and time zone offset (to get the latitude and longitude for most ZIP codes, click here, enter your state and city and take note of the latitude and longitude). For the latter options, you may have to use the mouse cursor to stretch the location dialog horizontally, to bring the longitude entry into view.

When you are done setting your location, click "Synchronize the Clock with Computer's Time." In most cases this will provide the ISY-26 with a suitable clock and time zone setting. In a future software version, the ISY-26 will synchronize itself automatically and periodically, assuring a very high accuracy for timed events, but at the time of writing this feature isn't enabled.

NOTE: If the above statement is out of date and the ISY-26 should be able to set its own clock but isn't doing so, go back to the step above where you set a static IP address, and make sure you have entered a valid DNS name server address. Without a DNS address, the ISY-26 won't be able to set its clock.

Adding Insteon Controllers to the ISY-26

Now the fun begins — you're going to tell the ISY-26 about the controls you've installed. There are lots of ways to do this, but the fastest and most reliable way is to write down the address of each Insteon control as you install it, then enter that address into the ISY-26 console. Here's how to enter an address:

  • Click the "Main" tab on the ISY-26 display.
  • I suggest that you rename the item that is by default named "My Lighting". Right-click this item, choose "Rename", and give it a more distinctive name.
  • Right-click the item named "Devices" and select "New INSTEON Device".
  • For "Address", enter the address you recorded during installation. Enter the address just as it appears on the control itself, example "0c.be.f2" or "0C.BE.F2", case doesn't matter.
  • Click "OK".
The ISY-26 will reinitialize the system and search for the specified control. Depending on the options chosen, it will also remove any pre-existing links between the selected control and others. If the search is not successful, make sure:
  • The control is really installed and enabled (the "set" button is not pulled out and the power has been restored at the installation site).
  • The control's LED is lit when the control is not powering its attached load.
  • The two required 2443PR Access Point/Wireless Couplers have been installed and are operating correctly. If this were not true, about half the house wiring would be out of reach.

If the search is successful, a new item will appear under "Devices" with the entered address as its name. You can and should rename it with something more useful to you, like its location.

Repeat this procedure for all the Insteon controls you have installed.

To test the ability of the ISY-26 to communicate with the installed controls, right-click "Devices" and choose "Query". The ISY-26 will scan the installed devices to establish their present state (whether on or off and their identity). This scan may take some time.

Making Scenes

I personally think calling this feature "Scenes" was a mistake (and someday I am going to make a scene about it). The name "Scenes" will only confuse people — it should have been called "Groups". So, to avoid mental anguish, cognitive dissonance and psychic tsunamis, I suggest that my readers mentally translate "Scenes" into "Groups".

You may remember during the installation phase, we had a discussion about paired controls, for example controls located on a staircase, each of which must be able to control all the lights. You may recall that, because of the cleverness of Insteon controls, it's not necessary to physically wire all the lights, or all the controls, together to achieve this. The new way to do this is to programmatically group the controls, so they talk to each other across the house wiring.

On the installation page I discussed creating groups by directly clicking on control buttons, but this is a very inefficient way to do this, and it sometimes creates unintended results unless everything is done just so. The ISY-26 console can create groups much more efficiently, and it will diagram them as well, so there is no ambiguity about how the system is set up.

Let's say for this example that you have two controls, one at each end of a staircase, and you want them both to control the staircase lights in the same way. Let's arbitrarily call the controls "Up" and "Down". You can actually name your controls this way if it helps to follow the process.

  • First, create a gr ... I mean, a "Scene":
    • Select menu item "Link Management" and choose the item "New Scene" (this item should actually be located on the "My Lighting" context menu, but I am sure the software developers will quickly realize this error).
    • Name the scene "My Staircase" or something like that.
    • This action will create an icon below the list of devices with the name you provided.
  • Next, choose the controls that will be members of the gr ... "Scene":
    • While holding down the control key, successively click each of the controls you want to be grouped together in your gr ... "Scene".
    • Right-click the selected items and choose "Add to Scene."
    • A dialog will appear providing a list of available groups. Choose the desired gr ... "Scene".
  • A dialog will appear labeled "Confirm Add", in which you get to specify whether the controls are to be controllers or responders.
    • For a staircase or another situation in which all the controls should control all the lights, make all the controls controllers (sorry for the ambiguous terminology).
    • In the event that some of the controls should not be able to govern other controls, make those controls responders.
    • Plug-in light controls are always responders, they can't be controllers.
    • For the original example of a staircase, you want to make all the controls controllers.
  • Click "OK" and the ISY-26 will reconfigure the selected controls according to your instructions.

It's important to note that the controller behavior of a control is only valid if the control is manually activated. If you turn on a control from the ISY-26 console program, the other members of that control's group will not be activated. But if you turn on a light using that control's switch, all the grouped controls will be activated.

If you change your mind about the behavior of a control that is part of a group, if you want to switch it to controller from responder or vice versa, you need to remove the control from the group and re-insert it. At the time of writing there is no way to change the behavior of a control once it has been placed in a group. I suspect this will also change as the software improves.

Orphan Controls

In a typical setup, the majority of controls become part of a scene, and because of this, manual activation events are broadcast across your home network (this is how one control activates another). The ISY-26 controller picks up the broadcasts, and its displays and event log accurately represent the state of your system.

But if you manually activate a control that is not part of a scene, it won't report its new state across the network, and the ISY-26 won't know the control has been activated. If you don't need to know the exact state of your home network, this won't matter. But if you want the ISY-26 controller displays and Web pages to accurately reflect the state of all your controls, take these steps:

  • For each orphan control, create a scene with the same (or similar) name.
  • Add the orphan control to the newly created scene.
  • Make the control a controller of the scene (this makes the control broadcast across the network).

Creating scenes with a single member may seem odd, but once this is done, the control will broadcast its state when it is activated, and the ISY-26 will know the exact state of your network.

The basic idea is that the ISY-26 monitors and keeps track of all controls that are part of scenes (and that are activated as scenes), but controls that are not part of scenes don't broadcast their state when they are manually activated. So if you want to maintain an accurate picture of the state of your network, make all controls members of scenes, even if you must create scenes having only one member.

Programming an Insteon Remote Control

Insteon remote controls have it all over their X-10 predecessors, and if only they had more buttons, I would regard them as ideal. But as to making a remote like the 2440BK work with the ISY-26 controller, this is very easy and much simpler than the manual programming method described earlier. Here are the steps:

  1. Make sure you have already installed and tested two access points / wireless phase couplers (2443PR). The remote control requires these access points to be present and operating.
  2. From the ISY-26 Administrative Console, select "Link Managemenet ... Link a RemoteLinc". A dialog will appear. Don't click it yet.
  3. Turning now to the remote control, press and hold the upper left "ON" (up-arrow) button that is by default labeled "Scene A". Hold it for ten seconds or until the remote beeps and the LED begins to flash.
  4. Now click the "OK" button on the dialog described in step (2) above. The ISY-26 will configure the remote control and create six pseudo-devices, each representing a button on the remote.
  5. Once step (4) above completes, you can assign the six button pseudo-devices to any scenes you want, like this:
    • Select one of the button pseudo-devices with your mouse.
    • Right-click and select "Add to Scene ..."
    • Choose which scene you want that button to control.
There is one more aspect to using the remote control, having to do with how the remote buttons "All On" and "All Off" work. It turns out that the remote won't affect any controllers that are not part of a scene to which its buttons have been assigned — the remote can only shut down scenes it controls, and any other scenes or controls won't respond to the remote's "All On" and "All Off" commands. If you have more scenes and controls than buttons on your remote, this might pose a problem. But the ISY-26 can easily deal with this issue using a program, to be described in the next section.

Programming and Events

Now that the ISY-26 has been programmed with information about controls and groups of controls, we can move on to creating programs meant to detect and trigger events. Using the ISY-26 event programming features, one can turn lights on and off at specific times of day, or sense anomalous conditions and act on them by activating equipment and sending e-mails or pager alerts.

It's important to understand that the ISY-26 has quite a lot of information at its disposal — it knows the date and time of day, it knows the time of sunrise and sunset for any date (assuming you have provided your location), it knows which controls have been activated, and it knows the logical outcome of running any of its own programs. Any of these sources can be used to trigger an action.

Because of the power and complexity of the ISY-26 programming features, I won't try to describe them exhaustively — to do so would amount to a full course in computer programming. Instead I'll provide a few simple examples.

Run the ISY-26 Administrative Console as shown above and click the "Program Details" tab. Let's create a simple example program to turn on a light.
  • Right-click the "My Programs" item at the left and choose "New Program". Give it any convenient name.
  • Play with the controls at the lower right — press the buttons "Program", "Condition", and "Action" to see what options they provide.
  • Try creating a scheduled event:
    • Click the "Schedule" button at the lower right.
    • Use the controls at the lower right to select a time of day.
    • Click the button marked "Add to 'If'".
    • The selected time will appear at the upper right under "If".
    • Now click the button marked "Action".
    • Choose an action like turning on a light.
    • Click the button marked "Add to 'Then'".
    • Click "Save Changes" at the lower left.

Experiment with the programming features. In a more realistic situation, one might choose a time interval by using the "From" and "To" operators, and turn on one or more lights during the specified time interval and turn them off any other time. Such a program might look like this:

If
        From    Sunset  + 30 minutes
        To      Sunset  +  1 hour  and 30 minutes (same day)
 
Then
        Set 'External/Foyer 1' On
        Set 'External/Foyer 2' On
 
Else
        Set 'External/Foyer 1' Off
        Set 'External/Foyer 2' Off
            

Notice the actions under "Else". At first, one might assume that the "Then" specification is sufficient to turn off the chosen lights after the specified time interval, but the "Off" action is separate and must be specified, it can't be assumed. Just remember how literal computers are — you need to tell them exactly what you mean.

Here's a an example program that detects an unexpected event:

If
        Status 'WaterSensor 1' is On
     Or Status 'WaterSensor 2' is On
 
Then
        Set 'Water Pump 1' On
        Set 'Water Pump 2' On
        Send Notification to All
 
Else
        Set 'Water Pump 1' Off
        Set 'Water Pump 2' Off
            

This program shows one of the more advanced features of the ISY-26 — it can notify a list of recipients on detection of a specified event. I feel obliged to add that at the time of writing there is no Insteon water sensor, or for that matter, an Insteon motion sensor. But X-10 sensors exist and they can be easily integrated into an Insteon network, either by way of the ISY-26 X-10 translation capability (the topic of the next page in this article) or through the use of a gateway device like the 31275K that translates various sensor outputs into an Insteon-compatible form.

Extending the Remote Control

We return now to the issue of the 2440BK remote control's inability to shut down any scenes or controllers that it doesn't manage with one of its buttons. I wanted to be able to completely shut down all my lights with a single button-press, but I discovered the remote control wouldn't do this for controllers not linked to one of its buttons. The following steps solve this problem.

First, rename the remote's pseudo-devices to something easier to remember. Initially the pseudo-devices are named with the remote's base Insteon address plus a number between 1 and 6, example "0A.1F.DF.1". Rename each of the remote's pseudo-devices something simple like "remote_1" through "remote_6". But keep the same index numbers in the same order — this associates the devices with the buttons on the remote.

Next, create this program for "all lights off":
If
        Control 'Remote_1' is switched Fast Off
 
Then
        Set Scene 'Devices' Off
 
Else
   ...
And this one, for "all lights on":
If
        Control 'Remote_1' is switched Fast On
 
Then
        Set Scene 'Devices' On
 
Else
   ...

These programs detect the pressing of the "All Off" and "All On" remote buttons and extend their effect to all the controllers in your Insteon network, thus getting around the remote's limitation.

A Little Detail

There are some things about the program editor that won't be obvious right away. One is that you can enable or disable a program using the checkbox at the right marked "Enabled". Another is the role of the button marked "Update".

The "Update" button replaces the highlighted line with any changes the user wishes to make. This means it isn't necessary to add and delete lines to effect a small change. Instead, select a particular line at the upper right, make changes using the controls at the lower right, then click "Update" to enable the change.

Notifications

Recipients for notifications are set up by clicking the "Configuration" tab and choosing one or more items in the "Messaging Providers" list. To me, the obvious choice is the very first in the list — "Regular email". Click this choice and enter an e-mail address at the bottom of the display, where it says "Enter your full email address here". After you have entered an address, be sure to click "Add", then "Save".

By the way. This feature isn't likely to work as expected unless:
  • The ISY-26 is using DHCP to establish its network configuration, or
  • The user has configured the ISY-26 with correct values for IP address, netmask, gateway and DNS server.

Backing Up Your Work

It's always a good idea to back up your work. The ISY-26 is a complete, separate computer and the control definitions, scenes and programs listed by the Administrative Console are not stored on your computer unless you perform a backup.

Choose menu item "File ... Backup ISY", choose a suitable file location, and click "Save". This copies the current ISY-26 configuration onto the computer hosting the browser.

In the next section I will show how the ISY-26 functions as a gateway between Insteon and X-10 signals and devices.

 

Home | Programming Resources | Home Automation |     Share This Page