ncoig Posted February 21, 2013 Posted February 21, 2013 So I recently tried to pare down my lines of code in the ISY, and combined a few things into single programs versus more. Evidently I should have left it alone, but I need understand the WHY of my failure... I know that if a THEN or ELSE statement contains a WAIT and the conditions change during the WAIT, it changes the evaluation, however, in my simple program, the state doesn't change, the program still shows "TRUE" yet my variable doesn't change and programs dependent on that variable don't fire. WHY? My program: If Elk Area 'The xxx Estate' 'Armed State' is Armed Away Then Wait 8 minutes $House_Occupied = 0 $Night_Mode = 0 Else - No Actions - (To add one, press 'Action') The purpose of this (not that it matters) is because I don't want my HVAC settings going up and down over and over if I leave, then run back up the stairs to get something and have to disarm/arm the system in quick succession, as well as leaving lights on until I'm well gone. -N
LeeG Posted February 21, 2013 Posted February 21, 2013 Are those Integer or State Variables? Were the values changed by the Program but did not trigger other Programs? If that is the case it sounds like the Variables are Integer Variables when they should be State Variables.
LeeG Posted February 21, 2013 Posted February 21, 2013 Were the variable values set by the Program reflected in the Variables tab display of the State variables?
apostolakisl Posted February 21, 2013 Posted February 21, 2013 Your program should trigger on any change of state of the Elk. It must change from anything else to armed away to run true, all other changes will run false. So, either something is wrong with your ISY/Elk, or something else is changing your variables. First, check your program summary page. Assuming you are home, your alarm will not be armed away so the program should be false. If it is true, something is wrong with your Elk/ISY. Second, arm the alarm to away. You should immediately see the program change to true and show "running then". After 8 minutes it should show a finished run time and the "running then" change to "idle". Now, there is no excuse for variables not being "0". If they are not 0 then look to see if you have another program that ran at the same time this program finished, a program that might have run because those variables are state variables and they were a trigger for some other program to change them.
Recommended Posts