Mode Event *changed* stays true

I'm trying to update a variable whenever the mode changes (I don't really care what it's changing from/to, the idea is that I clear the manual control of a light switch and default back to motion control). However, in RM my logic does not work as expected because the "Mode is changed" event always reports as true. I would expect that this event notifies it's subscribers after we switch modes then goes back to false. Conceptual error?

IF (Mode is changed(T) [TRUE]) THEN
Set bMasterBRManualOn to false
Set bMasterBRManualOff to false
ELSE-IF (Master BR Light Switch pushed(2) = 1.0(F) [FALSE]) THEN
Set bMasterBRManualOn to true
Set bMasterBRManualOff to false
ELSE-IF (Master BR Light Switch pushed(2) = 2.0(T) [TRUE]) THEN
Set bMasterBRManualOn to false
Set bMasterBRManualOff to true

You can't have "Changed" as a conditional action. That should only be used as a trigger.

I would approach this a different way.

I would set up a virtual switch, and set it to automatically turn off. Use a rule (rule 1) to activate the virtual switch when desired (by mode or whatever), and watch the virtual switch state as a condition for a separate rule (rule 2), or for Motion Lighting, or whatever.

Not sure if that is exactly what you want, but that is my interpretation of your explanation.

What are you using this variable for in Hubitat? If you're trying to detect when you've changed the lights's state manually so that another rule, doesn't reset it, there are much, MUCH easier ways to do that than a variable in this rule. The easiest of which is before turning the light on by motion you verify that the light is not already on. Or set the PB of the rule for motion to false by a physical change in the light or the press on a button controller.

But ultimately, I think there are much easier ways to accomplish what I think you're trying to do if you expand on what these variables are actually being used for.

Fair enough. How do I know which conditions can be used, since the software doesn't restrict it?

Now you know not to use Changed. You know all the ones that I know of.

The use is as follows:
I have a Z Wave wall switch, which operates a Z Wave outlet connected to a lamp. The connection is only virtual, there is no physical wiring connection between these two. I also have two motion sensors, which I want to turn the lamp on, under the following conditions:

  1. Lux < 15%
  2. Mode is day or evening. In late evening or night, the lamp should be only operated by the wall switch.
  3. The wall switch should override the motion sensors in all cases.

I poked around in the motion lighting app, but couldn't find a way to make all that work, but certainly could have screwed the pooch somewhere.

See, your list of requirements doesn't make a lot of sense. If the light is on from the lux being lower than 15, why do you need the motion sensor? Or, instead of these being discrete conditions, are they actually combined? Do me a favor, write out the requirements like this:

I want the light to come on when:
A. Lux is < 15 (and lux isn't reported in % btw) and motion is active.
B If the switch turns on.

I want the switch to turn off when:
A. Motion is inactive after a timeout of X mins
B. If the switch turns off?

Also, when turned on by the switch you want the switch to stay on till manually turned off.

We'll go with that for now and I will show you how I would do this. First thing I would do is to to use the switch binding app to "bind" the two apps to each other. That way, when one is on, the other is on. That takes care of the two B's. Next I would set up a rule with motion control as follows:

Trigger:  Motion Changes

Action:  
IF Private Boolean is True THEN
     IF Motion is active from either sensor and lux is < 15 THEN
         Cancel delayed actions
         Turn on light
    ELSE IF Both motion is inactive THEN
         Delay actions for X mins (cancelable) 
         Turn off lgihts.
    END-IF
END-IF

Then, last but not least, the switch. You said this was a z-wave switch. Well, you'll have to confirm that the driver is distinguishing between physical and digital changes. If it isn't, this won't work. But if it is, you need one more rule.

Trigger:  Switch PHYSICALLY changing

Action:
IF Switch is on THEN
     Set Private Boolean false for the other rule
ELSE 
     Set PB true for other rule.
END-IF

Those 3 things should get you exactly what you're looking for.