I believe OpenSprinkler does exactly what you want it to.
The ETo method takes into account the previous 24 hours weather (temperature, humidity, rainfall, and solar radiation) to compute the “water level” required to replace the net deficit, if any. The resulting water level can be zero. (It’s also capped at 200%.) Note that the assumption is that the system is watering every day. OS doesn’t have to take into account the watering during the previous 24 hours because it’s always simply replacing the ETo loss, if any. Also note that the implementation expects that you have calibrated your sprinkler system so that it delivers “baseline ETo” at 100% water level.
The daily watering requirement is problematic for many of us. (Note: the Zimmerman method has essentially the same requirement.) Unfortunately, daily watering is prohibited in many parts of the western U.S. It’s also not appropriate for some types of grasses, e.g., Kentucky Bluegrass.
I’ve been working on a method to “accumulate” ETo loss, i.e., water level, and use the accumulated value to decide whether to water today and how much while staying consistent with various regulations, e.g., only water on specified days, don’t water within x days after a rain of .xx inches, etc. This is far more complex than I anticipated (catastrophic requirements creep).
I’m backing down to just my requirements: 1) accumulate the water level over multiple days (capturing the water level at the same time each day), 2) decide whether or not to run the lawn watering program (ignore all others) based on the accumulated water level (reasoning: I don’t want to water the lawn more often than every two days or less often than every four days, which is optimal for my clay ground and bluegrass), 3) force OS to use a specified water level when running the lawn program, and 4) run the lawn watering program twice on one day (if the accumulated water level would require watering more in a single session than the ground can absorb).
[The last requirement is because I live in a “high desert” area where the ETo baseline is .2 inches. If we have two “high” ETo days in a row, where the accumulated water level exceeds 150%, that much water in a single session would result in some just running off and not being absorbed, so it’s necessary to split that into two 75% sessions.]
Having a traditional green lawn in this climate is a luxury. I’d be smarter if I plowed it under, tossed out some native grass seed, and didn’t water at all 🙂