What prevents this routine from local execution

I did a search and could not find an answer to this. What is preventing this routine from local execution. Here is a simple Routine I am trying to build.

In this case, all the devices are local, so the execution is local. The “Downstairs Automation” Virtual device is using an edge driver, so it is local.

Now I just add a Luminance condition.

The Xiomi Sensor is running an Edge Driver, so it should be running local. However this one addition prevents the routine from local execution. It doesn’t matter if the condition is added as shown here or as a pre-condition.

The same is true if I add Luminance, or any other parameters from any these other sensor that are running DTHs that are local.

What am I doing wrong?

Tagging @nayelyz

1 Like

Thanks for tagging me @JDRoberts.
I’m checking with the engineering team what could be causing this behavior, @damohabir, as soon as I get their feedback, I’ll share it with you.

4 Likes

I guess I really don’t understand how local execution works. This is as simple as it gets. Both devices are running Edge drivers, so I would expect this routine to run locally, but it doesn’t.

Edge automations don’t run locally when you add a time delay to a motion detector. I don’t know why but they don’t.
It will probably run locally if you move the time delay to the virtual dryer.

2 Likes

Here’s what is supported by Rules API, which routines use, to run local as of several months ago. This may not mean, however, that the hub firmware or app UI are ready quite yet to run them local.

Actions:
command
every
group
if
sleep
toggle

Conditions:
and
between
equals
greaterThan
greaterThanOrEquals
lessThan
lessThanOrEquals
not
or

Attributes:
main.accelerationSensor.acceleration
main.alarm.alarm
main.button.button
main.carbonMonoxideDetector.carbonMonoxide
main.color.color
main.color.hue
main.color.saturation
main.colorTemperature.colorTemperature
main.contactSensor.contact
main.illuminanceMeasurement.illuminance
main.motionSensor.motion
main.presenceSensor.presence
main.smokeDetector.smoke
main.switch.switch
main.switchLevel.level
main.waterSensor.water

Commands:
main.alarm.both
main.alarm.off
main.alarm.siren
main.alarm.strobe
main.colorControl.setColor
main.colorControl.setHue
main.colorControl.setSaturation
main.colorTemperature.setColorTemperature
main.lock.lock
main.lock.unlock
main.switch.off
main.switch.on
main.switchLevel.setLevel

2 Likes

This is helpful. Thanks.

My understanding …

Consider the Smart Lighting app. Some automations created in that app can run locally. It isn’t the Groovy SmartApp running locally, it is a native implementation of some of the same ‘rules’ in the hub firmware. Only if the devices and all the required rules are in the firmware will the automations run locally.

Similarly consider a Groovy DTH. Some can run locally. It isn’t the Groovy DTH running locally, it is a native implementation of some of the command methods in the hub firmware.

The same thing applies to app Routines/Automation. They use the Rules API. They can only run locally if the devices and all the Rules that are required have been implemented in the firmware. Some Rules have, some haven’t.

2 Likes

Indeed, the issue is the selected option of “remains” as it is not supported for local execution yet.
About the supported capabilities, the comment from @Automated_House is focused on the previous integrations like DTHs where there was a limitation for certain attributes or commands.
There are no limitations regarding the capabilities we can use in automation for Edge drivers, only some functions are not included yet for this type of execution.

2 Likes

from my experience preconditions do not work as well as any division from simple if “contact/motion/button” then “turn on light”

any condition of the curtain state makes the routine non-local. So I even planning to create my custom capability to toggle curtain.

Any group activity is not local, so I can’t sync (turn off) all the bulbs in the same lamp at the same time.

You can add lighting groups to a routine? I can’t on iOS.

I can’t on Android either.

1 Like

not group just manually added several bulbs to the same routine

1 Like

So if you add multiple bulbs that run local your routine won’t run local? :thinking:

the condition “if any light in the group is on” makes routine non-local.

Sorry, I still don’t quite understand what you mean. I think below is what you’re saying, but it runs local for me.


try this

when button pressed,
if any lights are on then turn off these lights. < rule 1
if all the lights are off then turn on < rule 2

Is the light on/off state a precondition?

Yes, but I am not sure how to do it properly.
If you can do it properly please tell us.

The requirement is simple - to sync the lights on the button press.

@nayelyz, I have been doing some additional testing on local execution. Here is a simple example. I am just trying to turn on the lights in a room when motion is detected and the luminance reading is low. This example executes locally if the luminance is a fixed value.

However using a fixed value for luminance is not practical. But if I change luminance to </= to a value it does not execute locally.

2 Likes