More efficient way to use IFTTT variables to update other variables?

I have a Wemo Insight switch that I’m using to detect when my washing machine is finished, and then activate a Lifx scene elsewhere in my home. The insight switch should detect when the washer starts and stops drawing power, which triggers IFTTT, runs logic through Apilio, and activates a scene via IFTTT.

This sounds simple, but as far as I can tell, the implementation requires over a dozen apilio components. Am I doing this wrong?

There are 2 main issues I’m trying to work around:

  1. My washing machine cycle pauses in a normal cycle and may momentarily draw very little power, creating a false positive “finished” action. So I think I need timing conditions.
  2. Wemo is slow (and inconsistently slow) to update IFTTT. So I’m trying to minimize reliance on that channel.

For #1, I have a condition that requires the “washer_stopped” variable be true and untouched for >180 seconds. This means that I have to trigger a logicblock to evaluate the condition without updating the variable used in it. My solution is chain through IFTTT, and I understand that this is the best we have pending some way to trigger logicblocks directly from other logicblocks.

#2, inconsistently slow updates to IFTTT, is driving me crazy. For instance, I have 2 IFTTT applets for two apilio updates that should happen simultaneously: When power draw is detected, set “washer_stopped” to false and “washer_started” to true. However, these can trigger 30 minutes or more apart, in either order, even though they be simultaneous. To circumvent this, I can imagine two options:
A. Use another logicblock to have IFTTT keep “washer_started” and “washer_stopped” in sync with each other
B. Circumvent the entire Wemo/IFTTT integration and utilize some other home automation platform with webhooks.

I want to have a “washer_started” variable so that I only detect the washer finishing if it has been started recently, but it seems like each additional variable is a failure point given Wemo/IFTTT’s poor quality integration. Has anyone else had to work around these issues and been able to do so with fewer logicblocks?

1 Like

Hi @Kyle! Welcome :slight_smile:

I think the IFTTT trigger you are using for your Wemo Insight Switch is “Standby mode entered”.And you are totally right, in this situation what you want to use is the timing delay of the condition to avoid false positives.

:point_right:t3: We are currently working on triggering conditions, so my setup below will be much easier then, as you won’t need an external trigger. In the new triggering conditions, they will trigger the Logicblock when they change to true, and they will observe the timing restrictions too! You’ll be able to use them in a few weeks if all continues well :woman_technologist:t3: I’ll keep you posted.

If I understand your setup correctly, you would only need the following elements to create this logic:

  • One Variable: washer_stopped
  • One Condition: time_to_check_the_washer
  • One Logicblock: washer_is_done

And this is how everything is connected:

  • “washer_stopped” turns true if the Wemo said that “standby mode entered”.
  • The condition time_to_check_the_washer is true only if “washer_stopped” is true. And here we add a delay with “Unmodified since” set to 180 as you have it, to avoid checking this too early.
  • the Logicblock only uses condition time_to_check_the_washer, that must be true, and needs an external trigger.

The external trigger can be for example setting a couple of applets that evaluate the Logicblock at 00 and 30 minutes past the hour, every hour. This is not ideal, but like I said earlier, we’ll be able to completely remove these external triggers in the future soon.

Would this work in your scenario?

One more thing! If you needed the opposite condition you don’t need to create a second variable: just create a second condition that watches the same variable but instead of being true when the variable is true, it’s true when the variable is false.

Thanks! :slight_smile:

1 Like