[Solved] Group in Reset Reaction is being ignored
-
They say plagiarism is the best form of flattery, right? Or something like that. Thanks go to @gwp1 for the great title of this subject.I'm trying to get into using the new (to me) group option within the Set and Reset Reactions. I have the Set action working beautifully, however my reset reaction is not. What I am after, which maybe this isn't even possible, is one rule for the motion sensed in my garage. Upon motion, and it night time, turn on the lights. And upon no motion, and no motion for 10 minutes, turn off the lights.MSR Docker on unRAID: latest-22293
Hubitat 2.3.3.137
HaaS 2022.10.4Trigger:
If motion is detected by either sensorSet Reaction:
Only turn the lights on between 30 minutes before sunset and 30 minutes after sunrise.Reset Reaction: (I've tried a few variations, each with conditional options set.)
Tried: Both Motion sensors, in an AND group or individually as an AND, are False and sustained false for 10 minutes.
Tried: Rule State (this rule itself) is False and sustained false for 10 minutes.Basically the additional condition I am putting into the Reset Reaction group is being ignored and as soon as either motion sensors is false from it's normal reset time, the lights turn off. I would like to have a 10 minute delay before the lights go off. In case I'm moving around and re-trigger a sensor. Are additional conditions allowed within the Reset Group option? Or am I way off and should just break this into two rules? One for on and one for off?
EDIT: Forgot to include my reasoning for not putting the Delay reset for 600 within the Trigger. I want the garage lights to come on again, if they are off, after the motion sensors native timeout has reset. For example, if I go in the garage, the lights automatically turn on. When I leave the garage, I will turn them off. But if I return within 2 minutes, and less than 10 minutes, turn the lights back on again for me.
-
Yeah, that's not how you do that. The Reset reaction runs as soon as your triggers go false. What you really need to do is keep your triggers from going false too early. Your motion sensors have a reset period that is shorter than your ten minute wish (that is, they signal no motion on their own timing, which appears to be shorter than 10 minutes, not at all unusual), so you need to stretch out that time.
Since you already have your triggers in an OR group, this will be easy. Just open the condition options for your OR group, and in the "Follow" section for "delay reset", add a 600 second delay. This is a resettable delay that will restart every time motion is detected, so if motion is detected during the 10 minute delay, the delay will restart anew, keeping the lights on until there is truly no motion detected for 10 minutes.
Your Reset reaction can then just turn the lights off; it needs nothing else (no groups or constraints — remove those).
Edit: to be specific about the reason your Reset reaction doesn't work as you've shown it, as I said, when both motion sensors no longer signal motion, that OR trigger group goes false, and the Reset reaction runs. Since you have a group with constraints, the first thing that happens is that Reactor checks to see if the constraints have been met, and in Reactor's view, your constraint is "Garage - on" (rule) has been false for 10 minutes; there's no way it can be at that moment, and Reactor isn't going to stop there and wait for that to be true; that's not how constraints work. The constraint test is instantaneous, and Reactor only runs the group actions if the constraint conditions are true in that instant. Reactor sees they are not, so skips the power off actions and the Reset reaction is then done working. Reactor will not run it again when the constraint is satisfied, because again, that's not how constraints work.
Edit 2: Also, please don't reuse/plagiarize another existing thread's title. That's really confusing for people searching later, or even reading now. A better and more specific title (for both of those posts) would be appreciated. Post titles should be more descriptive of the problem. Refer to the posting guidelines for examples.
-
Yeah, that's not how you do that. The Reset reaction runs as soon as your triggers go false. What you really need to do is keep your triggers from going false too early. Your motion sensors have a reset period that is shorter than your ten minute wish (that is, they signal no motion on their own timing, which appears to be shorter than 10 minutes, not at all unusual), so you need to stretch out that time.
Since you already have your triggers in an OR group, this will be easy. Just open the condition options for your OR group, and in the "Follow" section for "delay reset", add a 600 second delay. This is a resettable delay that will restart every time motion is detected, so if motion is detected during the 10 minute delay, the delay will restart anew, keeping the lights on until there is truly no motion detected for 10 minutes.
Your Reset reaction can then just turn the lights off; it needs nothing else (no groups or constraints — remove those).
Edit: to be specific about the reason your Reset reaction doesn't work as you've shown it, as I said, when both motion sensors no longer signal motion, that OR trigger group goes false, and the Reset reaction runs. Since you have a group with constraints, the first thing that happens is that Reactor checks to see if the constraints have been met, and in Reactor's view, your constraint is "Garage - on" (rule) has been false for 10 minutes; there's no way it can be at that moment, and Reactor isn't going to stop there and wait for that to be true; that's not how constraints work. The constraint test is instantaneous, and Reactor only runs the group actions if the constraint conditions are true in that instant. Reactor sees they are not, so skips the power off actions and the Reset reaction is then done working. Reactor will not run it again when the constraint is satisfied, because again, that's not how constraints work.
Edit 2: Also, please don't reuse/plagiarize another existing thread's title. That's really confusing for people searching later, or even reading now. A better and more specific title (for both of those posts) would be appreciated. Post titles should be more descriptive of the problem. Refer to the posting guidelines for examples.
Thank you for the very detailed explanation. I haven't really dove into constraints before and clearly I need to so I understand them better.
@toggledbits said in Group in Reset Reaction is being ignored:
open the condition options for your OR group, and in the "Follow" section for "delay reset", add a 600 second delay. This is a resettable delay that will restart every time motion is detected, so if motion is detected during the 10 minute delay, the delay will restart anew
This is exactly how I have all my Motion rules defined. And they work as expected. But in this particular rule, I want the Set reaction to trigger again if it detected motion by either sensor after their timeout and before the 10 minute reset delay within MSR.
Use case: I enter the garage, the lights turn on. I leave the garage and manually turn the lights off. (Assuming there is a 10 minute delay reset defined) I return to the garage 2 minutes later, the sensors detect movement, I would like the lights to turn back on.
With the 10 minute reset delay defined, MSR will see the rule still as true at that 2 minute mark and not fire the Set reaction again, correct?
@toggledbits said in Group in Reset Reaction is being ignored:
please don't reuse/plagiarize another existing thread's title
I will fix this.
EDIT: If the solution for this is to have two rules, I am perfectly fine with that. I just happened to see that Groups were an option within the reactions now and was determining if there is a way to consolidate rules. But if I need an ON and and OFF rule, I'm good with that.
-
OK. Then I think two rules will probably be the easiest way.
Your "On" rule is simple then... either sensor senses motion (OR group with two conditions as before), turn on the light in the Set reaction. No constraints, delays, etc., and no reset reaction, in this rule.
Your "Off" rule is an AND group with two conditions: the light is on (Entity Attribute condition) AND the "On" rule has been false for 10 minutes (sustained for delay on a Rule State condition looking at the "On" rule with the is FALSE operator). Set reaction turns the light off.
Any time motion is sensed, the "On" rule will turn on the light (harmless if it's already on). If the light is on and the "On" rule hasn't seen anything for 10 minutes, the "Off" rule triggers and turns off the light. If you turn off the light manually, and then go back in the room a moment later, the "On" rule will turn the light back on.
-
OK. Then I think two rules will probably be the easiest way.
Your "On" rule is simple then... either sensor senses motion (OR group with two conditions as before), turn on the light in the Set reaction. No constraints, delays, etc., and no reset reaction, in this rule.
Your "Off" rule is an AND group with two conditions: the light is on (Entity Attribute condition) AND the "On" rule has been false for 10 minutes (sustained for delay on a Rule State condition looking at the "On" rule with the is FALSE operator). Set reaction turns the light off.
Any time motion is sensed, the "On" rule will turn on the light (harmless if it's already on). If the light is on and the "On" rule hasn't seen anything for 10 minutes, the "Off" rule triggers and turns off the light. If you turn off the light manually, and then go back in the room a moment later, the "On" rule will turn the light back on.
@toggledbits I like your off rule. It is a different approach than what I have. The end result of both is the same though.
My off rule has the sensors in an AND group (when the sensor is true) with a delay reset of 10 minutes. There is no Set reaction. Only a reset reaction to turn the light off.
-
Not sure you want an AND group with that construction... it requires both sensors to detect motion for the group to be true at the same time. That may be right a lot of the time, but I'll bet it's not some of the time...
-
Not sure you want an AND group with that construction... it requires both sensors to detect motion for the group to be true at the same time. That may be right a lot of the time, but I'll bet it's not some of the time...
@toggledbits You are correct. I had an extra motion sensor and was planning on putting it on the opposite side. While I was testing, with three sensors in the AND group, it dawned on me that all three would have to have triggered and gone false for this to work. This won't happen if you only enter the garage a few feet and never to the other side. I ended up creating my rules exactly how your example was and it's working great. Thanks for the insight and example.
-
T toggledbits locked this topic on