62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 I set up my switch for the fast off and fast on. I can change the variable state to 1 (per the ISY program status) which should set all tstats to 60. However the tstats do not change. The variable did change to 1 but in the event log viewer I get: Thu 02/20/2014 07:50:25 AM : [iNST-SRX ] 02 50 24.7A.16 00.00.01 CB 13 00 LTOFFRR(00) Thu 02/20/2014 07:50:25 AM : [std-Group ] 24.7A.16-->Group=1, Max Hops=3, Hops Left=2 Thu 02/20/2014 07:50:25 AM : [ 24 7A 16 1] DOF 0 Thu 02/20/2014 07:50:26 AM : [iNST-SRX ] 02 50 24.7A.16 00.00.01 CB 13 00 LTOFFRR(00) Thu 02/20/2014 07:50:26 AM : [std-Group ] 24.7A.16-->Group=1, Max Hops=3, Hops Left=2 Thu 02/20/2014 07:50:26 AM : [iNST-DUP ] Previous message ignored. Thu 02/20/2014 07:50:26 AM : [iNST-SRX ] 02 50 24.7A.16 13.00.01 CB 06 00 (00) Thu 02/20/2014 07:50:26 AM : [std-Group ] 24.7A.16-->13.00.01, Max Hops=3, Hops Left=2 Thu 02/20/2014 07:50:26 AM : [iNST-INFO ] Previous message ignored. MY VARIABLE SET PROGRAM If Control '24.7A.16.1 outside driveway' is switched Fast Off And Control '24.7A.16.1 outside driveway' is not switched Fast On Then $S.vacation = 1 Else $S.vacation = 0 MY VACATION FOLDER/FOLDER Folder Conditions for 'Vacation / Away' Add conditions to limit when programs in this folder are allowed to run. If $S.vacation is 1 Then Allow the programs in this folder to run. If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Kitchen Thermostat-Main' 60° (Heat Setpoint) Set 'Master Thermostat - Main' 60° (Heat Setpoint) Set 'Upstairs Thermostat - Main' 60° (Heat Setpoint) Else - No Actions - (To add one, press 'Action') Am I missing something?
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 I moved the 3 line program setting the tstats to 60 out of the folder and added the variable if statement to it so it is now part of the MY Programs base folder. It now works. What was I doing wrong? Seems like it should have worked. If $S.vacation is 1 Then Set 'Kitchen Thermostat-Main' 60° (Heat Setpoint) Set 'Master Thermostat - Main' 60° (Heat Setpoint) Set 'Upstairs Thermostat - Main' 60° (Heat Setpoint) Else - No Actions - (To add one, press 'Action')
LeeG Posted February 20, 2014 Posted February 20, 2014 The device is not sending a Fast On or Fast Off in the posted trace. An Off command is sent twice. Looks like the device was not pressed twice fast enough to generate a Fast Off command
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 thanks. Gotta practice fast tapping. What does the previous message ignored mean? Maybe that the light is already off? Is there somewhere where the feedback is explained? Group? Max hops? Hops left? some kind of game:)
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 Now I am trying to make it so when I FAST ON, the tstats resume their normal schedules. I modified the program by adding the Or statement thinking it would force the tstats to change. However the programs seem to not be running until the change times happen in the programs. How do I force the tstats to run the corresponding part of their program during the time? Do I need to modify the tstat programs with a time from ***** to ****** statement? Would htat do it? A better way? Folder Conditions for 'Thermostats' Add conditions to limit when programs in this folder are allowed to run. If $S.vacation is 0 Or Control '24.7A.16.1 outside driveway' is switched Fast On Then Allow the programs in this folder to run. Sample tstat program If On Mon, Tue, Wed, Thu, Fri Time is 3:45:00PM Or On Sun Time is 11:00:00AM Then Set 'Kitchen Thermostat-Main' 68° (Heat Setpoint) Else - No Actions - (To add one, press 'Action')
LeeG Posted February 20, 2014 Posted February 20, 2014 Using If Control as a Folder condition does not work. If Control is looking at the command flowing from the device. That would be True only for the small time the command is actually received. That would be used in a Program rather than a Folder. The second Off command appears to be a duplicate message to the ISY and is ignored. The third message (second that is marked ignored) is an I2CS message reflecting the state of the Group message sequence when the button/paddle is pressed. It is not a functional message. On insteon.com there is an insteondetails.pdf document that describes many of the internals of Insteon messages.
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 Using If Control as a Folder condition does not work. If Control is looking at the command flowing from the device. That would be True only for the small time the command is actually received. That would be used in a Program rather than a Folder. Which commands can I use in a folder? variables? status? ?????
LeeG Posted February 20, 2014 Posted February 20, 2014 Variables and Status are fine as Folder conditions. If Status xxxx On If $xxxx = 4 The If Control is checking the command that has just flowed from a device. It would be True only for the instant that the command reaches the ISY. Otherwise the If Control result would be False, not what is needed for a Folder condition. Use If Control as a condition in a Program rather than a condition in a Folder.
Xathros Posted February 20, 2014 Posted February 20, 2014 62vetteefp- I think I see what you are trying to accomplish here. You can use the same state variable for your home folder that you use for your vacation folder simply testing for a 0 instead of a 1. Then create the following program to watch for your FastOn/FastOff commands at your switch: If Control '24.7A.16.1 outside driveway' is Switched Fast On and Control '24.7A.16.1 outside driveway' is not Switched Fast Off Then $s.Vacation = 1 Else $s.Vacation = 0 This program will set you to vacation mode with a fast on and to home mode with a fast off. Note the IS NOT in the second line of the If. It causes the ELSE clause to run when you issue the FastOff at the switch. Use: If $s.Vacation = 1 for your vacation folder condition and If $s.Vacation = 0 for your home folder. Hope this helps -Xathros
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 Xathros, that is not the issue. Problem was that the home programs would not run. In the original program below There is just a start time so it ask the set point to change only at 3:45. So when I added "If variable = 0" and then did the fast on at 4:00 it would not run. The next program would run though at 9:30 when it was supposed to run. If On Mon, Tue, Wed, Thu, Fri Time is 3:45:00PM Or On Sun Time is 11:00:00AM Then Set 'Kitchen Thermostat-Main' 68° (Heat Setpoint) Else - No Actions - (To add one, press 'Action') So I think I have to copy all those programs and add the too time. If Control '24.7A.16.1 outside driveway' is switched Fast On And On Sun From 11:00:00AM To 9:29:00PM (same day) Or On Mon, Tue, Wed, Thu, Fri From 2:00:00PM To 9:29:00PM (same day) Then Set 'Kitchen Thermostat-Main' 68° (Heat Setpoint) Else - No Actions - (To add one, press 'Action') Is there a better way to modify the original programs so I do not have to add another set of programs? Gonna get mighty messy with.
Xathros Posted February 20, 2014 Posted February 20, 2014 Well, you could include the variable test in your Ifs. That way when the state variable changes at 4:00, the ifs are triggered and evaluated. If ( On Mon, Tue, Wed, Thu, Fri Time is 3:45:00PM Or On Sun Time is 11:00:00AM ) and $s.Vacation = 0 Then Set 'Kitchen Thermostat-Main' 68° (Heat Setpoint) Else - No Actions - (To add one, press 'Action') -Xathros
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 HUH? It works as you said but how come? It is 4:24, not 3:45 on Thursday. I thought I would have to add a time range for it to work.
Xathros Posted February 20, 2014 Posted February 20, 2014 Nope. It triggers at your times and anytime the state variable s.Vacation changes value. Once triggered the conditions are evaluated and either Then or Else is run. Remember, a state variable will trigger and if statement that refrences it when the value changes, and integer variable will NOT. That is why it was critical for s.Vacation to be a state variable. the "s." at the beginning is just a voluntary nameing convention that some of use use to identify a variable as a state type. I name my integer variables with "i." at the beginning. Makes debugging a bit easier down the road. Remember, the ISY is event driven. Its all about the triggers! Hope this helps. -Xathros
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 But what about the sleep program that starts at 9:30 pm? Why does that program not run at 9:00 if the state variable changes to 0? It says IS 9:30, not after or before. If Time is 9:30:00PM And $S.vacation is 0 Then Set 'Kitchen Thermostat-Main' 62° (Heat Setpoint) Else - No Actions - (To add one, press 'Action')
Xathros Posted February 20, 2014 Posted February 20, 2014 Change And to Or. Your program says If time is 9:30 AND the value of s.Vacation is 0 So lets say at 9pm the variable changes from 1 to 0, the program triggers and the if is evaluated and runs false (Else) since the time is NOT 9:30 Change the and to an OR - the program will trigger and run true at 9:30 or anytime the value of s.Vacation becomes 0 Make sense? Now, that question makes me think that you have multiple programs for different times of day that might all trigger at once if coded this way. If so, you might think of coding a time range instead: If Time is From 5:00pm to 9:30pm (same day) AND s.Vacation = 0 Notice, I used AND instead of OR here - because of the range rather than a specific time. This will run true at 5:00 as long as s.Vacation is 0 and anytime between 5 -9:30 when s.Vacation becomes 0 -Xathros EDIT: If you need further assistance tonight, make sure to quote my post or mention @Xathros in your reply so I get notified by my phone otherwise, I won't see anything here till tomorrow morning.
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 Change And to Or. Your program says If time is 9:30 AND the value of s.Vacation is 0 So lets say at 9pm the variable changes from 1 to 0, the program triggers and the if is evaluated and runs false (Else) since the time is NOT 9:30 Change the and to an OR - the program will trigger and run true at 9:30 or anytime the value of s.Vacation becomes 0 Make sense? Now, that question makes me think that you have multiple programs for different times of day that might all trigger at once if coded this way. If so, you might think of coding a time range instead: If Time is From 5:00pm to 9:30pm (same day) AND s.Vacation = 0 Notice, I used AND instead of OR here - because of the range rather than a specific time. This will run true at 5:00 as long as s.Vacation is 0 and anytime between 5 -9:30 when s.Vacation becomes 0 -Xathros EDIT: If you need further assistance tonight, make sure to quote my post or mention @Xathros in your reply so I get notified by my phone otherwise, I won't see anything here till tomorrow morning. Thanks, I think that is what I have been trying to say! That will be a bunch of program changes but off I go.
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 Wake up: If On Mon, Tue, Wed, Thu, Fri From 6:00:00AM To 8:00:00AM (same day) Or On Sat From 7:45:00AM To 9:29:59PM (same day) Or On Sun From 7:45:00AM To 9:15:00AM (same day) And $S.vacation is 0 Then Set 'Kitchen Thermostat-Main' 68° (Heat Setpoint) Else Set 'Kitchen Thermostat-Main' 60° (Heat Setpoint) Back Home If On Mon, Tue, Wed, Thu, Fri From 3:45:00PM To 9:29:59PM (same day) Or On Sun From 11:00:00AM To 9:29:59PM (same day) And $S.vacation is 0 Then Set 'Kitchen Thermostat-Main' 68° (Heat Setpoint) Else - No Actions - (To add one, press 'Action') Bedtime: If On Sun, Mon, Tue, Wed, Thu From 9:30:00PM To 5:59:59AM (next day) Or On Sat, Fri From 9:30:00PM To 7:44:59AM (next day) And $S.vacation is 0 Then Set 'Kitchen Thermostat-Main' 62° (Heat Setpoint) Else - No Actions - (To add one, press 'Action')
62vetteefp Posted February 20, 2014 Author Posted February 20, 2014 If $S.vacation is 1 And Status 'Kitchen Thermostat-Main' is Mode Heat And Status 'Master Thermostat - Main' is Mode Heat And Status 'Upstairs Thermostat - Main' is Mode Heat Then Set 'Kitchen Thermostat-Main' 60° (Heat Setpoint) Set 'Master Thermostat - Main' 60° (Heat Setpoint) Set 'Upstairs Thermostat - Main' 60° (Heat Setpoint) Else - No Actions - (To add one, press 'Action')
LeeG Posted February 21, 2014 Posted February 21, 2014 Any program that is coded this way needs parens as indicated. The final AND is anding only the last OR in the list without the parens. If ( On Mon, Tue, Wed, Thu, Fri From 6:00:00AM To 8:00:00AM (same day) Or On Sat From 7:45:00AM To 9:29:59PM (same day) Or On Sun From 7:45:00AM To 9:15:00AM (same day) ) And $S.vacation is 0 If ( On Mon, Tue, Wed, Thu, Fri From 3:45:00PM To 9:29:59PM (same day) Or On Sun From 11:00:00AM To 9:29:59PM (same day) ) And $S.vacation is 0 This change is required for all programs with this sequence
Xathros Posted February 21, 2014 Posted February 21, 2014 Exactly what Lee said! -Xathros Sent from my iPhone using Tapatalk
LeeG Posted February 21, 2014 Posted February 21, 2014 Xathros - did not mean to jump into your conversation. Thought you were away from the forum until tomorrow.
Xathros Posted February 21, 2014 Posted February 21, 2014 No worries. Your always welcome to jump in. -Xathros Sent from my iPhone using Tapatalk
62vetteefp Posted February 21, 2014 Author Posted February 21, 2014 So much to learn!!!!!! And anyone can jump in on my behalf!!! If ( On Mon, Tue, Wed, Thu, Fri From 3:45:00PM To 9:29:59PM (same day) Or On Sun From 11:00:00AM To 9:29:59PM (same day) ) And $S.vacation is 0 Then Set 'Kitchen Thermostat-Main' 68° (Heat Setpoint) Else - No Actions - (To add one, press 'Action')
62vetteefp Posted February 21, 2014 Author Posted February 21, 2014 What happens if the program overlaps? In this case I used 9:29:59 and 9:30. What if I would have used 9:30 for both the end of one program and the beginning of another?
Recommended Posts