Rule machine - as per the app developer, this app is no longer available for new installs, distribution, or support

I’ve seen device types that specifically issue hardware off commands when the dim level is at 0%, so it may or may not be specifically implemented in the hardware device.

All you have to do is take my example and change the condition of dimmer-on to dimmer level >0.

Can’t help you without seeing the rules you have setup. Post screenshots.

Final addition for 2015: Speech

Just pushed version 1.6.7. This allows you to select a speech device to speak a message, in addition to push and SMS.

Enjoy! Have a safe holiday!!

Github: https://github.com/bravenel/Rule-Trigger/blob/master/smartapps/bravenel/rule.src/rule.groovy

3 Likes

Have a great Holiday

Great addition!

However, with the TTS currently broken, this is throwing errors when trying to save a rule. https://github.com/SmartThingsUle/Sonos-Notify-with-Sound-External-TTS has a work-around for the broken textToSpeech() function that seems to work well (using an external service if textToSpeech() throws an error).

@bravenel

Or using an external TTS device such as Landroid, it evens connects to Amazon Alexa via Bluetooth while still maintaining all of Alexa’s capabilities. (It can pause music playing between announcements).

Bruce, I have a request! Can you keep your hands off the keyboard and onto the Champagne glass…3, 2, 1…Happy New Year!

3 Likes

Submitted a ticket myself as well, Given the information you provided above.

This isn’t using TTS, but capability.speechSynthesis. I have only tested it with LANdroid Alerter. What is the error it is throwing?

more likely beer, but ok qwerty :grinning:

I did say last addition, didn’t I?

1 Like

Well I am looking forward to 1.6.8 around 1201, then…

1 Like

I’m hoping version 2 will wash the dog for me…

2 Likes

Hello
Not sure is this is a bug or my logic.
Rule purpose
Turn on dinning room light if I enter dark home
Cond1=If door is open or motion is detected
and
Cond2=mode is home,night
and
Cond3=sunset -sunrise+30min
and
Condo2: light switches are off
The curious thing I just setup rule and rule shouldn’t trigger the light right now because it day time, but it does trigger light.
What I noticed is that what ever condition is 1st in OR statement will trigger light.If Or statement is the 1st condition in rule
I performed another test where I moved OR to the end and the rule and it responds as expected.
This rule is the one that responds wrong.
I am using Rule machine 1.6.4 and rule 1.6.6

This rules has or statement at end and works correctly.

Ooh - you are right. The error is being thrown by the device, not RueMachine (however, when doing so, RuleMachine fails to save the rule with “Failed to save page: selectRule” - the error being thrown by the TTS device is java.lang.reflect.UndeclaredThrowableException (in the line which invokes textToSpeech()). I guess the only thing needed (other than me updating my devices is hardening the rule to not break on exceptions).

The error is being thrown by the device when the tts conversion is falling, nothing you can do about it unless you wrap the call in a try catch.

From the documentation:

The evaluation of a rule is strictly from left to right. If at any point in the evaluation, the truth value preceding an AND operator is false, the rule is false without any further evaluation. Similarly, if the truth value preceding an OR operator is true, the rule is true without any further evaluation. You must take this into consideration as you define your rule, if you have many terms.

If there is a bug, which is certainly possible, it would have to do with the first sub-rule. Why it would return true I’m not sure. When I get some time I’ll see if I can reproduce this.

It’s interesting that both of your rules above show FALSE. Please turn on live logging and see what the rule says when it is installed (hit Done on main page of the rule).

Thanks for bringing it to my attention!

People who have coding experience use operator precedence instead of this approach, but it isn’t (strictly speaking) necessary. One can always wrap every operand-operator-operand triad in parens, and it does what you want, or at least should unless there is some bug with sub-rules that I’m unaware of. It is possible there is a bug somewhere. As I’ve said a number of times, it’s not possible to test every combination or structure of a rule. If there is a bug, I’d be very happy for someone to disclose it with a pertinent example. Frankly, I’m amazed no one has found a bug in the logic evaluation code so far. I seriously expected someone to come up right away and say, look at this, it evaluated wrong. But that hasn’t happened, unless this is the case with @HLlalo.

2 Likes

@bravenel I’ve been delaying using newest rules machine … just so that everyone else can test it :-).

Today, I finally decided to upgrade but I’m confused as to why the app is showing me the following image. Why does the Define Conditions continue to show [False] for the garage door (garage door in this case is just the contact sensor)?

Basically, If I leave the house and garage door contact sensor is open… send me a text message after 5 minutes.

Did I get this wrong?

PS I’ll remove the duplicate garage door condition. And like its been said before, many thanks goes out to you on this app.

That is the state at the moment you open or refresh this page on your phone. I would assume therefore that when you took this screenshot, the garage door was closed. In a similar way, the Rule shows its current state (it actually evaluates your rule with the current conditions). Were you to hit Done, the logs would show the rule proving false.

Do an experiment: sleep your phone on that page, open the garage door, wake up your phone – if its iOS it should refresh that page and show TRUE for your door. If Android, you would have to force a refresh by going into one of the subpages, and hitting Done.