Jump to content

Keypad buttons status to match device conditions


Michaelv

Recommended Posts

What do I need to do to have the Kedpad button status match the status of the device it is controlling? When multiple Key pad buttons contol the same device, because i want control of it from differnt locations,how can I be sure that each keypad button has the status updated? When a key pad button contols a scence with multiple lights, what should the status be if all the lights are turned off by the individual controllers? It is becoming more apparent to me as I walk around the house that there are these keypad buttons that are illuminated, but what they are controlling are off.

 

Is there in depth documentation on this?

Link to comment

Two ways I know of:

1, put all things in one scene, including all the KPL buttons and all load buttons;

2, use programs to clean up multiple scenes.

 

It seems to me that any time there are devices that may or may not be controlled by different controllers, this will happen. I've seen it different ways and solved it different ways. Here's what I'm doing mostly.

 

One KPL button, two load switches:

use KPL button, all stays in sync all time;

use one load button or other, KPL status follows neither or follows last controlled.

 

In most cases, I want the loads to act separately, but the KPL button to be ON if any of the loads are ON.

 

Here's what I've been doing (now working on the logic with ISY, previously with HS and then ML and even tried with ELK):

If (control of load A turns OFF and status of B is ON) OR (control of load B turns OFF and status of A is ON) then turn KPL button ON.

 

If someone has a better approach, lemme know!

Link to comment
What do I need to do to have the Kedpad button status match the status of the device it is controlling? When multiple Key pad buttons contol the same device, because i want control of it from differnt locations,how can I be sure that each keypad button has the status updated? When a key pad button contols a scence with multiple lights, what should the status be if all the lights are turned off by the individual controllers? It is becoming more apparent to me as I walk around the house that there are these keypad buttons that are illuminated, but what they are controlling are off.

 

That's all up to you, and I do a variety of things depending on what I want to accomplish in my home.

 

Scenario 1:

 

I have a bunch of KPL buttons that all control a single light or group of lights in the same manner. For example, I have 4 KPL secondary buttons that control my front door lights around my house (foyer, garage, theater room, master bedroom). To accomplish this, I simply create a scene called "Front Door Lights" and make all KPL secondaries controllers of that scene. Mission accomplished. When the front door lights are turned off from any location, all KPL buttons turn off. If they are turned on, all KPL buttons turn on.

 

 

Scenario 2:

 

I have a KPL secondary buttons that set different lighting scenes or "moods" in many of the rooms in our house. For example, in my theater room I have a "dinner" scene button, a "movie" scene button and a "party" scene button. Each button sets the lights in the room to different levels. I want to make sure then if I hit the "dinner" scene button, lights turn on to specific levels - but if the lights are changed, either manually or by pressing a different scene button, I want the "dinner" button to turn off.

 

I accomplish this by creating scenes in the ISY and making the KPL secondary a controller of that scene. I set the levels how I want them so that when the KPL secondary is pressed, the lights change to how I want them. To keep the KPL buttons "accurate" I use programs to turn the buttons OFF if the lighting levels change.

 

For example, my theater room "movie" scene sets my table lights to 30% and my main lights to 20%. I use the following program to turn the button (TheaterMovieStatus) off if the lighting levels change:

 

If
       Status  'TheaterControls1G' is not Off
   And (
            Status  'TheaterControls1A-Table' is not 30%
         Or Status  'TheaterMain1' is not 20%
         Or Status  'TheaterMain2' is not 20%
       )

Then
       Set Scene 'TheaterMovieStatus' Off

Else
  - No Actions - (To add one, press 'Action')

 

 

Scenario 3:

 

I have a few locations (garage entrance, foyer entrance, master bedroom) where I have KPL buttons that are able to turn off entire floors of my home (before bed or when we're leaving). I also want the KPL buttons to light up if any lights are on, and NOT be lit up if all lights are off. I tried accomplishing this a few different ways, but the way that is working best for me is as follows.

 

I grouped areas of my house such as "1st floor", "2nd floor", "master bed area". I then created programs that monitor whether or not a light is on in those areas. For example, to monitor my 1st floor lights I use the following program:

 

If
       Status  'Bathroom1stLaundry1' is not Off
    Or Status  'Bathroom1stMirror1' is not Off
    Or Status  'Bathroom1stVent1' is not Off
    Or Status  'FoyerMain1' is not Off
    Or Status  'KitchenBar1' is not Off
    Or Status  'KitchenMain1' is not Off
    Or Status  'KitchenSink1' is not Off
    Or Status  'KitchenTable1' is not Off
    Or Status  'LivingRoomControls1A' is not Off
    Or Status  'LivingRoomMain1' is not Off
    Or Status  'PlayRoomMain1' is not Off

Then
  - No Actions - (To add one, press 'Action')

Else
  - No Actions - (To add one, press 'Action')

 

This program is TRUE if anything is left ON on my 1st floor. If it is FALSE, all devices are off. I have a KPL button in my master bedroom that is set to 'non-toggle off' mode. I use these programs to light the button if the program is TRUE, but turn off the button if the program is false:

 

If
       Status  'MasterBedControls1G' is not On
       Program 'Floor 1 Status' is True

Then
       Wait  4 seconds
       Set Scene 'Floor1StatusLight' On

Else
  - No Actions - (To add one, press 'Action')

 

 

If
       Status  'MasterBedControls1G' is not Off
       Program 'Floor 1 Status' is False

Then
       Wait  4 seconds
       Set Scene 'Floor1StatusLight' Off

Else
  - No Actions - (To add one, press 'Action')

 

 

Finally, I use the following program to turn all my 1st floor lights OFF if that button is pressed:

 

If
      Control 'MasterBedControls1G' is switched Off

Then
       Set Scene 'Floor1All' Off

Else
  - No Actions - (To add one, press 'Action')

 

 

Hope this help. Please let me know if you have any questions or need more detail.

Link to comment

Mike, thank you!

 

Your scenario two inspired me to change some of my stuff - which leads to a question: first example, only do the OR statements and do them grouped; shouldn't need the first statement, and then an else works, right? Seems to do what scenario three does with less trouble. Any possible problem?

 

If
       (
            Status  'Dining' is not Off
         Or Status  'Dining.Table' is not Off
         Or Status  'Dining.Wall' is not Off
         Or Status  'Down.Land.Slave' is not Off
         Or Status  'Down.Land.Wall' is not Off
         Or Status  'Entry' is not Off
         Or Status  'Entry.Wall' is not Off
         Or Status  'Entry.Down.Land' is not Off
         Or Status  'Entry.Up.Land' is not Off
         Or Status  'Livingroom' is not 20%
         Or Status  'Livingroom.Wall' is not Off
         Or Status  'Livingroom.Mantle' is not Off
         Or Status  'Up.Land.Heart' is not Off
         Or Status  'Up.Land.Slave' is not Off
       )

Then
       Set Scene '-Living.Movie.C.State' Off

Else
       Set Scene '-Living.Movie.C.State' On

It seems to work really well and has a new advantage (for me) that if a light that should be off turns on the scene buttons turns off and if it gets turned bock off again the scene button goes back to on. Seems cool. Issues?

 

I hope this is okay; 'cause I can do my upstairs and downstairs that way - as you mention.

Link to comment
Your scenario two inspired me to change some of my stuff - which leads to a question: first example, only do the OR statements and do them grouped; shouldn't need the first statement, and then an else works, right? Seems to do what scenario three does with less trouble. Any possible problem?

 

In scenario 2, the 1st line in my example exists to check the status of the KPL button. If it's already OFF, it won't try to turn it off again. If the 1st line is deleted, the program will still work but it will create excess powerline traffic because the ISY will send a command to turn that KPL button off every time a light in my theater changes (and it's not set to those exact levels).

 

In scenario 3, I use separate programs to monitor the status of areas in my home because I use those programs with other buttons that turn off different groups of lights. For example, at my garage entrance I have a single button that monitors the majority of my house (minus my theater room and office) and turns off the majority of my house with a single press.

 

Here are the programs I use for that:

 

FLOOR1+2+MB STATUS ON

If
       Status  'GarageControls2F' is not On
   And (
            Program 'Floor 1 Status' is True
         Or Program 'Floor 2 Status' is True
         Or Program 'MasterBedArea Status' is True
       )

Then
       Wait  8 seconds
       Set Scene 'Floor1+2StatusLight' On

Else
  - No Actions - (To add one, press 'Action')

 

 

FLOOR1+2+MB STATUS OFF

If
       Status  'GarageControls2F' is not Off
   And Program 'Floor 1 Status' is False
   And Program 'Floor 2 Status' is False
   And Program 'MasterBedArea Status' is False

Then
       Wait  8 seconds
       Set Scene 'Floor1+2StatusLight' Off

Else
  - No Actions - (To add one, press 'Action')

 

 

FLOOR1+2+MB CONTROL OFF

If
       Control 'GarageControls2F' is switched Off

Then
       Set Scene 'MasterBedAreaAll' Off
       Set Scene 'Floor2All' Off
       Set Scene 'Floor1All' Off

Else
  - No Actions - (To add one, press 'Action')

 

 

Note 2 things about my status programs:

 

- I use a WAIT command before I turn on/off status lights because I don't want the ISY to bother changing the status light if someone quickly turns a light on or off for a second or two. This also helps make sure the powerline is clear of traffic before the ISY changes the status button.

 

- I stagger the length of the WAIT for different buttons to ensure there are no powerline collisions. I don't want to turn on/off multiple status buttons too close together, or the function may become a bit less reliable.

 

 

It seems to work really well and has a new advantage (for me) that if a light that should be off turns on the scene buttons turns off and if it gets turned bock off again the scene button goes back to on. Seems cool. Issues?

 

Again, only problem I see with your example is that every time your lights change, but your program is still true, your ISY will send another command to turn that KPL off. Might not be a problem for you, but I personally try to minimize powerline traffic as much as possible to improve reliability. Multiple things going on on the powerline at once can/will cause issues.

 

Hope this clarifies what I'm doing for you.

Link to comment
...If the 1st line is deleted, the program will still work but it will create excess powerline traffic because the ISY will send a command to turn that KPL button off every time a light in my theater changes (and it's not set to those exact levels)...

 

I was afraid that might be the case.

 

It looks like your solution involves two things:

1. Only do it once - from on to off, not off to on;

2. delay the status light change to decrease traffic.

 

Gives me two questions:

1. when is traffic too much?

2. will the delay cause only one command to be sent?

Link to comment

Hey Greg -

 

My programs will only do it once either way (on to off or off to on).

 

1 - With powerline protocols, and specifically Insteon, there are potential problems any time there is simultaneous powerline traffic. Like, for example, pressing 2 switches at precisely the same time.

 

2 - The delay is more to separate the traffic rather than decrease it. But, it does save traffic if, for instance, my entire 1st floor is off but I turn a single light on for only 2 seconds - the ISY won't bother turning on the 1st floor status LED (because of the WAIT command).

Link to comment

I'm following you so far WRT PLC traffic. Clearly, more is bad.

 

I also understand that your total solution works with OFF and ON; just in two programs, right?

 

So here's a question: it seems to me that the real problem with the way I was looking at it is the STATUS requests that go out every time a device changes status. ONE device changes status (with a control, typically, but could be by link), then a STATUS query goes out, hitting the line with more traffic.

 

Is there a way to stop this from happening? Basically, a way to say "don't re-check the status, but if ISY thinks things match a given status, assume it to be true"?

 

If that's possible, I can do a status cleanup every hour or whatever.

 

FTR, I really appreciate the help on this. Once I saw your example and tried the variation, I finally have my four key "status light groups" working as I've long wanted: Upstairs, Downstairs, Main, Outside. They now accurately reflect if ANY device is on, making it easy to turn them off if I'm certain there's no-one there (and it checks another status indicator for rooms I'm unsure of).

Link to comment
I also understand that your total solution works with OFF and ON; just in two programs, right?

 

Correct.

 

 

So here's a question: it seems to me that the real problem with the way I was looking at it is the STATUS requests that go out every time a device changes status.

 

The problem is that the ISY re-evaluates every time something in the IF condition changes. So, in your example here:

 

If 
       ( 
            Status  'Dining' is not Off 
         Or Status  'Dining.Table' is not Off 
         Or Status  'Dining.Wall' is not Off 
         Or Status  'Down.Land.Slave' is not Off 
         Or Status  'Down.Land.Wall' is not Off 
         Or Status  'Entry' is not Off 
         Or Status  'Entry.Wall' is not Off 
         Or Status  'Entry.Down.Land' is not Off 
         Or Status  'Entry.Up.Land' is not Off 
         Or Status  'Livingroom' is not 20% 
         Or Status  'Livingroom.Wall' is not Off 
         Or Status  'Livingroom.Mantle' is not Off 
         Or Status  'Up.Land.Heart' is not Off 
         Or Status  'Up.Land.Slave' is not Off 
       ) 

Then 
       Set Scene '-Living.Movie.C.State' Off 

Else 
       Set Scene '-Living.Movie.C.State' On

 

Let's say that your program becomes TRUE because, say, the 'Dining' room light gets turned on. Your program then sends an OFF command to the '-Living.Movie.C.State' button.

 

Then, let's say the 'Dining.Table' light gets turned on as well. The ISY sees this, the program is re-evaluated, and the OFF command is once again sent to the '-Living.Movie.C.State' button.

 

By checking the status of the KPL button in the IF statement, you can reduce that redundant traffic.

Link to comment

... sorry to keep dragging this out...

 

I get what you're saying; but what if I want it to be evaluated and change every time ANY of those devices change? I just don't want it to re-scan all of them every time one of them changes. The ISY already knows the status - typically accurately; is there some way to make the decision exactly as my method does /without/ re-querying the rest when one changes?

Link to comment
I get what you're saying; but what if I want it to be evaluated and change every time ANY of those devices change? I just don't want it to re-scan all of them every time one of them changes. The ISY already knows the status - typically accurately; is there some way to make the decision exactly as my method does /without/ re-querying the rest when one changes?

 

Sorry, maybe I'm not being clear with what I'm saying. The problem isn't that it's querying the other devices - it's not. Like you said, the ISY already knows the status of those devices.

 

The ISY simply re-evaluates the program if the state of ANY of the devices in the IF statement changes. If the program is once again true, it runs the THEN part. If the program becomes false, it runs the ELSE part.

Link to comment
The ISY does not send requests for Status unless the Query command is used. Otherwise it just keeps track of statuses.

 

If you want to Query the devices once an hour, just to be certain of their statuses, then make a scene with all the devices and use another program to run a Query on that scene once an hour.

 

Rand

Link to comment
... The problem isn't that it's querying the other devices - it's not. Like you said, the ISY already knows the status of those devices.

 

The ISY simply re-evaluates the program if the state of ANY of the devices in the IF statement changes. If the program is once again true, it runs the THEN part. If the program becomes false, it runs the ELSE part.

 

COOL!

 

I saw the lines in the logs and assumed it was doing a status request of the devices. If it's not doing one, then the only "more traffic" I'm creating is the traffic I wanted anyway: turn the "status indicator" lights on / off. Right?

 

 

Rand, your suggestion was exactly what I was hoping for: re-sync the status at a timed interval but don't have sync's going otherwise.

 

I think I'll run with it like it is for a bit and see how it goes. If it doesn't create too much traffic, I sure like the effect: actual "floor status" lights that work!

Link to comment
I saw the lines in the logs and assumed it was doing a status request of the devices. If it's not doing one, then the only "more traffic" I'm creating is the traffic I wanted anyway: turn the "status indicator" lights on / off. Right?

 

Right, except that you have the potential of sending redundant OFF commands. If the button is already off, there's no logic in your program to stop it from sending additional OFF commands every time the program is re-evaluated as TRUE.

Link to comment

Agreed. But with 3-5 status lights in sync, that's likely to be an issue, isn't it? Right now, they're all responders to a group that gets turned OFF or ON. If they were all controllers as well (which I could do, of course), then they'd likely be in sync... so I guess that might be the alternative / fix, eh?

Link to comment

Hi, it is the week end again so I attempted to put into practice what you have offered. I must admit I got quite lost when you guys started getting more and more sophisticated with your programming. I could not follow it. Maybe some day I will be able.

 

Maybe if I started off with a simple scene or program, I could then get up to speed a little at a time.

 

Here is what I would like to try and do.

 

I have a single light controlled by a switch link dimmer (A). The same light is also controlled by a secondary key pad button (B) via a scene. The light is also controlled by an IR Linc through a remote control button© and the same light is part of a scene controlled by another secondary Key Pad button (D).Furthermore, the same light (A) is part of an “all lights off at midnight†program. How will I keep the Keypad Status up to date when any of these controllers turn the light on and or off. I already 14 Key pads installed and I intend on installing at least another 20. I really hope there is an easier way to keep the status updated correctly. We are talking almost 300 buttons!! I really would hate to write a program or create a scene for that many!!

I hope the guys at UDI could write a program that would do this for us.

 

Thanks in advance.

 

MV

Link to comment

MV,

 

If this is only a single light, then create ONE scene and put the following in there all as controllers:

SWL, KPL C, KPL D, and IRLinc

 

In your All On/Off scene, put:

KPL C, KPL D as responders

 

You do not need any programs.

 

With kind regards,

Michel

 

Hi, it is the week end again so I attempted to put into practice what you have offered. I must admit I got quite lost when you guys started getting more and more sophisticated with your programming. I could not follow it. Maybe some day I will be able.

 

Maybe if I started off with a simple scene or program, I could then get up to speed a little at a time.

 

Here is what I would like to try and do.

 

I have a single light controlled by a switch link dimmer (A). The same light is also controlled by a secondary key pad button (B) via a scene. The light is also controlled by an IR Linc through a remote control button© and the same light is part of a scene controlled by another secondary Key Pad button (D).Furthermore, the same light (A) is part of an “all lights off at midnight” program. How will I keep the Keypad Status up to date when any of these controllers turn the light on and or off. I already 14 Key pads installed and I intend on installing at least another 20. I really hope there is an easier way to keep the status updated correctly. We are talking almost 300 buttons!! I really would hate to write a program or create a scene for that many!!

I hope the guys at UDI could write a program that would do this for us.

 

Thanks in advance.

 

MV

Link to comment

Howdy, Michael.

 

It is pretty confusing, I think. I've been dealing with Insteon stuff for three years or so. The basic functions haven't changed, but the way UD/ISY presents them is a little different from how the programming works.

 

 

The approach I'm trying out right now is pretty simple: make the ISY act as a "controller" to keep KPL buttons in sync whenever anything happens. It seems to be working quite well so far; I'm sure it has more Insteon traffic than other ways, but it also works better for sync. If I hit problems, I'll change it.

 

Case ONE - KPL controls loads AND is kept in sync by program:

If
       Status  'Out.Back.LowMid' is not Off
    Or Status  'Out.Back.LowSide' is not Off
    Or Status  'Out.Back.Up' is not Off
    Or Status  'Out.DiningPatio' is not Off
    Or Status  'Out.Front' is not Off
    Or Status  'Out.GarageSide' is not Off
    Or Status  'Out.GuestPatio' is not Off
    Or Status  'Out.KitchenSide' is not Off

Then
       Set Scene '-Status.Out.Lights' On

Else
       Set Scene '-Status.Out.Lights' Off

Scene '-Status.Out.Lights' has 14 KPL buttons in it. They all control the devices listed above and each other. The program does the cleanup for any direct control.

 

 

Case TWO - KPLs do NOT control loads directly - only by program:

If
       Status  'Dining' is not Off
    Or Status  'Dining.Table' is not Off
    Or Status  'Dining.Wall' is not Off
    Or Status  'Down.Land.Slave' is not Off
    Or Status  'Down.Land.Wall' is not Off
    Or Status  'Entry' is not Off
    Or Status  'Entry.Wall' is not Off
    Or Status  'Entry.Down.Land' is not Off
    Or Status  'Entry.Up.Land' is not Off
    Or Status  'Kitchen' is not Off
    Or Status  'Kitchen.Sink' is not Off
    Or Status  'Kitchen.Table' is not Off
    Or Status  'Livingroom' is not Off
    Or Status  'Livingroom.Wall' is not Off
    Or Status  'Livingroom.Mantle' is not Off

Then
       Set Scene '-Status.Main.Lights' On

Else
       Set Scene '-Status.Main.Lights' Off

Looks exactly the same. Does the same thing. Only difference is pushing any KPL button in the '-Status.Main.Lights' group does nothing. Only a double-tap (Fast Off) does it:

If
       Control 'Entry.Key.Down.A' is switched Fast Off
    Or Control 'Livingroom.Key.A' is switched Fast Off
    Or Control 'Master.Key.D' is switched Fast Off
    Or Control 'Office.Key.D' is switched Fast Off

Then
       Set Scene '*Dining.Lights' Off
       Set Scene '*Entry.Lights' Off
       Set Scene '*Kitchen.Lights' Off
       Set Scene '*Kitchen.Sink' Off
       Set Scene '*Kitchen.Table.Lights' Off
       Set Scene '*Living.Lights' Off

Else
  - No Actions - (To add one, press 'Action')

 

 

Case THREE - as above, but different rooms may or may not be part of the controls:

If
       Control 'Down.Land.Slave' is switched Fast Off
    Or Control 'Entry.Down.Land' is switched Fast Off
    Or Control 'Entry.Key.Door.C' is switched Fast Off
    Or Control 'Entry.Key.Down.C' is switched Fast Off
    Or Control 'Master.Key.F' is switched Fast Off
    Or Control 'Office.Key.F' is switched Fast Off

Then
       Set Scene '-Down.Lights' Off
       Run Program 'Down.Guest.OFF' (If)
       Run Program 'Down.Office.OFF' (If)
       Wait  3 seconds
       Run Program 'Down.Status' (If)

Else
  - No Actions - (To add one, press 'Action')

In this case, the Fast Off may NOT turn off all lights if the guest status light is on:

If
       Status  'Guest.Key.Door.B' is not On

Then
       Set Scene '*Guest.Lights' Off

Else
  - No Actions - (To add one, press 'Action')

'Guest.Key.Door.B' is part of a KPL button scene (all controllers, no loads), therefore if any ONE is on, guests are in the room and the lights should not be changed when a Downstairs lights command is run.

 

 

HTH!

Link to comment
  • 3 weeks later...

For example, my theater room "movie" scene sets my table lights to 30% and my main lights to 20%. I use the following program to turn the button (TheaterMovieStatus) off if the lighting levels change:

 

If
       Status  'TheaterControls1G' is not Off
   And (
            Status  'TheaterControls1A-Table' is not 30%
         Or Status  'TheaterMain1' is not 20%
         Or Status  'TheaterMain2' is not 20%
       )

Then
       Set Scene 'TheaterMovieStatus' Off

Else
  - No Actions - (To add one, press 'Action')

 

 

 

Please forgive me if I'm missing something, but I want to make sure I've got a grasp on this.

 

For example I have a KPL button (A) in our Master Bedroom that acts as a Bedtime and Wakeup button. When switched off (Bedtime), the living room lights go off, the kitchen light dims (X-10), and the outside post light is set to 50%. When switched on (Wakeup), the living room lights are switched on, and the kitchen light is brought up full. I'd like to keep the A button sync'd so that it matches the status of the lights so that it is on when we go to be so it can be switched off. The kitchen X-10 module can't be part of the status equation as it's your garden variety Radio Shack Lamp Module, but the living room Lamplinc could provide the necessary status. What would be the best way to accomplish this?

Link to comment

OK, I think I got it. You create a Scene and place the appropriate Keypadlinc button in that Scene by itself. Then write a program that turns that Scene on or off as you desire based upon the condition(s) of the devices you are controlling. I tried it last night on the aforementioned button and program and it worked just fine. My new ISY replaced an Ocelot, so I'm still in the midst of shifting gears and getting familiar with the ISY!

Link to comment

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...