bwbeisne Posted March 10, 2014 Posted March 10, 2014 Hi. I've been trying to add a some new functionality to my install. I have a 5 button keypad link. One button is labeled Panic. The intent is to trigger a program called 'all lights on'. This is easy and works fine. I want to have a coded exit point for this panic state that requires something like the following. A simple toggle of one button is fine but ultimately I want to incorporate a second button. If you guys can show me how to get this working I can go from there. Tia. 'Panic Exit Program' Master Light.C is switched OFF wait for Master Light.C = ON wait for Master Light.C = OFF THEN Run > Panic Exit Program I find it difficult sometimes in this environment to accomplish tasks that should be really easy. Am I the only one? Motion for instance, what a nightmare. I've given up using the ISY for this and just have them directly linked. It always seems to come back to nesting limitations. Thoughts?
oberkc Posted March 11, 2014 Posted March 11, 2014 I find it difficult sometimes in this environment to accomplish tasks that should be really easy. Am I the only one? Motion for instance, what a nightmare. I've given up using the ISY for this and just have them directly linked. It always seems to come back to nesting limitations. Thoughts? No, I dont find this overly difficult. One must, however, pay attention to things beyond ISY programs, to include the relationships to sceces and configuration of the motion sensor. Your panic exit, however, seems a bit more complicated. I suspect this will take a combination of several programs. The use of a variable may be the most viable approach. In what status do you expect master.light c to be after panic is initiated? How long do you want to wait between the individual toggles of button c before failing to recognize the sequence?
KMan Posted March 11, 2014 Posted March 11, 2014 [Edit]See next post which does the same thing with a variable instead of enabling/disabling programs[/Edit] I would attempt to do this with a different program to represent each state, and a timer program to timeout each state, and reset the state machine. The state machine would be controlled by enabling/disabling the programs: State 1: (normally enabled) If Control 'Master Light.C' is switched Off Then Run Program 'Master Light Timeout' (Then Path) Enable Program 'State 2' Disable Program 'State 1' Else - No Actions - (To add one, press 'Action') State 2: (normally disabled) If Control 'Master Light.C' is switched On Then Run Program 'Master Light Timeout' (Then Path) Enable Program 'State 3' Disable Program 'State 2' Else - No Actions - (To add one, press 'Action') State 3: (normally disabled) If Control 'Master Light.C' is switched Off Then Stop Program 'Master Light Timeout' Run Program 'Panic Exit' (Then Path) Enable Program 'State 1' Disable Program 'State 3' Else - No Actions - (To add one, press 'Action') Master Light Timeout: (always disabled) If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Wait 2 Minutes Disable Program 'State 2' Disable Program 'State 3' Enable Program 'State 1' Else - No Actions - (To add one, press 'Action')
KMan Posted March 11, 2014 Posted March 11, 2014 Ah ... cross posted with oberkc ... he is probably right ... might be easier done with a variable .... State 1: If Control 'Master Light.C' is switched Off And $i.PanicExitState is 1 Then Run Program 'Master Light Timeout' (Then Path) $i.PanicExitState = 2 Else - No Actions - (To add one, press 'Action') State 2: If Control 'Master Light.C' is switched On And $i.PanicExitState is 2 Then Run Program 'Master Light Timeout' (Then Path) $i.PanicExitState = 3 Else - No Actions - (To add one, press 'Action') State 3: If Control 'Master Light.C' is switched Off And $i.PanicExitState is 3 Then Stop Program 'Master Light Timeout' Run Program 'Panic Exit' (Then Path) $i.PanicExitState = 1 Else - No Actions - (To add one, press 'Action') Master Light Timeout: (always disabled) If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Wait 2 Minutes $i.PanicExitState = 1 Else - No Actions - (To add one, press 'Action')
bwbeisne Posted March 11, 2014 Author Posted March 11, 2014 OH! That makes sense. Ty. I'll try that today.
bwbeisne Posted March 11, 2014 Author Posted March 11, 2014 Ok. In trying this I found one thing I'd like to do. How can I, from a program turn the Master Light.C button back to off. Ie. not lit. I see >Insteon >Set Master Light.C > on 0 / off 0 (backlight level) but this doesn't seem to do anything. I don't understand what the different options here represent on 6 / off 0 etc.. I thought it was simply on/off state or led levels for each but they don't do anything. Switch remains the same.
LeeG Posted March 11, 2014 Posted March 11, 2014 A KeypadLinc Secondary button must be turned On/Off with a Scene rather than a Direct command. An Insteon Direct On/Off command does not have a placeholder that identifies which button to act on. Define an ISY Scene with KeypadLinc button C as a Responder. Turn the ISY Scene Off to Off button C. EDIT: Backlight level sets the On/Off brightness level of all buttons on the KeypadLinc.
oberkc Posted March 11, 2014 Posted March 11, 2014 My response would have been similar to KMan, but I would have included provisions for the sequence to time-out after a certain period. If that intersts you, and if you care to respond to my initial questions, I would be happy to offer a suggested set of commands.
KMan Posted March 11, 2014 Posted March 11, 2014 My response would have been similar to KMan, but I would have included provisions for the sequence to time-out after a certain period. If that intersts you, and if you care to respond to my initial questions, I would be happy to offer a suggested set of commands. Thought I did provide a 2 minute timeout on the sequence.
oberkc Posted March 11, 2014 Posted March 11, 2014 I was unclear....I would probably include short wait periods for each keystroke, reverting back to the beginning if not executed on time.
KMan Posted March 12, 2014 Posted March 12, 2014 lol ... I thought that's what I provided ... I just chose 2 minutes for the timeout. I *think* the programs I provided will restart the sequence if the next keystroke isn't pressed within 2 minutes. I was thinking that the "Run Program 'Master Light Timeout' (Then Path)" statements would re-start the 2 minute timeout each time a keystroke was pressed. But honestly I don't know if it works like that.
oberkc Posted March 12, 2014 Posted March 12, 2014 I was thinking that the "Run Program 'Master Light Timeout' (Then Path)" statements would re-start the 2 minute timeout each time a keystroke was pressed. But honestly I don't know if it works like that. I think you are correct. It would work like you describe. I did not look close enough earlier, I guess.
Recommended Posts