klebel Posted September 2, 2015 Posted September 2, 2015 HI All, I recently put together a program and linked it to a button on my keypadlinc. I followed the directions in the wiki so I'm not quite sure what I am doing wrong. I have the button set as non-toggle ON. Here is the program. If Control 'Living Room- F' is switched On Then Set 'Master Bedroom - Indirect' Fade Up Set 'Master Bedroom - Hall' 50% Set 'Master Bedroom' Off Set Scene 'Master Bedroom / Master Fan - Medium' On Wait 1 minute Set Scene 'First Floor Lights' Fade Down Else - No Actions - (To add one, press 'Action') Any ideas why the program stays true and the light stays lit on the keypadlinc? Thanks all. Kerry
oberkc Posted September 2, 2015 Posted September 2, 2015 First, status of a program represents last run. If last program run is true, the program will stay true until run again AND false. Second, your condition "Control 'Living Room- F' is switched On" will trigger only by an ON command and, thus, will ALWAYS run true. There is no way this program can ever be false.
paulbates Posted September 2, 2015 Posted September 2, 2015 If its set for non-toggle on, then then all it can do is send an on. I would try these 2 changes: Set it for toggle mode Adding to what oberkc said, add a statement to turn Living room F off at the end of the program. You'll need to create a scene and add living room F button to it, and switch that off. That will turn off button F, and the program should no longer be true, solving both problems. The button would be off, you press the button The program runs, The program turns the switch back off
klebel Posted September 2, 2015 Author Posted September 2, 2015 If its set for non-toggle on, then then all it can do is send an on. I would try these 2 changes: Set it for toggle mode Adding to what oberkc said, add a statement to turn Living room F off at the end of the program. You'll need to create a scene and add living room F button to it, and switch that off. That will turn off button F, and the program should no longer be true, solving both problems. The button would be off, you press the button The program runs, The program turns the switch back off Interesting guys thanks for the feedback. I guess part of where I was confused was with the Non-Toggle ON state. I assumed that even though all it could do was send an ON. But I thought that the Control function in the IF statement was looking for a "new" ON state when the button was pressed. I was wrong. Also, any idea why it is that you can change the state of a standard dimmer switch to OFF in the THEN statement of a program but for a keypadlinc you have to add the key to a scene and adjust it in there? I dont get it. Seems lame you have to create a scene with a single button in it.
paulbates Posted September 2, 2015 Posted September 2, 2015 Interesting guys thanks for the feedback. I guess part of where I was confused was with the Non-Toggle ON state. I assumed that even though all it could do was send an ON. But I thought that the Control function in the IF statement was looking for a "new" ON state when the button was pressed. I was wrong. Also, any idea why it is that you can change the state of a standard dimmer switch to OFF in the THEN statement of a program but for a keypadlinc you have to add the key to a scene and adjust it in there? I dont get it. Seems lame you have to create a scene with a single button in it. So after thinking about it, you might not have to use toggle mode. I've never used non-toggle mode, but maybe sending it an off will turn it off. It's a fairly easy experiment to try. Depends on how if affects the functionality you want, and what the off does. . I've had the scene thing explained to me before, but I don't recall the specifics. The reality is its not that hard to, so I've "accepted the thing I can't change"
apostolakisl Posted September 2, 2015 Posted September 2, 2015 What are you wanting to happen? What you currently have is a button that each time you press it, it sends an "on". It will never shut off in non-toggle on mode. So no matter what, when you hit the button, it will run the "then" command of that program. Also Are you expecting to also use this button to turn all that stuff in the program off? If so, you would be better off creating a scene where the kpl button is a controller and all the other things are responders. The only caveat to that is the 1 minute delay on the last item. That would have to still be in the program. But all the other stuff would respond much quicker if it were a scene and not a program.
stusviews Posted September 2, 2015 Posted September 2, 2015 I have several buttons in non-Toggle On mode because that's all I ever want the button to do. In particular, each entry/exit had a "Dine Out" button that turns most lights off and a few to a preset On-level. In addition the corresponding walk path lights (e.g., walkway to street, courtyard to garages). But I don't want the button always lit. So, a program turns off the scene that contains that button only. Here's why: First, if I turn off the Dine Out scene, then all the devices in that scene will turn off (including the button) which is virtually every light in the house. I certainly don't want that. Second, when a direct command is sent to a device it affects that device only, not any of the devices links. So sending a direct command to a primary button will turn on only the wired load. But sending a direct secondary button has no function, so there is no code for that in the Insteon protocol. Including any unneeded code leaves less room for a feature. OTOH, all devices respond to scenes. That's how cross-linking buttons to create a virtual 3-way configuration works. Creating a scene with only a secondary button as a member allows you to turn the button on and off.
MWareman Posted September 2, 2015 Posted September 2, 2015 Also, any idea why it is that you can change the state of a standard dimmer switch to OFF in the THEN statement of a program but for a keypadlinc you have to add the key to a scene and adjust it in there? I dont get it. Seems lame you have to create a scene with a single button in it. Yep - agreed. However, this is an Insteon limitation not an ISY one. You cannot send direct messages to KPL keys (other than the primary node) so you have to put the node into a scene as a responder then send the scene command.
LeeG Posted September 2, 2015 Posted September 2, 2015 (edited) The technical answer is a Direct command does not have have a placeholder for a Group number. A SwitchLinc has a Group number of 1 for the single node that represents the SwitchLinc device. An 8 button KPL has 8 Groups (1- 8 ). Each button of the KPL has its own Group number. That is how Insteon knows which button is pressed and which button to operate on. Main A - Group 1 B - Group 2 C - Group 3 ......... H - Group 8 Insteon assumes a Direct command is operating Group 1. The Direct command has no field for Group. Since the KPL requires a Group number to know which button to reference, a Scene is required as the associated Scene link record(s) has a field for Group. A Scene can turn On a SwitchLinc which would use Group 1; KPL 1 button C which would use Group 3; KPL 2 button D which would use Group 4. The Group number cannot be in the command itself as a Scene can control over 250 devices, each of which has a different Group requirement. This may sound complex but it is pretty simple once the device requirement is understood. Edited September 2, 2015 by LeeG
oberkc Posted September 2, 2015 Posted September 2, 2015 I am with apostolakisl...I am uncertain what you are trying to accomplish and how this fails, if at all. If important, be aware that having a button in non toggle mode affects only what happens when the button is physically pressed. It does NOT prevent a scene command or direct command from putting in the opposite state.
Xathros Posted September 2, 2015 Posted September 2, 2015 If your desire is to have the button perform an action then turn off, it may be a better idea to set the button to Non-Toggle Off mode and adjust your program to accept a "Control is Switched Off" rather than On. That way you won't need to use a scene to reset the button to off when the program runs. The button will still blink twice when you press it to give you some feedback that it "Heard" you. Hope this helps. -Xathros
klebel Posted September 2, 2015 Author Posted September 2, 2015 Wow guys lots of great feedback. Much appreciated! I finally understand how the Keypadlincs really work with that explanation from Lee. The basic scenario of what I am trying to accomplish is pretty simple. I have a Keypadlinc in our living room. The living room is pretty much the last place we are in the evening before heading up to bed. I built the program to turn on the lights in our bedroom, kick on the ceiling fan (Im a human furnace) and to light the way from the first floor to the second. The after a period of time I wanted the program to turn every light on the first floor off. Pretty simple I thought. I was getting hung up on the keypadlinc button light ALWAYS being on. I like Xathros idea of doing the button as non-toggle OFF. I think I will give that a shot as well. Thanks again to all... Kerry
oberkc Posted September 2, 2015 Posted September 2, 2015 Xathros' idea is a good one. Another option, if it doesn't conflict with other uses for scene "first floor lights" would simply be to keep the keypad button as non-toggle-on, but include that same button in the first floor lights scene. When that scene turns off after the 1 minute wait, then the button would turn off, as well. This has the potential value that when the keypad button is lit, you know the timer is active.
Recommended Posts