Blackbird Posted July 21 Share Posted July 21 I want to make a program and in the "IF" I want to have if a program is enabled or disabled but all I see for an option is "True" or "False". Thanks Quote Link to comment
oberkc Posted July 22 Share Posted July 22 (edited) I am not sure I understand what you’re asking. Are you asking whether it is possible to add a condition in one program based upon whether another program is enabled or not enabled? Edited July 22 by oberkc 1 Quote Link to comment
hart2hart Posted July 22 Share Posted July 22 I believe you need to set a variable (including init value for persistence) when enabling or disabling a program then check that variable. Alternatively you could set that variable and have it in the if of program you would be enabling and disabling. Quote Link to comment
dbwarner5 Posted July 22 Share Posted July 22 There is no direct way to do what you want. You will have to create a variable that toggles when you disable / enable the program of interest, and then test that variable in your new program. 1 Quote Link to comment
larryllix Posted July 22 Share Posted July 22 My favourite for almost any program/state/lighting scene now is to create a State variable and a program that controls the enable/disable. Now you can control it via any program, and test it via any program with one line. No worrying or complex logic to see if programs may be mis-nested or confusing each other. If StateVar /= 0 Then enable Program X Else disable Program x Quote Link to comment
Blackbird Posted July 23 Author Share Posted July 23 Im surprised that it isnt in the ISY as an option the same as true or false. Quote Link to comment
larryllix Posted July 23 Share Posted July 23 (edited) 6 hours ago, Blackbird said: Im surprised that it isnt in the ISY as an option the same as true or false. I had thought it was testable in ISY, in the past. Now I see all the controls to program change those statuses but no conditional access status. IIRC True and False were going to be defined as system variables, as an addition years ago, but expansion became paramount to UDI when Insteon was threatening collapse. Edited July 23 by larryllix Quote Link to comment
mango Posted July 23 Share Posted July 23 16 hours ago, larryllix said: My favourite for almost any program/state/lighting scene now is to create a State variable and a program that controls the enable/disable. Sorry to hijack this thread, but I'm interested in this method. Care to explain a bit further? Quote Link to comment
larryllix Posted July 23 Share Posted July 23 3 minutes ago, mango said: Sorry to hijack this thread, but I'm interested in this method. Care to explain a bit further? For lighting scenes I create a state variable for each room. Then I build a folder full of different lighting levels and routines using Insteon scenes, programs and NRs to accomplish whatever I want in lighting or in one case automatic time based dimming. In my variables I define several "constant" definitions such as: $cMODE.OFF= 0 $cMODE.VERY.DIM = 1 $cMODE.FULLON = 9 $cMODE.WHITE.FLASH = 99 etc... Each room theme folder program has a single condition to detect it's value like this LivRm.theme.dim - [ID 003A][Parent 0043] If $sTheme.livRm is $cMODE.DIM Then ...set levels to DIM Else - No Actions - (To add one, press 'Action') When you want to set a lighting scene to whatever a single line of code from anywhere (Alexa, automatic programs, etc..) it takes two line of code like this to turn it on LivRm.green.initiate - [ID 0049][Parent 0017] If // Alexa vocal initiated Then $sTheme.livRm = $cMODE.RESET $sTheme.livRm = $cMODE.GREEN Else - No Actions - (To add one, press 'Action') When you need to know what scene is being used only a single test is required. No convoluted logic is required with cross testing between programs. When you want to "borrow" a set of lights and restore them it becomes simple and reliable, like this to flash lights at midnight and restore the original levels again: LivRm.lateWarning - [ID 00AB][Parent 0017] If Time is 11:59:30PM Then $LivRm.mode.saved = $sTheme.livRm $sTheme.livRm = $cMODE.RESET $sTheme.livRm = $cMODE.RED.STROBE Wait 3 seconds // $sTheme.livRm = $cMODE.RESET $sTheme.livRm = $LivRm.mode.saved Else - No Actions - (To add one, press 'Action') 2 Quote Link to comment
dbwarner5 Posted July 23 Share Posted July 23 @mango What @larryllix describes above is an awesome approach to have lots of scenes and simple programs to call them. If you are new to this concept, the easiest way to begin thinking about it is simply creating the "variable" to be either 1 or 0.. 1 being on for the scene, 0 being off. Then you would have programs that would change that variable, anywhere in the Eisy and a program that simply does: if variable is 1 then turn on scene Else turn off scene. Once you get this concept you can add a variable to each scene and create lots of scenes to control the lighting simply in any part of ISY. Larry's nomenclature leads me to believe in his example, he has at least 4 or 5 scenes (or he is adjusting the scenes in the programs) for the living room. Each different value for the room variable (in my example 1 or 0) triggers each different scene via programs like the above; one program for each scene (or scene setting). So because these programs are watching for that rooms variable to change and to subsequently change the scene, it is easily done in an isolated way w/o ever affecting any other lights etc. 2 Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.