It looks like I've made a mess of this rule. I assumed (wrongly) that a 'wait for event' in one IF/THEN statement in the rule, would not stop the rest of the rule from running, just the remaining elements before the corresponding END IF. Unfortunately everything stops at the first open window. My rule is below. Is there a better way of doing this? I want the curtains to close at a given time but if the corresponding window is open I want it to notify me and wait until the window is closed. However I don't want to hold up the actions at the other windows. I also don't want 1 rule per window.
I suppose I could make it carry out the actions for every curtain where it's window is closed first, before rerunning again for open windows:
If Window 1 closed, close curtain 1
End If
If Window 2 closed, close curtain 2
End If
If Window 1 open, wait until window 1 closed, close curtain 1
End If
I knew you'd say that @bravenel - "rules are free". I suppose I can do one rule, clone it and change the appropriate devices to suit.
Some of us however just thrive on complication, 'how can I do this', 'how can I improve that', 'this god damn thing isn't working'.........but oh the smug satisfaction I feel when I take something simple, make it stupidly complicated than it need be and finally get it to work - that's priceless!
I have something similar for locks - I don’t want my locks to lock if the door is open, so I created “sub” rules that I call from other rules.
The “sub” rules have a wait condition, and will only run once it is fulfilled. The main rule just runs each rules one after the other. It doesn’t care whether the rule in question is in a wait state or not.
I also call the “sub” rules from any other rule where I want to door locked.
might break up the notifications into one group of if statements, and the wait conditions in a separate set of if statements
i've also thought about using binary for these types of rules. assign each device to a power of 2, and add that value if it's open. then at the end, depending on the total value, i could notify for the specific devices
What about 2 rules, first one similar to what you have now, if window is closed then move blind else notify. Second rule, required expression - "closing time", trigger - windows closes, action - close blinds.
That would be easy. So Main Rule would trigger at the times I specified. Action would be run window 1 rule, run window 2 rule etc. The sub rules (window 1, window 2) would have no trigger and the actions would be the appropriate section from what I tried earlier:
Counter = 0
IF DOORA is open THEN
Counter += 1
END-IF
IF DOORB is open THEN
Counter += 2
END-IF
IF DOORC is open THEN
Counter += 4
END-IF
you can continue this for each device. then at the end, you can just have IF statements for each combination
IF Counter = 7 THEN
everything is open
END-IF
IF Counter = 6 THEN
DOORC and DOORB are open
END-IF
IF Counter = 5 THEN
DOORC and DOORA are open
END-IF
etc
this isn't something i've utilized in RM, but have used it in other programs i've done