OpenSprinkler / OpenSprinkler-Firmware

OpenSprinkler Unified Firmware for OpenSprinkler, OpenSprinkler Pi, and OpenSprinkler Beagle.
http://www.opensprinkler.com
GNU General Public License v3.0
475 stars 286 forks source link

Sequential/Parallel zones are a limited concept #317

Closed wernerdaehn closed 2 months ago

wernerdaehn commented 2 months ago

Situation: I have 7 valves for sprinklers (Hunter MP Rotator) and each valve controls between 2 and 4 sprinklers. Their water consumption varies. The 2 sprinklers have a very low water consumption, the 4 sprinklers include 360° sprinklers with more water consumption and the valves controlling 3 sprinklers vary as well. Some can work in parallel, some cannot. For example, the 2-sprinklers and the 4-sprinklers should not work together. Some of the 3-sprinklers can work together.

But you have no control about what combinations are possible. I have set the 2-sprinklers to sequential group B and all others are group A. Needless to say that by coincidence they now run with the 4-sprinklers where they should not.

Further more, there is the geographic consideration. The zones should be watered in a particular order, first near the house and then moving outwards. That relates to https://github.com/OpenSprinkler/OpenSprinkler-Firmware/issues/232

I can see the following options

  1. Keep the sequential groups for manual watering but in the program editor allow to specify what runs in parallel and when. For example S2 6mins in parallel to S3 for 4mins, when both are completed start S4 as it requires all the water and then S5, S6, S7, S8 in parallel with two at the utmost.
  2. Configure water flow numbers and priorities. The pump provides 1.0l/sec, S2 consumes 0.3l/sec and S3 0.5l/sec. S4 requires all 1.0l/sec. Clearly S4 can run by itself only. The priority tells which to run first.
rayshobby commented 2 months ago

If I understand it correctly, what you want is more or less a fully manual definition of how to run zones. Perhaps it's more like the OpenSprinklerBee firmware: https://github.com/OpenSprinkler/OSBeeWiFi-Firmware but that's a completely different firmware. That's perhaps suitable for a small number of zones (which fits OSBee as it has only 3 zones); for OpenSprinkler, however, since you can run up to 72 zones (200 for OSPi), it's going to be a lot of tediuos work to manually define how to run so many zones, and the UI will be quite complicated and clunky.

That said, you can always use multiple programs to defines how exactly you want to run your zones. For example, in your option 1, you can split the run into 3 programs, with the first running S2 and S3, second running S4, and third running S5 to 8. You can set all of them to the Parallel group, so any can run in parallel with any other.

232 is a bit different from your case: in that case, the user wants to order the same set zones differently in different programs. In your case, it sounds like you just need all zones to be in a fixed order (from inner most to outer most), so you can just wire them in that order, and by default the firmware will run them in the order of zone index.

Honestly, the firmware is completely open-source, you can modify it in any way you want. If the existing sequential/parallel doesn't fit your need, change it in any way you want, or use an external script to achieve what you want.