RM Periodic Schedule Trigger Feature Request

There were a couple of quick hot fixes put out after we had closed off development on 2.3.1. Not worth explaining that seeming contradiction. This will be in 2.3.2, which has no date promised, and is still in development.

2 Likes

Bruce - I installed 2.3.2.124 to test the cron trigger. First review it doesn't appear to be completely fixed. I first tried it right after the update, the rules were showing broken, but an open/save corrected that. I tested the trigger by moving from a normal periodic trigger (I'm using 15, changed to 5 minutes for testing), when then goes to a 1 minute trigger when down, and back to a normal (15 or 5 for testing) trigger once the down condition is corrected.

It appears the cron timer is transitioning from 5 to 1, but when it goes back to 5 it halts. I also tried removing the predicate condition I previously used to 'reset' the app which (before the previous 2.3.1 update), worked to restart the cron timer. It behaved the same and still would stop triggering when transition from 1 minute back to 5 minute increments.

This was an initial quick look yesterday evening, I'm going to take a more in depth look this weekend, probably with a completely separate test routine, to see if I can confirm the above and narrow down the conditions which is causing the trigger to fail.

One possible thought - there is a repeat loop in the timer which goes through x times. If it gets through all x times (upon failure of the test), it transitions to the 1 minute trigger. If it tests OK, the repeat loop is canceled and it transitions back to normal periodic triggers. During normal testing, if it tests OK, the repeat is canceled and the cron timer isn't updated. Not sure if canceling the repeat loop during the variable update is somehow canceling the cron timer, but figure those are likely completely unrelated.

Another interesting observation. I have a app which sets the global Cron variable based on the current condition, and a separate app which employs the cron timer which triggers the test. In the past I focused on the cron tigger app which contained the actual timer, opening and closing the app reset the timer. Yesterday I opened and closed the app which updated the cron variable, that ALSO seemed to restart the cron timer. Not sure if that behaved the same under 2.3.1, I'll run more tests to try and document the behavior in a simpler environment.

Thanks again!

If you find some problem I will need to see the rule setup page and logs that demonstrate the problem.

Thanks Bruce. I was able to test the routine and ultimately correct my problem. I found a required condition that was still in one of my apps that was causing the issue. It appears, however, that required conditions used in conjunction with Cron timers and variable updates are creating problems.

It is likely that in this test I'm triggering a reset in the app immediately after updating the string and the app doesn't have a chance to pick up the variable change. It picks it up fine from 5 minutes to 1, but not the reverse. I ran several tests with the same results.

I created a series of simplified test apps that models how my network test routines run that demonstrates the issue. In the logs, the rate starts at 5 minutes, shifts to 1 minute, then is set to shift back to 5 minutes. The Cron String is updated to 5, but the timer keeps triggering at 1 minute intervals (starting at 12:02). Removing the predicate condition corrects the problem, but there is a potential for problems for users who use CRON in conduction with required conditions.

I removed the required condition from my apps and they are working fine. It was legacy when under an early version (prior to 2.3.1) I was using the predicate to restart the Cron timer. This is info for review at your convenience.

I'm running the .125 update.

APPS

The routine uses the following global variables and virtual switches:

GLOBAL VARIABLES:

  • CronPingRate - the Cron String

  • Ping Rate (dev 432) - the current rate (minutes) used in the string for the Cron Trigger, set to either UpRate or DownRate as below:

  • UpRate - the lower rate with the test condition is false (set to every 5 minutes)

  • DownRate - the more frequent rate when the test condition is true (set to every 1 minute)

  • PingAttempts - number of times to cycle through the Test routine before declaring TestCondition TRUE and resetting the Cron rate. Set to 3 for the test. (How many times to get a consecutive failed Ping before resetting the network modem)

VIRTUAL SWITCHES

  • CronReset (dev 308): 1 Sec auto off, used to test the required condition when the CronString is updated. This is what appears to break the trigger.

  • TestCondition (dev 465) : Virtual switch to simulate whether what Cron periodicity should be applied. ON triggers DownRate, OFF resets to UpRate. In my network test routine, this takes the place of the network ping (ON - network is down / OFF - network is up). I cycle this switch to test the routine.

  • Test Cron Action (dev 464): Virtual switch (1 Sec auto off) to trigger the 'Test Cron Action' routine. This is how I separate the Network Test routine from the Cron Trigger routine.

APPS:
TEST CRON TRIGGER (app 390):
Contains the Cron trigger, logs it, then trips the Test Cron Action virtual switch to trigger that app.

TEST CRON UPDATE (app 392):
Triggered by a change in the UpRate (if user modified on my dashboard), DownRate (same), or PingRate (by a change in the app). Captures the new string and sets the Cron Timer. At the end, turns on the CronReset which triggers the required condition in TEST CRON TRIGGER. Again - the last part is what breaks the timer.

TEST CRON ACTION (app 395):
Repeats to check the TEST CONDITION. If the TEST CONDITION is off, sets PingRate to UpRate and jumps out of the loop. If it is ON through all X cycles, then sets PingRate to DownRate.

LOGS

dev:4642022-06-12 12:07:01.104 am infoTest Cron Action was turned off

app:3952022-06-12 12:07:00.307 am infoAction: END-IF

app:3952022-06-12 12:07:00.305 am infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-12 12:07:00.301 am infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-12 12:07:00.288 am infoAction: END-REP

app:3952022-06-12 12:07:00.284 am infoAction: END-IF

app:3952022-06-12 12:07:00.271 am infoAction: Repetition stopped

app:3952022-06-12 12:07:00.240 am infoAction: Stop Repeating Actions

app:3952022-06-12 12:07:00.236 am infoAction: Set PingRate to UpRate

app:3952022-06-12 12:07:00.233 am infoAction: IF (Test Condition is off) THEN

app:3952022-06-12 12:07:00.204 am infoAction: Repeating Actions 3 times

app:3952022-06-12 12:07:00.131 am infoTriggered

app:3952022-06-12 12:07:00.120 am infoEvent: Test Cron Action switch on

dev:4642022-06-12 12:07:00.087 am infoTest Cron Action was turned on

app:3902022-06-12 12:07:00.082 am infoAction: On: Test Cron Action

app:3902022-06-12 12:07:00.079 am infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-12 12:07:00.077 am infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-12 12:07:00.038 am infoTriggered

app:3902022-06-12 12:07:00.029 am infoEvent: Triggered by Periodic Schedule

dev:4642022-06-12 12:06:01.109 am infoTest Cron Action was turned off

app:3952022-06-12 12:06:00.316 am infoAction: END-IF

app:3952022-06-12 12:06:00.313 am infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-12 12:06:00.310 am infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-12 12:06:00.295 am infoAction: END-REP

app:3952022-06-12 12:06:00.291 am infoAction: END-IF

app:3952022-06-12 12:06:00.278 am infoAction: Repetition stopped

app:3952022-06-12 12:06:00.247 am infoAction: Stop Repeating Actions

app:3952022-06-12 12:06:00.244 am infoAction: Set PingRate to UpRate

app:3952022-06-12 12:06:00.240 am infoAction: IF (Test Condition is off) THEN

app:3952022-06-12 12:06:00.212 am infoAction: Repeating Actions 3 times

app:3952022-06-12 12:06:00.137 am infoTriggered

app:3952022-06-12 12:06:00.126 am infoEvent: Test Cron Action switch on

dev:4642022-06-12 12:06:00.093 am infoTest Cron Action was turned on

app:3902022-06-12 12:06:00.086 am infoAction: On: Test Cron Action

app:3902022-06-12 12:06:00.084 am infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-12 12:06:00.082 am infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-12 12:06:00.041 am infoTriggered

app:3902022-06-12 12:06:00.032 am infoEvent: Triggered by Periodic Schedule

dev:4642022-06-12 12:05:01.104 am infoTest Cron Action was turned off

app:3952022-06-12 12:05:00.306 am infoAction: END-IF

app:3952022-06-12 12:05:00.303 am infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-12 12:05:00.300 am infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-12 12:05:00.286 am infoAction: END-REP

app:3952022-06-12 12:05:00.282 am infoAction: END-IF

app:3952022-06-12 12:05:00.270 am infoAction: Repetition stopped

app:3952022-06-12 12:05:00.239 am infoAction: Stop Repeating Actions

app:3952022-06-12 12:05:00.236 am infoAction: Set PingRate to UpRate

app:3952022-06-12 12:05:00.232 am infoAction: IF (Test Condition is off) THEN

app:3952022-06-12 12:05:00.204 am infoAction: Repeating Actions 3 times

app:3952022-06-12 12:05:00.132 am infoTriggered

app:3952022-06-12 12:05:00.121 am infoEvent: Test Cron Action switch on

dev:4642022-06-12 12:05:00.088 am infoTest Cron Action was turned on

app:3902022-06-12 12:05:00.082 am infoAction: On: Test Cron Action

app:3902022-06-12 12:05:00.080 am infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-12 12:05:00.078 am infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-12 12:05:00.038 am infoTriggered

app:3902022-06-12 12:05:00.029 am infoEvent: Triggered by Periodic Schedule

dev:4642022-06-12 12:04:01.111 am infoTest Cron Action was turned off

app:3952022-06-12 12:04:00.342 am infoAction: END-IF

app:3952022-06-12 12:04:00.339 am infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-12 12:04:00.336 am infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-12 12:04:00.322 am infoAction: END-REP

app:3952022-06-12 12:04:00.318 am infoAction: END-IF

app:3952022-06-12 12:04:00.273 am infoAction: Repetition stopped

app:3952022-06-12 12:04:00.242 am infoAction: Stop Repeating Actions

app:3952022-06-12 12:04:00.238 am infoAction: Set PingRate to UpRate

app:3952022-06-12 12:04:00.234 am infoAction: IF (Test Condition is off) THEN

app:3952022-06-12 12:04:00.206 am infoAction: Repeating Actions 3 times

app:3952022-06-12 12:04:00.131 am infoTriggered

app:3952022-06-12 12:04:00.119 am infoEvent: Test Cron Action switch on

dev:4642022-06-12 12:04:00.087 am infoTest Cron Action was turned on

app:3902022-06-12 12:04:00.081 am infoAction: On: Test Cron Action

app:3902022-06-12 12:04:00.079 am infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-12 12:04:00.077 am infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-12 12:04:00.039 am infoTriggered

app:3902022-06-12 12:04:00.030 am infoEvent: Triggered by Periodic Schedule

app:3902022-06-12 12:03:02.636 am infoRequired Expression now true

app:3902022-06-12 12:03:02.632 am infoEvent: CronReset switch off

dev:3082022-06-12 12:03:02.488 am infoCronReset was turned off

dev:4642022-06-12 12:03:01.105 am infoTest Cron Action was turned off

app:3902022-06-12 12:03:00.605 am infoRequired Expression now false

app:3902022-06-12 12:03:00.599 am infoEvent: CronReset switch on

dev:3082022-06-12 12:03:00.475 am infoCronReset was turned on

app:3922022-06-12 12:03:00.472 am infoAction: On: CronReset

app:3922022-06-12 12:03:00.453 am infoAction: Set CronPingRate to '0 0/%PingRate% * ? * * *(0 0/5 * ? * * *)'

app:3922022-06-12 12:03:00.444 am infoAction: IF (Test Condition(off) is on FALSE) Set PingRate to DownRate(1) (skipped)

app:3922022-06-12 12:03:00.417 am infoAction: IF (Test Condition(off) is off TRUE) Set PingRate to UpRate(5)

app:3952022-06-12 12:03:00.366 am infoAction: END-IF

app:3952022-06-12 12:03:00.363 am infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-12 12:03:00.358 am infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-12 12:03:00.350 am infoAction: END-REP

app:3952022-06-12 12:03:00.340 am infoAction: END-IF

app:3922022-06-12 12:03:00.331 am infoTriggered

app:3952022-06-12 12:03:00.328 am infoAction: Repetition stopped

app:3922022-06-12 12:03:00.300 am infoEvent: variable:PingRate 5

app:3952022-06-12 12:03:00.297 am infoAction: Stop Repeating Actions

dev:4322022-06-12 12:03:00.284 am infoPingRate variable is 5

app:3952022-06-12 12:03:00.254 am infoAction: Set PingRate to UpRate

app:3952022-06-12 12:03:00.250 am infoAction: IF (Test Condition is off) THEN

app:3952022-06-12 12:03:00.210 am infoAction: Repeating Actions 3 times

app:3952022-06-12 12:03:00.133 am infoTriggered

app:3952022-06-12 12:03:00.122 am infoEvent: Test Cron Action switch on

dev:4642022-06-12 12:03:00.089 am infoTest Cron Action was turned on

app:3902022-06-12 12:03:00.082 am infoAction: On: Test Cron Action

app:3902022-06-12 12:03:00.080 am infoCron Trigger 0 0/1 * ? * * *

app:3902022-06-12 12:03:00.077 am infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/1 * ? * * *)'

app:3902022-06-12 12:03:00.039 am infoTriggered

app:3902022-06-12 12:03:00.029 am infoEvent: Triggered by Periodic Schedule

dev:4652022-06-12 12:02:21.963 am infoTest Condition was turned off

app:3952022-06-12 12:02:20.398 am infoAction: END-IF

app:3952022-06-12 12:02:20.394 am infoAction: Set PingRate to DownRate

app:3952022-06-12 12:02:20.391 am infoAction: IF (Test Condition is on) THEN

app:3952022-06-12 12:02:20.377 am infoAction: END-REP

app:3952022-06-12 12:02:20.374 am infoAction: END-IF

app:3952022-06-12 12:02:20.372 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:02:20.369 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:02:20.365 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:02:20.334 am infoAction: Repeating Actions 1 time

app:3952022-06-12 12:02:10.345 am infoAction: END-REP (waiting for next)

app:3952022-06-12 12:02:10.342 am infoAction: END-IF

app:3952022-06-12 12:02:10.339 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:02:10.336 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:02:10.332 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:02:10.297 am infoAction: Repeating Actions 2 times

dev:4642022-06-12 12:02:01.120 am infoTest Cron Action was turned off

app:3952022-06-12 12:02:00.274 am infoAction: END-REP (waiting for next)

app:3952022-06-12 12:02:00.271 am infoAction: END-IF

app:3952022-06-12 12:02:00.269 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:02:00.266 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:02:00.262 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:02:00.231 am infoAction: Repeating Actions 3 times

app:3952022-06-12 12:02:00.149 am infoTriggered

app:3952022-06-12 12:02:00.138 am infoEvent: Test Cron Action switch on

dev:4642022-06-12 12:02:00.104 am infoTest Cron Action was turned on

app:3902022-06-12 12:02:00.098 am infoAction: On: Test Cron Action

app:3902022-06-12 12:02:00.095 am infoCron Trigger 0 0/1 * ? * * *

app:3902022-06-12 12:02:00.093 am infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/1 * ? * * *)'

app:3902022-06-12 12:02:00.039 am infoTriggered

app:3902022-06-12 12:02:00.030 am infoEvent: Triggered by Periodic Schedule

app:3952022-06-12 12:01:20.390 am infoAction: END-IF

app:3952022-06-12 12:01:20.386 am infoAction: Set PingRate to DownRate

app:3952022-06-12 12:01:20.383 am infoAction: IF (Test Condition is on) THEN

app:3952022-06-12 12:01:20.369 am infoAction: END-REP

app:3952022-06-12 12:01:20.366 am infoAction: END-IF

app:3952022-06-12 12:01:20.363 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:01:20.361 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:01:20.357 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:01:20.326 am infoAction: Repeating Actions 1 time

app:3952022-06-12 12:01:10.334 am infoAction: END-REP (waiting for next)

app:3952022-06-12 12:01:10.331 am infoAction: END-IF

app:3952022-06-12 12:01:10.329 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:01:10.326 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:01:10.322 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:01:10.291 am infoAction: Repeating Actions 2 times

dev:4642022-06-12 12:01:01.112 am infoTest Cron Action was turned off

app:3952022-06-12 12:01:00.273 am infoAction: END-REP (waiting for next)

app:3952022-06-12 12:01:00.270 am infoAction: END-IF

app:3952022-06-12 12:01:00.268 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:01:00.265 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:01:00.261 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:01:00.229 am infoAction: Repeating Actions 3 times

app:3952022-06-12 12:01:00.146 am infoTriggered

app:3952022-06-12 12:01:00.134 am infoEvent: Test Cron Action switch on

dev:4642022-06-12 12:01:00.096 am infoTest Cron Action was turned on

app:3902022-06-12 12:01:00.089 am infoAction: On: Test Cron Action

app:3902022-06-12 12:01:00.087 am infoCron Trigger 0 0/1 * ? * * *

app:3902022-06-12 12:01:00.084 am infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/1 * ? * * *)'

app:3902022-06-12 12:01:00.044 am infoTriggered

app:3902022-06-12 12:01:00.035 am infoEvent: Triggered by Periodic Schedule

app:3902022-06-12 12:00:22.908 am infoRequired Expression now true

app:3902022-06-12 12:00:22.904 am infoEvent: CronReset switch off

dev:3082022-06-12 12:00:22.751 am infoCronReset was turned off

app:3902022-06-12 12:00:20.889 am infoRequired Expression now false

app:3902022-06-12 12:00:20.884 am infoEvent: CronReset switch on

dev:3082022-06-12 12:00:20.735 am infoCronReset was turned on

app:3922022-06-12 12:00:20.728 am infoAction: On: CronReset

app:3922022-06-12 12:00:20.717 am infoAction: Set CronPingRate to '0 0/%PingRate% * ? * * *(0 0/1 * ? * * *)'

app:3922022-06-12 12:00:20.711 am infoAction: IF (Test Condition(on) is on TRUE) Set PingRate to DownRate(1)

app:3922022-06-12 12:00:20.689 am infoAction: IF (Test Condition(on) is off FALSE) Set PingRate to UpRate(5) (skipped)

app:3922022-06-12 12:00:20.616 am infoTriggered

app:3922022-06-12 12:00:20.540 am infoEvent: variable:PingRate 1

app:3952022-06-12 12:00:20.529 am infoAction: END-IF

dev:4322022-06-12 12:00:20.525 am infoPingRate variable is 1

app:3952022-06-12 12:00:20.498 am infoAction: Set PingRate to DownRate

app:3952022-06-12 12:00:20.495 am infoAction: IF (Test Condition is on) THEN

app:3952022-06-12 12:00:20.481 am infoAction: END-REP

app:3952022-06-12 12:00:20.478 am infoAction: END-IF

app:3952022-06-12 12:00:20.476 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:00:20.473 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:00:20.469 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:00:20.438 am infoAction: Repeating Actions 1 time

app:3952022-06-12 12:00:10.445 am infoAction: END-REP (waiting for next)

app:3952022-06-12 12:00:10.442 am infoAction: END-IF

app:3952022-06-12 12:00:10.440 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:00:10.437 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:00:10.433 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:00:10.402 am infoAction: Repeating Actions 2 times

dev:4642022-06-12 12:00:01.212 am infoTest Cron Action was turned off

app:3952022-06-12 12:00:00.392 am infoAction: END-REP (waiting for next)

app:3952022-06-12 12:00:00.389 am infoAction: END-IF

app:3952022-06-12 12:00:00.387 am infoAction: Stop Repeating Actions (skipped)

app:3952022-06-12 12:00:00.384 am infoAction: Set PingRate to UpRate (skipped)

app:3952022-06-12 12:00:00.380 am infoAction: IF (Test Condition is off) THEN (skipping)

app:3952022-06-12 12:00:00.341 am infoAction: Repeating Actions 3 times

app:3952022-06-12 12:00:00.259 am infoTriggered

app:3952022-06-12 12:00:00.246 am infoEvent: Test Cron Action switch on

dev:4642022-06-12 12:00:00.193 am infoTest Cron Action was turned on

app:3902022-06-12 12:00:00.185 am infoAction: On: Test Cron Action

app:3902022-06-12 12:00:00.182 am infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-12 12:00:00.180 am infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-12 12:00:00.104 am infoTriggered

app:3902022-06-12 12:00:00.088 am infoEvent: Triggered by Periodic Schedule

dev:4652022-06-11 11:57:17.577 pm infoTest Condition was turned on

dev:4642022-06-11 11:55:01.107 pm infoTest Cron Action was turned off

app:3952022-06-11 11:55:00.317 pm infoAction: END-IF

app:3952022-06-11 11:55:00.315 pm infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-11 11:55:00.311 pm infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-11 11:55:00.295 pm infoAction: END-REP

app:3952022-06-11 11:55:00.291 pm infoAction: END-IF

app:3952022-06-11 11:55:00.278 pm infoAction: Repetition stopped

app:3952022-06-11 11:55:00.247 pm infoAction: Stop Repeating Actions

app:3952022-06-11 11:55:00.244 pm infoAction: Set PingRate to UpRate

app:3952022-06-11 11:55:00.240 pm infoAction: IF (Test Condition is off) THEN

app:3952022-06-11 11:55:00.212 pm infoAction: Repeating Actions 3 times

app:3952022-06-11 11:55:00.137 pm infoTriggered

app:3952022-06-11 11:55:00.125 pm infoEvent: Test Cron Action switch on

dev:4642022-06-11 11:55:00.091 pm infoTest Cron Action was turned on

app:3902022-06-11 11:55:00.084 pm infoAction: On: Test Cron Action

app:3902022-06-11 11:55:00.082 pm infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-11 11:55:00.079 pm infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-11 11:55:00.041 pm infoTriggered

app:3902022-06-11 11:55:00.032 pm infoEvent: Triggered by Periodic Schedule

app:3902022-06-11 11:53:51.380 pm infoInitialized

app:3902022-06-11 11:53:51.303 pm infoinit: Required Expression now true

app:3952022-06-11 11:53:22.445 pm infoInitialized

dev:4642022-06-11 11:53:01.109 pm infoTest Cron Action was turned off

app:3952022-06-11 11:53:00.365 pm infoAction: END-IF

app:3952022-06-11 11:53:00.362 pm infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-11 11:53:00.358 pm infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-11 11:53:00.341 pm infoAction: END-REP

app:3952022-06-11 11:53:00.336 pm infoAction: END-IF

app:3952022-06-11 11:53:00.332 pm infoAction: Repetition stopped

app:3952022-06-11 11:53:00.287 pm infoAction: Stop Repeating Actions

app:3952022-06-11 11:53:00.284 pm infoAction: Set PingRate to UpRate

app:3952022-06-11 11:53:00.280 pm infoAction: IF (Test Condition is off) THEN

app:3952022-06-11 11:53:00.228 pm infoAction: Repeating Actions 3 times

app:3952022-06-11 11:53:00.143 pm infoTriggered

app:3952022-06-11 11:53:00.130 pm infoEvent: Test Cron Action switch on

dev:4642022-06-11 11:53:00.091 pm infoTest Cron Action was turned on

app:3902022-06-11 11:53:00.085 pm infoAction: On: Test Cron Action

app:3902022-06-11 11:53:00.083 pm infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-11 11:53:00.080 pm infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-11 11:53:00.040 pm infoTriggered

app:3902022-06-11 11:53:00.030 pm infoEvent: Triggered by Periodic Schedule

app:3952022-06-11 11:52:51.701 pm infoInitialized

dev:4642022-06-11 11:52:01.106 pm infoTest Cron Action was turned off

app:3952022-06-11 11:52:00.312 pm infoAction: END-IF

app:3952022-06-11 11:52:00.309 pm infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-11 11:52:00.306 pm infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-11 11:52:00.292 pm infoAction: END-REP

app:3952022-06-11 11:52:00.288 pm infoAction: END-IF

app:3952022-06-11 11:52:00.275 pm infoAction: Repetition stopped

app:3952022-06-11 11:52:00.244 pm infoAction: Stop Repeating Actions

app:3952022-06-11 11:52:00.241 pm infoAction: Set PingRate to UpRate

app:3952022-06-11 11:52:00.237 pm infoAction: IF (Test Condition is off) THEN

app:3952022-06-11 11:52:00.208 pm infoAction: Repeating Actions 3 times

app:3952022-06-11 11:52:00.133 pm infoTriggered

app:3952022-06-11 11:52:00.121 pm infoEvent: Test Cron Action switch on

dev:4642022-06-11 11:52:00.088 pm infoTest Cron Action was turned on

app:3902022-06-11 11:52:00.083 pm infoAction: On: Test Cron Action

app:3902022-06-11 11:52:00.080 pm infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-11 11:52:00.078 pm infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-11 11:52:00.039 pm infoTriggered

app:3902022-06-11 11:52:00.030 pm infoEvent: Triggered by Periodic Schedule

dev:4642022-06-11 11:51:01.111 pm infoTest Cron Action was turned off

app:3952022-06-11 11:51:00.317 pm infoAction: END-IF

app:3952022-06-11 11:51:00.315 pm infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-11 11:51:00.311 pm infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-11 11:51:00.298 pm infoAction: END-REP

app:3952022-06-11 11:51:00.294 pm infoAction: END-IF

app:3952022-06-11 11:51:00.281 pm infoAction: Repetition stopped

app:3952022-06-11 11:51:00.249 pm infoAction: Stop Repeating Actions

app:3952022-06-11 11:51:00.246 pm infoAction: Set PingRate to UpRate

app:3952022-06-11 11:51:00.242 pm infoAction: IF (Test Condition is off) THEN

app:3952022-06-11 11:51:00.213 pm infoAction: Repeating Actions 3 times

app:3952022-06-11 11:51:00.140 pm infoTriggered

app:3952022-06-11 11:51:00.128 pm infoEvent: Test Cron Action switch on

dev:4642022-06-11 11:51:00.093 pm infoTest Cron Action was turned on

app:3902022-06-11 11:51:00.087 pm infoAction: On: Test Cron Action

app:3902022-06-11 11:51:00.085 pm infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-11 11:51:00.082 pm infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-11 11:51:00.042 pm infoTriggered

app:3902022-06-11 11:51:00.032 pm infoEvent: Triggered by Periodic Schedule

dev:4642022-06-11 11:50:01.105 pm infoTest Cron Action was turned off

app:3952022-06-11 11:50:00.365 pm infoAction: END-IF

app:3952022-06-11 11:50:00.362 pm infoAction: Set PingRate to DownRate (skipped)

app:3952022-06-11 11:50:00.359 pm infoAction: IF (Test Condition is on) THEN (skipping)

app:3952022-06-11 11:50:00.345 pm infoAction: END-REP

app:3952022-06-11 11:50:00.341 pm infoAction: END-IF

app:3952022-06-11 11:50:00.328 pm infoAction: Repetition stopped

app:3952022-06-11 11:50:00.266 pm infoAction: Stop Repeating Actions

app:3952022-06-11 11:50:00.262 pm infoAction: Set PingRate to UpRate

app:3952022-06-11 11:50:00.259 pm infoAction: IF (Test Condition is off) THEN

app:3952022-06-11 11:50:00.226 pm infoAction: Repeating Actions 3 times

app:3952022-06-11 11:50:00.146 pm infoTriggered

app:3952022-06-11 11:50:00.133 pm infoEvent: Test Cron Action switch on

dev:4642022-06-11 11:50:00.088 pm infoTest Cron Action was turned on

app:3902022-06-11 11:50:00.082 pm infoAction: On: Test Cron Action

app:3902022-06-11 11:50:00.080 pm infoCron Trigger 0 0/5 * ? * * *

app:3902022-06-11 11:50:00.078 pm infoAction: Log: 'Cron Trigger %CronPingRate%(Cron Trigger 0 0/5 * ? * * *)'

app:3902022-06-11 11:50:00.039 pm infoTriggered

app:3902022-06-11 11:50:00.030 pm infoEvent: Triggered by Periodic Schedule

I can't/won't deal with logs that are copy/paste. They have to be screenshots. Too hard to read otherwise. You have a very complex thing going on, and I may not be able to help you.

I sensed the same (complex problem). Screenshot logs below. I re-ran the test over a shorter timeframe, this time through it did not update to the 1 minute rate at time 3:50 (3 full cycles with TEST CONDITION ON). Time :55 it triggered again on the previous rate, I turned the TEST CONDITION off.

Your addition of both the PING, and the variable controlled Cron Timer is what made my routine work in the first place! From the surface, this appears to be a timing problem between a REQUIRED CONDITION and the CRON TRIGGER which is intermittent at best, and that few will likely encounter.

3:45 - normal 5 minute trigger - test OK
3:45 - TEST CONDITION set ON
3:50 - 5 minute trigger - TEST CONDITION sets PingRate to 1 minute, CRON TRIGGER continues at 5 minute intervals.
3:55 - 5 minute trigger - TEST CONDITION set to OFF after 1st cycle.

Screenshot Logs