Thanks for the clarification on memory usage. I fully understand the limited memory on the Arduino platform, so I can see how this could be an issue. I agree that the way that the scheduler deals with overlapping programs is clever. However, this will be confusing to many users, though the program view window helps to make it easier to understand. I wonder if it might be possible to hide some of this complexity while still maintaining efficient memory use through the scheduling window subroutines? For example, it could automatically generate additional program entries when different times were needed for different stations. Let’s consider that a setup with six stations:
1. 3 minutes
2. 6 minutes
3. 9 minutes
4. 6 minutes
5. 3 minutes
6. 9 minutes
Program 1: 3 minutes, all stations respond
Program 2: 3 minutes, 2, 3, 4 and 6 respond
Program 3: 3 minutes, 3 and 6 respond
This could be handled in the logic of the scheduler.
An alternative, considering memory constraints, would be to have a single start time per program, and then simple byte values for each station duration (representing 0 to 255 minutes). Setting a station number limitation for the original OpenSprinkler of say 4 extension boards, plus the 8 on the OpenSprinkler itself gives 40 stations. So, each program would require only 40 bytes plus the additional bytes for the start time variable. No stop time would be required. This may require variable length records (number of stations*number of programs) to maximize the number of programs on a typical setup. Users with a large number of stations and separate programs should be encouraged to implement an OSPi to take advantage of the essentially unlimited memory.
These are just thoughts about how to enhance the user interface and flexibility. I think that the OpenSprinkler is very nice, and you, Dan and Samer have done a great job to enhance the concept.