I’m trying to make a rule that: at all days except Friday 20 before sunset till Saturday 40 min after sunset a motion sensor will activate a device when detecting movement and deactivate when no motion (2 min)
how should a rule like that be made (if-then etc.)
@lior_zilber, you will need two rules for this. See below for the detailed instructions:
- Create a True/False variable (
isMotionPausedin my screenshot example)
- Create a rule to set this variable to true or false based on the time
- Create another rule to be triggered by the motion changed to active or stays inactive for 2 minutes, and check the variable
isMotionPuasedstatus and the triggering value (motion active or inactive) to decide what action to take.
didn’t understand 1: how do i do it?
2. in the condition “today is Friday…” - what does it mean
Do you mean how to create a variable? You can tap Manage Variables as shown in the Rule List page as shown in the screenshot below.
Then create a True/False variable called
isMotionPausedor whatever you want.
Or please let me know which part you need help with if this is not what you were asking for.
So the first rule is configure to be triggered either 20 minutes before sunset on Friday or 40 minutes after sunset on Saturday, and the reason of the IF condition checking if it is Friday today is because I want to set the variable
true only on Friday (triggered by 20 minutes before sunset on Friday). Then this variable being set to true will prevent the 2nd rule from doing anything when the motion is triggered or stays inactive for 2 minutes. And when the 1st rule is triggered again on Sat 40 minutes after sunset, it will set the variable back to
false because it is NOT Friday per the check in the IF condition.
It’s using Context Variables which makes the rule faster as it is able to use the event that triggered the rule rather than having to query SmartThings and check the status of the motion sensor.
So the equivalent of this would be:
IF Living Room - motion is active
But in that case, the rule would have to reach out to SmartThings to get the status of the motion sensor, so it adds a slight delay. (maybe 0.5-2 seconds).
Since are are dealing with motion and we want the rule to process as fast as possible, James is using a trick where you can use the event that triggered the rule in the IF Comparison. This means the rule can instantly proceed with the comparison since it uses the existing value of the the motion event that triggered the rule (rather than having to wait a moment while it asks SmartThings for the latest state).
Neat! Learned something new!
It seems I did everything as explained, but some how it does not work, can u give a look please
@lior_zilber , can you post the screenshots of your so we can better understand how the rule is configured now? And it will help us understand the issue greatly if you can describe with details which part of the rule is not working or what behavior(s) was observed, but not expected.
Can you share more details about what you tried? Otherwise we are just guessing as to what was tested, what you expected to happen, and what actually happened.
$ismotion variable set to
false when you tested the rule? Since Friday/Saturday hasn’t passed since you created the rule, the
isMotionPaused from James’s example) must be
false otherwise the rule will immediately end.
I have a motion sensor that turns on a light, and turn it off after 2 min of no motion -I wanted this rule to happen only from Sunday-Friday but not Saturday
for now it does not turn the light on at all.
and yes $ismotion was set to false
@lior_zilber, can you please take a screenshot of your
$ismotion variable so we can verify its value? I’ve checked your rule and the system log and it appears this variable is causing the rule to skip the action based on the IF condition configured in the 2nd rule in your screenshot.
You can find the variable by tapping
... at top-right corner in the Rule list page, and select Manage Variables.
ismotion in the list and take a screenshot of the variable modal like shown below.
thank you so much!
somehow I missed it
now it works
just hope it will open the light indeed on Saturday…
Me again, I’m trying to use the same rule above for another thing, the difference is that i Would like it to work only nights & not Saturdays
A. what should I add
B. The same rule can apply to several devices ? (somehow it seems to work only with one device)
Depends on your goals for your rules. The approach James provided above has a separate rule that sets the ‘schedule’ and then uses a variable to as a ‘flag’ that can be used in other rule to determine if they should proceed (eg. as an IF Condition).
That approach works especially well when you want the same ‘flag’ or set of conditions to apply across multiple rules as you only have to control the one ‘flag’. I believe it was also necessary to meet your original specification which included a sunset/sunrise offset – the IF Condition does not allow sunset/sunrise offsets, but the Triggers do allow it.
So if you have multiple rules that you want to easily flag enabled/disabled, then using the same approach with a variable could work well here. Basically, create one rule that defines the ‘schedule’ using triggers and sets the variable accordingly in the Flow.
Otherwise you can just use normal rule and set the If Condition accordingly. (eg. Time is your desired ‘night’ hours and the day is anything except Saturday):
it will take me time to figure it all out
i’m trying to learn and understand so I can make by myself some rules…