I’ve been doing a lot of reading about weather-based irrigation over the last few weeks. There’s a lot written about the “water balance” or checkbook approach, and it seems to be commonly used by professional irrigation managers and systems. See my brief description here: http://rayshobby.net/phpBB3/viewtopic.php?f=28&t=364&start=15. I created a simulation to use as proof of concept for this approach. My code and the papers on which it’s based can be found here: http://1drv.ms/1jDASLj. It would be great if others who are interested would try the code, experiment with it, and comment on your findings.
This approach to scheduling is very different than the one traditionally used for home irrigation, but it’s used quite a bit in agricultural and commercial contexts. It requires a sophisticated controller with daily or hourly access to weather data. With OpenSprinkler we have this capability. In traditional scheduling, you define programs with start day/times and run times for each sprinkler zone. With the checkbook approach, this is done automatically. Instead, you specify constraints when watering can take place, such as time windows, days of week, or odd/even days.
The first thing you must do is specify the characteristics of your zones. At a minimum, this includes soil type, plant type, and sprinkler type. The Rain Bird schedule calculator (http://www.rainbird.com/rbts/tutorials/RunTimeCalculator/) illustrates how this can work. It would be great to have a nice UI like this in OSPi at some point. The software calculates a number of zone attributes using the supplied information, defaults, and values looked up from tables of data from research. The values calculated include soil water capacity, maximum allowed depletion, sprinkler run time (broken into water/soak cycles, if necessary), and many more. You can provide additional zone characteristics like slope, sun/shade, plant density, sprinkler coverage efficiency, etc. to refine the calculated values.
Once the zone values are known, the irrigation schedule can be determined based on the weather. The ET0 and rain values are obtained from a weather source, either daily or hourly. (If there is no source, a schedule can be generated based on historical averages, but obviously that won’t account for current conditions.) Each zone has a landscape coefficient which is multiplied by ET0 to estimate the amount of water lost. This is subtracted from a per-zone water balance and any rainfall is added. When the water amount falls below a depletion threshold, irrigation takes place and the amount watered is added to the balance.
The weather-based calculation generates a list of zones that need watering each day. The final step is to generate the watering schedule for the zones. The scheduler must look at the user-specified constraints and the maximum run times and minimum soak times for the zones needing irrigation.
The simulation I’ve written does all the above using weather data from WeatherReach. I’ve created a database with daily weather data from January 2013 to May 2014 for a station near where I live, near Seattle. If you try the simulation, you can use this data or follow the instructions to download data for a station near you. Replace the zones with your own and run the simulation to see what watering schedule results.
I’m not sure the best way to integrate this into OSPi, since the model is so different than the current one. Ideas?