[Released] Rule Machine 3.0


Is it too soon to ask when Rule Machine 4.0 is due?

Someone had to ask.




The problems have died down. People have gotten their questions answered. Doesn't that indicate we should be ready for 4.0 real soon. :wink:


Really dumb question. With rules, is the false side evaluated only when the rule was previously true but changed to false, or any time it's false. If the second, could two rules fight each other?

I'm seeing some weird things with rules and am questioning my understanding. Specifically with regard to cancel on truth change in rules for RM 3.0, with delay plus cancel on truth change, and the false side is never seemingly executed.


True/False actions should only be evaluated/executed on a truth change (unless there is a repeating action, of course).


False. :smiley:

An Event occurs. A Rule subscribes to that Event and the RULE gets evaluated. If the evaluation yields False, then the Action for False is run. The evaluation happens every time. If you have a Cancel on Truth Change in your False Actions, then True Actions running will cause the False Action to be cancelled, and vise versa.


@bravenel A few days ago, you advised me to scrap a rule and start over because my rule got confused and I couldn't change an action. Now I have a somewhat similar problem with conditions.

Admittedly, it all starts with user error. I specified a condition (e.g. Garage Door) for which I have no device. RM insists that I specify that device before I can save or cancel the condition, so I have no way out of the condition-setting screen. The only thing I can do is go back to the apps page and edit the rule again. But it remembers my incomplete device declaration and sticks at the same place with no way to go forward or backward. Here's the screen:

It happens that I have created a set of true and false actions so I'm going to lose a lot of work if the only answer is to delete the rule and start over. Would you please give RM a graceful way out if this?


EDIT: Removed as Bruce's answer below answers this.


Actions are only run when rule-truth changes. When rule truth changes, anything outstanding with "cancel on truth change" gets canceled.


Yes, this shouldn't happen like this. Will put in a fix for it. This is a bug specific to Garage Door and Door. Found and fixed,


Yep.. you're right.. I glossed over (skipped) the part about

and the RULE gets evaluated.

and there's no change in truth, nothing happens. Change in Truth is part of evaluation, that's for sure. :slight_smile:


Okay...I thought you were saying that whenever the rule is evaluated as false the false action happens.

split this topic #257

2 posts were split to a new topic: Keen Vents not reporting temperature


Found a bug (I believe)

Rule is setup to turn on a light in my kitchen at midnight, then it delays a fade action for two hours.

When it triggers the fade action it does this:

app:12172019-05-08 02:00:00.314 amerrorgroovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.lang.Integer#div. Cannot resolve which method to invoke for [null] due to overlapping prototypes between: [class java.lang.Character] [class java.lang.Number] (dimFade)

Could this be the same issue I see with my sunrise rule that is in the next patch?

split this topic #259

8 posts were split to a new topic: Rule not logging correctly, missing ENDIF not working right


How to make a simple rule :

  • If Light ( Switch, Contact … ) STAY ( triger ) : on ( or off, open, close ... ) for x minutes, second THEN do something … with Cancel on truth change.


Here is a simple rule. If the garage door is left open for 5 minutes, it will send a message. If it closes within that time, it won't do anything at all.


@bravenel a while ago i wanted a conditional action repeat but I had set up wrong as i was told the actions IFs done get evaluated so esentaly it would run forever. So stop on truth change had to be the main conditions truth change correct?

but in the documentation it says this

A Repeat Actions, like any action, can have a condition specified. If the condition is false, the Repeat Actions block of actions will not be executed. If the condition becomes false during repetition, the repetition will be stopped (not in the case of Repeat a selected number of times). This provides three features well known to computer programmers; A while-loop, a for-loop and repeat-until loop. The while-loop runs only if the condition is true, and stops if it is false. A for-loop runs for a fixed number of times, but if a condition exists, it will only start that iteration if the condition is true; the condition is not retested during iteration. A repeat-until loop runs until a condition becomes true, running at least once.

While loop - repeat while the condition is true:

IF (condition) Repeat Actions
     some actions...
End Repetition

which to me states otherwise that if the IF (condition) changes to false it stop. no mention having to tick stop on truth change eather. Is it that whatever the condition is it would have to also be a condition in the main part of the rule even if its not in the rule defined.


The confusion is around which type of conditional action to use.

For while loop, use Simple Conditional Action, not IF-THEN.

Like this:


Right! ok that would be why. It's not clear what the difference is between them (currently reading the docs so it may become clear) what is the difference, is it one is evaluated all the time one not?