rgc99 / irrigation_unlimited

â™’Irrigation controller for Home Assistant
MIT License
322 stars 47 forks source link

queuing up automatic launches (pressure problems) #170

Open PaPa1ya opened 1 month ago

PaPa1ya commented 1 month ago

Is your feature request related to a problem? Please describe. The pump cannot provide pressure in several zones at the same time if they are started according to a schedule and others depend on the conditions.

Describe the solution you'd like I would like to see the possibility of queuing, not only manual start but also schedules.

Describe alternatives you've considered it would be ideal to create some pressure groups, for example: controllers:

accordingly, if a zone is trying to start (whether manual or scheduled) that is not part of the group of the currently running zone, then it must wait until the current group finishes watering.

rgc99 commented 1 month ago

Can you explain a little further. What order are the zones to run in (left, central, right). Are there any concurrencies (left & central and then right).

PaPa1ya commented 1 month ago

Yes, of course, thank you for asking! Desired behavior:

A signal to start is received, whether it's a manual start or scheduled.
If there is no zone currently running -> start as usual.
If a zone from the same group is currently running -> start as usual.
If a zone from another group is currently running -> enter the queue similar to a manual start.

So, there should be a common queue. For example, let's assume there is another group "flowerbeds" with a zone "flowerbed 1".

The left bed zone is scheduled to start at 19:00 and runs for 20 minutes;
The central bed zone starts manually at 19:10 and runs for 20 minutes;
The right bed zone was scheduled for 19:20 for 15 minutes, but at 19:20 it enters the queue and waits another 10 minutes until the central bed finishes;
The flowerbed 1 zone was scheduled for 19:30 for 10 minutes (which initially overlapped with the right bed), but now at 19:30 it enters the queue and waits until 19:45, and then starts.
PaPa1ya commented 1 month ago

Another example:

The left bed zone is scheduled to start at 19:00 and runs for 40 minutes;
The central bed zone is scheduled to start at 19:10 for 20 minutes and enters the queue;
The right bed zone is scheduled to start at 19:20 and runs for 30 minutes;
At 19:40, the central bed zone tries to start, sees that the right bed is running, and shifts its start time to 19:50.

From this, a small problem arises: It is possible to set up, for example, the sequential start of the left and right bed zones, so that at least one zone from the group is always running, and then the other groups will never start.