I've tried to research this but I keep finding conflicting information. Maybe it's just that there are multiple ways to do it, but that isn't helping me understand.
Can someone explain where the "end-if" goes if there are multiple "IF" conditions? Does it go after each "IF" is done or does it close out the string? It seems to work either way but makes sense to me that it would go after each "IF" condition to close it out specifically.
You should always put one after each if block is finished.
I think this works as all the end-if are together at the end and rule machine seems to not react badly.
I'm seeing 3 ifs and 3 endifs, and they seem to be in the right place for a normally written program... There does seem to be one closing the Den Can Lights from what I can tell, allowing for the else if in between. Does RM require an Else if there has been an else if? Is that not working for you as it is, @jaredeaves ?
It depends on what you want to happen. In your case, I'd say you were probably looking to do something like this:
IF (Day in Monday, Tuesday...) THEN
IF (Den Lights on) THEN
Off...
END-IF
ELSE-IF (Day in Saturday, Sunday) THEN
// ...
IF (Kitchen Can, Den Can all on) THEN
Off...
END-IF
END-IF
The indentation both here and in the RM UI (though with line-wraps, that can sometimes be hard to see) should help as a sort of intuitive guide for this, but an "inner" IF will be evaluated only if an outer IF (one in which it is contained is true)--otherwise, just like any actions inside that IF, it will never be reached to be evaluated in the first place. "Closing" your IF THEN with an END-IF closes that "block," which is what I assume you meant to do with your day-of-week comparison before testing the other days. You can nest these as deep as you need to get the results you want, but if you're going more than a few deep, I'd probably start thinking about if there's a better way or if you did something wrong.
No, an ELSE-IF is part of an IF THEN block, just like ELSE. It does not "open" a new one or require its own closing (beyond that required by the IF THEN to which it necessarily belongs). My post above shows a correctly formatted example, though the OP is technically also sound from a structural perspective--even if logically that structure probably won't have the desired outcome.
(This might be particularly confusing in the first post given that the ELSE-IF is highlighted in yellow like the IF ... THEN, so don't let that distract you.)
IF (weekday) THEN
Fade lights
On under cabinet
IF (Den Can Lights on) THEN
Off Den Can Lights
END-IF
ELSE
Fade lights
On under cabinet
IF (Kitchen Can Lights, Den Can Lights on) THEN
Off Kitchen Can Lights, Den Can Lights
END-IF
END-IF
could try something like this. if your delays were the same time for each day, you could've consolidated the den can lights, but since they're different you'll need a different one for each
the reason i'm using ELSE instead of ELSEIF is because you're either in the weekday or not, so there's no need to specify the other days since they would fall under not being a weekday
This only holds for "normal" conditional actions. A "simple" conditional only allows one condition and one action, does not allow any following ELSE or ELSE-IF conditions/actions, and requires no END-IF.