Concurrent automation program issue

Here is how I am setup. I have 2 VWC sensors so I created a P1, P2, and P3 program for each that run concurrent.

Example:
0900-1200
Both P1 automations are active at the same time. When it hits 0900 and both sensors are below the threshold, the automation will trigger for the first P1 program, and will run that until its above your set threshold. After which it will start on the second P1 program, and will also run that until its above your set threshold. So if your automation program needs to trigger multiple times, then the other P1 program will sit idle until the first one is complete.

Basically we have this:
1st P1 automation - 0900
1st P1 automation - 0910
1st P1 automation - 0920
1st P1 automation - 0930 (reaches threshold)
2nd P1 automation - 0940
2nd P1 automation - 0950
2nd P1 automation - 1000
2nd P1 automation - 1100 (reaches threshold)

And I would like this:
1st P1 automation - 0900
2st P1 automation - 0910
1st P1 automation - 0920
2nd P1 automation - 0930
1nd P1 automation - 0940
2nd P1 automation - 0950
1st P1 automation - 1000 (reaches threshold)
2nd P1 automation - 1100 (reaches threshold)

Doing it the proposed way allows for staggering, and I’d rather bring two plants slowly up to capacity than 1 kinda quick and the other waiting 40+ minutes.

I appreciate your feedback and i gave this post a thorough look.

Sharing some tech details though, this is largely specific to the the OS firmware and how it handles the incoming calls.

Before we continue to explore this - could you confirm - are you running the standard OS firmware with no modifications?

Currently I’m running 2.2.0(3), which I notice is out of date. Looks like 2.2.1(4) is the most current. Now that I know that I’ll likely update after I finish this run in a few weeks.

This likely won’t be fixed by updating the OS firmware the standard way. I don’t think OS changes this behavior.

However, we have a custom firmware version that deals with similar problems.
It might be able to help you, but no guarantees at the moment.

I need to do a deeper dive into your sprinkler logs and stuff, but I will get back to you on this issue either on Thursday or on Tuesday.

1 Like

Agreed, but worth mentioning since you asked

My recent logs may not be an ideal reference as both zones aren’t really in sync.
However I am pretty confident the logic I laid out above is how it is currently behaving.

Looks to me that any regular program that is created, is stored to OS and is triggered by their firmware, but automation appears different.

I suspect that your automation programs are manual calls sent to OS that are triggered by some back end service. If true, then this doesn’t seem like an OS firmware limitation and should be able to be accomplished by adding cooldown state per zone. Right now it behaves more like a loop with “WAIT <cooldown_value> minutes” in it.

As always thanks for investigating :slight_smile:

Just in case, I dm’d asking for a bit of details.
As I can’t reproduce this issue.

I will post in this thread once the issue is resolved.

I’m bumping this since I am now in a position to reproduce consistently. I hope this helps:

Summary

When multiple automation programs are active at the same time and triggered by Pulse VWC conditions, They are executed in a serialized (blocking) manner.

One automation program runs repeatedly until it reaches its OFF threshold before the second program is allowed to run, even though both are eligible at the same time. This delays one program’s P1 until the previous program’s P1 has been entirely completed.


Automation Setup

Program A — Ghost Fish

  • Active Time: 09:00–12:00
  • Trigger ON: VWC ≤ 35%
  • Trigger OFF: VWC ≥ 44%
  • Cooldown: 10 minutes

Stations:

  • S1: 10s
  • S2: 0s
  • S3: 120s
  • S4: 10s

Execution pattern:
S1 → S3 → S4


Program B — Grave Flower

  • Active Time: 09:00–12:00
  • Trigger ON: VWC ≤ 35%
  • Trigger OFF: VWC ≥ 44%
  • Cooldown: 10 minutes

Stations:

  • S1: 10s
  • S2: 90s
  • S3: 0s
  • S4: 10s

Execution pattern:
S1 → S2 → S4


Observed Behavior

At 09:00, both automation programs are active and below the trigger threshold.

Observed behavior:

  1. One automation program starts
  2. It irrigates → cooldown → re-checks
  3. If still below OFF threshold, it repeats
  4. This continues for multiple cycles
  5. Only after reaching OFF threshold does the second program begin

This results in one zone being irrigated repeatedly while the other remains dry.


Log Evidence (09:00–21:00 only)

Station Mapping (OpenSprinkler base-0 → configured stations)

  • 0 = S1 → Pre-irrigation flush (fresh nutrient solution, does NOT go to plants)
  • 1 = S2 → Irrigates Grave Flower
  • 2 = S3 → Irrigates Ghost Fish
  • 3 = S4 → Post-irrigation flush (same valve as S1, does NOT go to plants)

Block 1 — Grave Flower repeatedly irrigated

Apr 19 09:30:46 — S1 (flush)
Apr 19 09:32:21 — S2 (Grave Flower irrigation)
Apr 19 09:32:36 — S4 (flush)

Apr 19 09:34:31 — S1 (flush)
Apr 19 09:36:06 — S2 (Grave Flower irrigation)
Apr 19 09:36:21 — S4 (flush)

Apr 19 09:38:16 — S1 (flush)
Apr 19 09:39:51 — S2 (Grave Flower irrigation)
Apr 19 09:40:06 — S4 (flush)

Apr 19 09:42:01 — S1 (flush)
Apr 19 09:43:36 — S2 (Grave Flower irrigation)
Apr 19 09:43:51 — S4 (flush)

Observation:
Grave Flower is irrigated repeatedly across multiple cycles while Ghost Fish does not run.


Block 2 — Ghost Fish only starts after

Apr 19 09:44:55 — S1 (flush)
Apr 19 09:46:20 — S3 (Ghost Fish irrigation)
Apr 19 09:46:35 — S4 (flush)

Apr 19 09:48:30 — S1 (flush)
Apr 19 09:49:55 — S3 (Ghost Fish irrigation)
Apr 19 09:50:10 — S4 (flush)

Apr 19 09:52:05 — S1 (flush)
Apr 19 09:53:30 — S3 (Ghost Fish irrigation)
Apr 19 09:53:45 — S4 (flush)

Key Observation

  • Irrigation is grouped by program, not shared
  • One zone (Grave Flower) receives repeated irrigation cycles
  • The other zone (Ghost Fish) receives no irrigation during that time
  • Programs are not alternating during cooldown windows

Desired Behavior

Automation programs should operate independently based on their own cooldown timers and trigger conditions.

Desired execution model

  1. Program A runs → enters cooldown

  2. Program B runs → enters cooldown

  3. After cooldown:

    • if program still meets trigger condition runs again
  4. Repeat until each program reaches OFF threshold


Example of desired log pattern

S1 → S2 → S4   (Grave Flower)
S1 → S3 → S4   (Ghost Fish)

-- cooldown --

S1 → S2 → S4   (Grave Flower)
S1 → S3 → S4   (Ghost Fish)

Hi! thank you for going back to this.
I appreciate that you took the time for such a detailed write up.

While the details differ, we have worked on similar situations in the past and i think there is a slight misinterpretation of the cooldowns being responsible for this behavior (I am happy to dig in once more if necessary). But each automation has a separate cooldown in our logic and they are not related.

The default OS behavior makes the sprinkler cancels current runs when a request comes and starts the new request immediately. We have a custom version of the firmware that solves this issue and will very likely solve this.

Please note that installing the custom firmware will not handle the case where the same station is triggered twice in a row (it will override). So if your setup allows the same station to be triggered by multiple automations at the same time - this needs to be addressed.

@John could you please provide @monstermash with the inhouse firmware version?
If the issue is not resolved by this - happy to check this out one more time