Evaluation when conditions change (not variables)

Evaluation when conditions change (not variables)


So, I’m trying to figure solve a problem I have. I currently have a router that can be linked to IFTTT when devices connect/disconnect from my network. I’ve fashioned this to link to Apilio so that I know when certain people are home. The problem is, sometimes phones connect and disconnect, though usually in rapid succession. What I’d like to do, is only run actions when a certain person (or all people) aren’t home (i.e. are disconnected from the wifi for more than 2 minutes). The problem I’m having is that while logic blocks can be set to automatically evaluate when a variable changes, they can’t be set to re-evaluate when a condition changes.

If I have several “Conditions” set up as so:
Linked to variable: person-n-home
Required state: false
Must be unmodified since: 120 seconds

I have logic blocks that will automatically trigger when a “Variable” changes, but in this case, they won’t trigger when a “Condition” changes. The end result seems to be that when I need all of them to be false for at least 120 seconds before it runs, it won’t actually run, because the immediate check will be false, since they weren’t away for 120 seconds.

I think I could solve this by setting a 2 minute delay on the negative result action, and then making a request to IFTTT that would ping the app again to re-evaluate, but then I’d be constantly re-evaluating on 2 minute intervals until it was true, which is a terrible idea.

Is there a better way to do this that I haven’t thought of? It would be really nice to get this use case to work, while eliminating most false positives via the delay.


Timing with Apilio - How to add a delay to IFTTT actions

Hi Nathan,
your conclusion is correct - we currently can’t offer a way to re-evaluate when a change in time would lead to a change in the condition result. We are aware of it and want to offer a built-in solution, but we are currently working on other high-priority changes.

The solution you describe is one of the current practiced workaround. Another approach can be the use of the execution mode “warn”: You can set a 2 minutes delay and send the message to an unobtrusive channel. In case a variable is updated in that time, the logicblock is re-evaluated and the old actions which are still waiting in the queue will be canceled.



Thanks for the reply Philipp!

I’ll give those options a shot. Thanks for the message :slight_smile:



For situations where the timeout can be longer (e.g. 15 minutes) and it is not so critical, one could also work with a condition with a timing restriction (e.g. must be unmodified since 15 minutes / 900 seconds) and create applets in IFTTT that call a Logicblock evaluation 15 minutes.