This is a two-part question.
1. Monolithic vs Multiple
Is it generally better to use a single rule with long wait periods, or multiple rules that fire at specific times.
As an example, I have four scenes and transitions for my living room lights (day, dusk, evening, bedtime), and they're on from 7am to 11pm most days. Currently, I have a single, monolithic Simple Rule that turns on the first scene, waits for appropriate times, and fires the transitions.
Is there a practical difference in performance with those long wait conditions as opposed to just writing an individual transition trigger at each of the appropriate times? I expect the difference is negligible, but didn't know if there was a best practice consensus on it.
2. How does HE handle rule creation/edits mid-wait-state?
Take the above light schedule. If I create that rule at 1pm, does it become "hot" when I save it and catch the next wait trigger, or are those wait states dependent on the rule being triggered at 7am?
Similarly, if I the rule already exists and is edited, does HE update everything when the rule is saved and continue or will the changes not take effect until the next time the entire rule is triggered?
No real difference.
When you hit Done, it will cancel anything pending, and start from scratch.
Given the above about starting from scratch, other than that, the rule immediately has whatever those changes are.
It is possible to edit a rule without hitting Done, and without causing it to start over from scratch. This could have unpredictable outcomes depending on just what state it is in at the time of editing, and what those changes actually are. For example, if it's waiting for a future time, and you add additional actions to the rule after that, there would be no problem at all. The one type of change that will not take affect is any change to a Predicate rule or Trigger. Those would only take effect by hitting Done or Update Rule, both of which cancel everything pending, and start over.
I suggest you play around with this, do some experiments.
Thank you for the response - I've been doing some smaller experiments to try and get a handle on it, but my results were inconsistent so I thought I'd ask about it.
Sorry for being slow on the uptake here, but I want to make sure I understand what you mean by "start from scratch." Let's say I have a rule that does the following:
- 0700 - Turn on lights. Wait until noon.
- 1200 - Turn all lights red. Wait until 1500.
- 1500 - Turn all lights green. Wait until 1800.
- 1800 - Turn all lights blue. Wait until 2200.
- 2200 - Turn all lights off.
Assume the lights are already on. If I were to create/edit this rule at 1700, will the lights turn blue at 1800 or will it be stuck at the 0700 action and waiting until the next time it's 1200?
Put another way, will a rule "fast forward" to whatever state it's supposed to be in at the current time?
No. If you create this rule at 1700, it won't do anything until 0700 the next day. Likewise, hitting Done.