boser Posted May 2, 2008 Posted May 2, 2008 I have a legacy X10 sprinkler and would like to control it like this: at 8pm run sprinklers: if (Mon or Wed or Friday) x10 E1 on wait 10 min x10 E1 off end if (Tue or Th) x10 E2 on wait 15 min x10 E2 off end etc. I have 12 different sprinkler zones, and they all are active on different combinations of days. How can I program this with the ISY? Thanks, Bernhard
Chris Jahn Posted May 2, 2008 Posted May 2, 2008 Bernhard, Looks like you practically did it with your pseudo code ... All you need to do is go to the program details screen and create one program per zone. Here are two programs matching the ones in your post. If On Mon, Wed, Fri Time is 8:00:00PM Then Send X10 'E1/On (3)' Wait 10 minutes Send X10 'E1/Off (11)' Else - No Actions - (To add one, press 'Action') If On Tue, Thu Time is 8:00:00PM Then Send X10 'E2/On (3)' Wait 15 minutes Send X10 'E2/Off (11)' Else - No Actions - (To add one, press 'Action')
boser Posted May 15, 2008 Author Posted May 15, 2008 Chris, Thank you for your response. Unfortunately your solution does not work well for many (I have 12) zones, which all run for different times and different combinations of days. Furthermore, only 1 zone can be watered at any time. For this, a sequence (as I suggested with my pseudo program) works better. This is also the solution simple sprinkler controllers use. How can I do this with the ISY? Regards, Bernhard
MikeB Posted May 15, 2008 Posted May 15, 2008 Thank you for your response. Unfortunately your solution does not work well for many (I have 12) zones, which all run for different times and different combinations of days. Furthermore, only 1 zone can be watered at any time. I don't think you'll be able to do a sequence because your sprinklers are running at different days of the week. Why not create 12 separate programs, 1 for each of your sprinklers, as Chris suggested? You can set the schedules so they do not overlap, and you can have a unique schedule for each sprinkler.
Chris Jahn Posted May 16, 2008 Posted May 16, 2008 Chris, Thank you for your response. Unfortunately your solution does not work well for many (I have 12) zones, which all run for different times and different combinations of days. Furthermore, only 1 zone can be watered at any time. For this, a sequence (as I suggested with my pseudo program) works better. This is also the solution simple sprinkler controllers use. How can I do this with the ISY? Regards, Bernhard The ISY is designed to have many small programs, and thus having one per zone is the way to go for this. I'm not sure how a sequence would work better because you would still have to schedule each zone anyway, and thus it would be one big program vs 12 small ones. An advantage of having the 12 programs is that in the Program Summary screen you can see the Last time each individual zone ran (and the Next time as of version 2.6.5). You can also easily enable/disable individual zones if necessary from that screen. To organize the 12 programs, I would create a 'Sprinkler' folder and put all 12 programs in there. You could then use Folder Conditions as a means of controlling whether they are enabled/disabled as a group.
Chris Jahn Posted May 16, 2008 Posted May 16, 2008 I should have also mentioned that you can do a non-conditional sequence such as the following: On Mon/Wed/Fri, do E1 at 8:00pm, E2 at 8:11pm, E3 at 8:22pm If On Mon, Wed, Fri Time is 8:00:00PM Then Send X10 'E1/On (3)' Wait 10 minutes Send X10 'E1/Off (11)' Wait 1 minute Send X10 'E2/On (3)' Wait 10 minutes Send X10 'E2/Off (11)' Wait 1 minute Send X10 'E3/On (3)' Wait 10 minutes Send X10 'E3/Off (11)' Else - No Actions - (To add one, press 'Action')
boser Posted May 19, 2008 Author Posted May 19, 2008 Thanks for all the responses. I understand those solutions - unfortunately they are very clumsy in this application. A benefit of a "web controlled" (via ISY) sprinkler is that it's easy to adjust for different crop and seasons. I frequently make changes to the schedule, running zones for different durations (10 ... 300min) and on different combinations of days. "Normal" sprinklers just do this by starting at some time and then running each zone for however long it's needed each day. Of course I can generate this schedule manually (different for each day). Problem is that whenever I make a change the excercise must be repeated. Worse, errors can result in the watering of some zones to be cut short. --> It would be nice if flexibility to address such situations would be added to the ISY programming model. Bernhard
boser Posted May 19, 2008 Author Posted May 19, 2008 Having one program per zone would be an attractive solution, provided program execution could be conditioned on day of week. Something like program zone 1 if day = M/W/F water 10min program zone 2 if day = M/Sat water 60min etc. program water all each day at 8pm run program zone 1 run program zone 2 etc. Program water all would be enabled to run each day at 8pm, while programs zone X would be disabled from normal execution and therefore be run only when called by program water all. Programs seem to have an enable/disable feature and a true/false status, but I don't quite know how to use it and if they can be used to solve my problem. Incidentally, is there a description somewhere of these features? Thanks, Bernhard
Algorithm Posted May 19, 2008 Posted May 19, 2008 Bernhard, Again, your pseudo-code is pretty much what you want: Program 'Water All Zones' - Enabled If Time is 8:00:00PM Then Run Program 'Water Zone 1' (If) Run Program 'Water Zone 2' (If) etc. Else - No Actions - (To add one, press 'Action') Program 'Water Zone 1' - Not Enabled If On Mon, Wed, Fri From 12:00:00AM To 11:59:59PM (same day) Then Set 'Sprinkler Zone 1' On Wait 10 minutes Set 'Sprinkler Zone 1' Off Else - No Actions - (To add one, press 'Action') Program 'Water Zone 2' - Not Enabled If On Mon, Sat From 12:00:00AM To 11:59:59PM (same day) Then Set 'Sprinkler Zone 2' On Wait 60 minutes Set 'Sprinkler Zone 2' Off Else - No Actions - (To add one, press 'Action') Each Water Zone n program can be run at any time of day on its specified days, but its Enabled box is not checked, so that the program will only run when called from another program (or from the Program Summary tab). Each turns its respective sprinkler on for the specified amount of time, and then back off. The Water All Zones program's checkbox is checked, so it will run every day at 8:00 pm. It will, at that time, run the If condition of each of the zone programs, so each will run if it is programmed for the current day. Note that all zones which are programmed for the current day, will run at the same time (8:00 pm), which seems to break your rule that only one zone run at at time. If you want them to run sequentially, you could insert a delay (Wait) between each program call in the Water All Zones program, but that would require knowing when and for how long each zone will be running. Another way would simply be to provide the time to begin in the condition of each zone program and enable it (no 'All Zones' program required). Set the time differently for each zone (eg. 8:00pm, 8:10pm, 9:10pm) so that no two run at the same time. If you still wish to use a main controlling program as above, yet have the zones run sequentially, it becomes more complex, requiring some form of flow-control. Let us know if you require example code for that.
boser Posted May 23, 2008 Author Posted May 23, 2008 All zones running concurrently is a problem (what actually happens is that only the last zone in the sequence is actually watered). Having the wait in the main program (and the day of watering in the subprogram) works but is undesirable since information that belongs in one place is scattered over two programs (and then I forget and change the schedule incorrectly). Does your statement "If you still wish to use a main controlling program as above, yet have the zones run sequentially, it becomes more complex, requiring some form of flow-control. Let us know if you require example code for that." refer to a solution? Bernhard
Algorithm Posted May 23, 2008 Posted May 23, 2008 Hello Bernhard, Perhaps the following will accomplish your task: Program 'Water All Zones' - Enabled If Time is 8:00:00PM Then Run Program 'Water Zone 1' (If) Else - No Actions - (To add one, press 'Action') Program 'Water Zone 1' - Not Enabled If On Mon, Wed, Fri From 12:00:00AM To 11:59:59PM (same day) Then Set 'Sprinkler Zone 1' On Wait 10 minutes Set 'Sprinkler Zone 1' Off Run Program 'Water Zone 2' (If) Else Run Program 'Water Zone 2' (If) Program 'Water Zone 2' - Not Enabled If On Mon, Sat From 12:00:00AM To 11:59:59PM (same day) Then Set 'Sprinkler Zone 2' On Wait 60 minutes Set 'Sprinkler Zone 2' Off Run Program 'Water Zone 3' (If) Else Run Program 'Water Zone 3' (If) At 8:00 pm each day, Water All Zones begins the sequence by calling Water Zone 1. If zone 1 is scheduled, it runs, and when complete it calls Water Zone 2. If zone 1 is not scheduled, it immediately calls zone 2. Each zone calls the next, until the sequence is complete. Each zone's schedule is entirely contained in a single program, so needs to be edited in only one place. Further, changing any zone does not cause a conflict with other zones, since each runs only when the previous one has completed (or passed).
Algorithm Posted May 23, 2008 Posted May 23, 2008 One more minor edit. Chris Jahn, our CTO and programming expert, has just pointed out to me that the zone programs' condition statement can be simplified from: Program 'Water Zone 1' - Not Enabled If On Mon, Wed, Fri From 12:00:00AM To 11:59:59PM (same day) to: Program 'Water Zone 1' - Not Enabled If On Mon, Wed, Fri From 12:00:00AM For 24 hours Thanks, Chris!
Recommended Posts