Multi-bulb scene control via an Insteon KeypadLinc

Now that we’ve changed the wiring in our switch to leave the power to our ceiling lights always-on, we need a way to actually operate them. Because you’ve invested in these relatively expensive lights, you probably don’t just want all the lights to turn on with a single switch; more likely you’ll want a variety of scenes based on particular activities, using a KeypadLinc or even a handheld RemoteLinc to get a variety of effects.

The trick in setting this up is with Insteon scenes, and it can get a bit complicated. Let’s take an example and look through our options. The first step is defining your activities and which individual lights correspond to them. As shown in the last post, in my basement with 9 lights I have a few different activities I’d like to illuminate in different ways:

  1. All on – 50%. Because these lights are 75W equivalent, and the original lights were 60W incandescent, 50% dim level is about the same as it was before, providing enough light for most activities.
  2. All on – 100%. For those times when you want super-lighting, might as well have a button to ramp these guys up to 100%.
  3. Dance. There’s a small dance floor in the corner for my fiance’s flamenco practice – let’s just light up the 4 bulbs over the floor to provide a stage effect.
  4. Workout. Here we’ll just illuminate the sides of the room for some indirect lighting.
  5. Motion. The laundry machine is in the basement, so most trips down there are just along the edge of the room to the laundry room, so let’s just turn those 3 on when motion is detected.

Let’s look at the options available to us, and the various shortcomings and advantages of each:

Scenes
The easiest thing to do is just create simple scenes with your KeypadLinc; this is your only option if you don’t have an ISY994i – but if you’ve come this far you no doubt actually have one already. Still, you could just create a scene for each of the above activities, then add the KeypadLinc button and the various lights you want to turn on/off at various dim levels to the scene. So for example, your “All On-50%” could be a scene to which you add button A on the KeypadLinc as a controller and all lights at 50% dim level as responders. The problem with this approach is that we have 4 buttons (and one motion) scene, so you end up with multiple lights on the Keypad lit up. For example, if you push button A to turn on all lights at 50%, the lights will go on at 50% and button A will light up. Then, if you push button B to turn on all lights at 100%, the lights will go up to 100% and button B will light up – but then button A will still be illuminated. You then have to push all the lit up buttons to turn everything back off.
multiple-keypad-lights-insteon

Scenes and Programs
With the ISY, you can create a program that says “if button A is switched on, turn off all other scenes (to turn off the other button back-lights), and THEN turn on the ‘All On-50%’ scene. And if button A is switched off, turn OFF all scenes.”. The trick to setting this up is to create TWO scenes for each activity. In one scene you add JUST the button to it, and in the other you add JUST the lights to it. This way, the illumination of the button is de-coupled from the activation of the lights, so you can turn off the button light without changing the state of the lights. If we didn’t use this approach and just kept a single scene for each activity, what would happen if you pushed button A, and then button B? All you want is for the button A back-light to turn off, and the lights to jump up to 100%. But with a single scene, what would happen when you pushed button B is that all the lights (currently at 50%) would turn OFF, along with the button A back-light, and THEN the lights would turn on to 100%.

To put this another way: you want to control the button back-lights independently of the lights themselves, so that you can turn off the button back-light without having the lights go off then back on.

Here’s an example program for what happens when I push button A:
keypad-button-insteon-can-lights
Note that when Button A (called “Basement / Main”) is turned on we:

  1. Turn OFF the scenes that JUST have the buttons in it, effectively turning off buttons B-D
  2. Turn ON the scene that JUST has the lights it to get the lights on at 50%

Note that my “button scenes” all start with a period (“.”). This is to hide the scenes in MobiLinc; we’ll talk about that in an upcoming post.
Also note that I don’t explicitly turn ON the “button scene” for button A – that’s because simply pushing the button handles that for us – the button is switched on, so it lights up.

Scenes, Programs, and Conditionals
Now for our last wrinkle: the motion detection scene. Again, we first have to define how we want it to work. For example, when motion is detected, we don’t want the scene to go on when any other scene is already on. And, when the motion times out, we don’t want to turn off all the lights if someone has pushed one of the buttons to turn on a different scene. Finally, as long as motion is continually detected, we want to keep those three lights on. To accomplish this, we actually use a few programs:

Basement Motion Sensed
This program is triggered whenever motion is detected (the motion sensor is configured to just send “On” signals to conserve battery strength; no sense in sending an “Off” signal if we’re just going to use the timer functionality in the ISY). It essentially restarts the clock by resetting that “Basement Lights on 5 minutes” program each time – and it only activates when all other scenes are off:

If
      Control 'Basement / Motion' is switched On
  And Status 'Basement / Main' is Off
  And Status 'Basement / Main - B' is Off
  And Status 'Basement / Main - C' is Off
  And Status 'Basement / Main - D' is Off
Then
      Stop program 'Basement Lights on 5 minutes'
      Run Program 'Basement Lights on 5 minutes' (Then Path)
Else
 - No actions

Basement Lights on 5 minutes
This program simply turns on the “Basement / Motion” scene, waits 5 minutes, and then runs another program to check if it’s OK to turn the lights back off. Note that the previous program will stop and restart this program each time motion is sensed, preventing us from ever getting to the “Off” program if motion stays active.

If
  - No Conditions
Then
     Set Scene 'Basement / Motion' On
     Wait 5 minutes
     Run Program 'Basement Lights Motion Off' (If)
Else
 - No actions

Basement Lights Motion Off
This program will turn off the motion scene, but only if any of the other scenes haven’t been turned on in the meantime. So if someone walks into the basement, the “Basement Motion” scene will turn on to light the way. If they leave, those lights will turn off after 5 minutes, but if they turn on another scene, that scene will just stay on until it’s manually turned off.

If
      Status 'Basement / Main' is Off
  And Status 'Basement / Main - B' is Off
  And Status 'Basement / Main - C' is Off
  And Status 'Basement / Main - D' is Off
Then
      Set Scene 'Basement / Motion' Off
Else
 - No actions

So that’s it! The key takeaway lesson here is that you don’t actually need a button (controller) to be in the same scene as the lights (responder); you can use 2 scenes for each to illuminate the button and control the lights independently. In fact, this is a similar approach we used when we set up our garage door buttons, because we wanted the buttons to control the doors, but respond to the state of the sensor (i.e., light up the button when the door is open).

Posted by Matt Chiste
September 22
 Subscribe to HomeAutomationGuru.com
    Add to Google Reader or Homepage

Enter your email address to subscribe: