djones1415 Posted December 23, 2012 Posted December 23, 2012 Objective: From a KPL button in my bedroom: 1) See if any light on the first floor is not off (KPL button lit up) 2) If any are not off, turn all first floor lights off (without having to turn on any that are already off) I have a scene: First Floor All If I link a KPL button to control this scene, will the KPL button light up whenever any device listed in the First Floor All scene is on (or not off). Or does this requirement require a ISY programming? Before I start, I'd appreciate any tips on the simplest way to get to this simple objective. Thanks
oberkc Posted December 23, 2012 Posted December 23, 2012 Requires a program If Status light 1 is not off Or status of light is not off Or status...... Then Turn kpl button on Else Turn kpl button off Make this kpl button controller of the scene. Then, when the button is lit as a result of the program and you turn it off, the scene will go off.
LeeG Posted December 23, 2012 Posted December 23, 2012 Need to know if the devices in the First Floor All Scene are defined as Responders or Controllers. If they are Responders they are controlled by some other device, Scene or themselves. Adding the KPL button as a Controller will have no affect on the KPL button LED as the other devices are Responders. If there are other Controllers in the Scene any time those Controllers turn On or Off they are controlling the First Floor All Scene which will affect the KPL button LED. Without knowing all the details of the First Floor All Scene I think it will require ISY Programming to accomplish what you want. You could assign the KPL as a Controller of the First Floor All Scene and set the KPL button to non-toggle Off mode. Any time the KPL button is pressed it turns First Floor All Scene Off without concern for the current state of any of the Scene Responders. This gets the Scene devices Off but does not have the KPL button LED as an indicator that any were on to begin with. That requires ISY Programming.
djones1415 Posted December 26, 2012 Author Posted December 26, 2012 Almost there...but have some sort of timing issue that I don't understand... Scene "Left Lamp" - Controlled by KPL Button 3, Responder is OutletLinc Dimmer #1 (lamp). Scene "Right Lamp" - Controlled by KPL Button 4. Responder is OutletLinc Dimmer #2 (lamp). Scene "Both Lamps" - Controlled by KPL Button 1. Responders are the two OutletLinc Dimmers, KPL Button 3, and KPL Button 4. What I want is to switch on KPL Button 1 - get both lamps on, and KPL 1, KPL 3 and KPL 4 to light up. If I turn off KPL 3, the left lamp goes off, KPL 3 and KPL 1 go off. If I turn off KPL 4, the right lamp goes off, KPL 4 and KPL 1 go off. This all works fine EXCEPT when I turn KPL 1, KPL 1 goes on, but immediately goes off (correctly leaving both lamps on and KPL 3 and KPL 4 on). If I turn KPL 1 on AGAIN, it correctly stays on, and correctly goes off if I turn either KPL3 or KPL 4 off. Program I'm using: If Status OutletLinc Dimmer #1 is OFF OR Status OutletLinc Dimmer #2 is OFF Then Set KPL Button 1 Off. Else (nothing) It's as if the ISY takes an instant before it recognizes both Outlets are on. What am I missing? Or do I need to add a delay somewhere? Or use different logic in the program? Or ?? Thanks. I have a ton of these to do, and I'd like to know how to handle this simple case before doing too many. And if there's a simpler way to handle than what I'm doing...
oberkc Posted December 26, 2012 Posted December 26, 2012 Program I'm using: If Status OutletLinc Dimmer #1 is OFF OR Status OutletLinc Dimmer #2 is OFF Then Set KPL Button 1 Off. Else It's as if the ISY takes an instant before it recognizes both Outlets are on. I believe the problem is that when you turn on KPL1, the outletlincs respond with a change in status, triggering your program. I find it rarely to be good practice to have a program "then" condition that can trigger an evaluation of the "if" path. Perhaps it would be worth trying breaking that program into two: if: original conditions then run second program "then path" Second program: if then original path
LeeG Posted December 26, 2012 Posted December 26, 2012 Another option is to trigger with the 'action' instead of the 'reaction' If Control ‘KPL 3’ is switched Off Or Control ‘KPL 4’ is switched Off Then Set KPL Button 1 Off. Else
djones1415 Posted December 26, 2012 Author Posted December 26, 2012 I believe the problem is that when you turn on KPL1, the outletlincs respond with a change in status, triggering your program. I find it rarely to be good practice to have a program "then" condition that can trigger an evaluation of the "if" path. Perhaps it would be worth trying breaking that program into two: Yes..I thought that too - although I couldn't see why turning on the KPL1 button would have triggered a status change. Anyway, I had tried the separate program before posting, and posted this just to keep it simpler. Even running the Else (or Then) path of the separate program that just turns off the KPL1 button, KPL1 still goes off an instant after it is pressed and goes on. Again, it stays on properly if I hit it a second time (after the lamps are on). I'm thinking the problem has something to do with the timing of when the ISY is evaluating on or the other of the OutletLincs. I'm stumped.
LeeG Posted December 26, 2012 Posted December 26, 2012 djones1415 Check my previous post just above your last post. Pressing KPL button 1 is changing the Status of the OutletLincs. As soon as the Status of one is turned On the Program triggers. Since the If conditions are ORed together the other OutletLinc is still Off so the Program turns KPL button 1 Off. The Program looks like it was written to react to KPL button 3 or KPL button 4 being turned Off. Works good for that. The problem being it is also triggered when the first OutletLinc is turned On. Any change to Status of tested devices triggers the Program.
djones1415 Posted December 26, 2012 Author Posted December 26, 2012 Thanks to both of you for helping. LeeG: I'd like to use the Status instead of Control if possible. My thinking (please check it - I'm new to this) is that using Status will make future changes easier. For example, if any controller (maybe added in the future) turns off one of the lamps in this scene, Status will catch that and the KPL1 button will go off as it should - with no program change. Using Control would mean I'd have to go in and change the programming for every switch I add in the future to catch each specific switch that turned off the lamp and have the program handle that KPL1 button. Also, it doesn't appear to me that turning off the KPL1 button does in fact change the status of either lamp. With the following program I can turn the KPL1 button on (THEN) and off (ELSE), and doing either doesn't affect the lamps. (The KPL1 button does not control the load to anything.) oberkc (or LeeG): any idea why putting the logic to turn off the KPL1 into a separate program didn't work? I'd think this is a pretty standard goal that everyone would have - i.e. having a KPL button that turns on multiple lights be lit only if all of those lights are in fact on...and to to off any time any single one of those lights goes off. On if ALL are on; Off is ANY is off. Thanks... Still Stumped
oberkc Posted December 27, 2012 Posted December 27, 2012 oberkc (or LeeG): any idea why putting the logic to turn off the KPL1 into a separate program didn't work? It would probably be easiest to check your actual program. Until then... Your original question was with regards to using a KPL button as an indicator without mentioning that you wanted to use that same KPL to control a scene. This definitely adds another layer of complication. In retrospect, two programs or one probably makes no difference. Given your latest set of requirements: What I want is to switch on KPL Button 1 - get both lamps on, and KPL 1, KPL 3 and KPL 4 to light up. If I turn off KPL 3, the left lamp goes off, KPL 3 and KPL 1 go off. If I turn off KPL 4, the right lamp goes off, KPL 4 and KPL 1 go off. I would keep the scenes as you have defined. I would then create a program: if control KPL3 is switched off or control KPL4 is switch off then set KPL1 off What you did not state was what, if anything, you want to happen to KPL1 if you separately turn both KPL3 and KPL4 on. You also did not mention how you define "on" with the outlet dimmers. Is this 100%? Do you expect KPL1 to go off when you DIM one or more of the lamps? Do you want KPL1 to go off ONLY when the lamps are full off? Answers to these questions will affect your program(s).
LeeG Posted December 27, 2012 Posted December 27, 2012 “What I want is to switch on KPL Button 1 - get both lamps on, and KPL 1, KPL 3 and KPL 4 to light up.†“This all works fine EXCEPT when I turn KPL 1, KPL 1 goes on, but immediately goes off†I took the above to mean everything worked which included “get both lamps On†except that the Program was turning KPL1 button Off when not desired. “Also, it doesn't appear to me that turning off the KPL1 button does in fact change the status of either lamp.†That is correct. Turning the KPL 1 Off with a Direct command has no affect on any of the Responders that may be linked to KPL button 1. Insteon does NOT propagate Direct commands sent to a device to any linked Responder(s). Yes, checking the ‘reaction’, that is the OutletLinc Status, would pick up another Controller if added to the mix in the future. “any idea why putting the logic to turn off the KPL1 into a separate program didn't work?†I’d like to see the actual Programs posted to be sure but the issue here is not the Then clause changing the things the If is checking as it is not. Moving to two Programs resolves that situation. The problem is the Scene that is activated when KPL button 1 is pressed On is affecting the status of multiple devices. When one of the OutletLincs changes Status (to On in this case) the Program is triggered. The other OutletLinc is still Off at that point so the Program If is True driving the Then clause. Again, it is not what the Then clause does that causes the problem but what the Scene driven by KPL button 1 turning On. I’ll have to give some thought on how to resolve and still be able to add additional controllers in the future without having to change the Program as well.
djones1415 Posted December 27, 2012 Author Posted December 27, 2012 Thanks to both of you for helping people get started on here. And, LeeG - Thank you for getting me to the solution. Your comment led the way... The problem is the Scene that is activated when KPL button 1 is pressed On is affecting the status of multiple devices. When one of the OutletLincs changes Status (to On in this case) the Program is triggered. The other OutletLinc is still Off at that point Here are the programs that do the trick: If Status OutletLincDimmer #1 is not OFF AND Status OutletLincDimmer #2 is not OFF Then Run Program KPL1 (Then Path) 'turns on the KPL1 button Else Run Program KPL1 (Else Path) 'turns off the KPL1 button (It was adding the line that had the program turn the KPL1 button on that fixed things. KPL1 actually blinks once, as you would no doubt predict when you think about it. The program turns off KPL1 when the first OutletLincDimmer is turned on (but the other remaining off, as you pointed out) and then turns it back on when the second goes on.) Perfect. KPL1 is on when both lamps are on, and it's off when either or both are off. And this will be true in the future if some other scene or controller turns both lamps on or either/both off --- without having to change the program code. I can use this throughout to keep the indicator lights in sync with the devices, just like hard linking in the switches does. Thanks again.
Recommended Posts