One of the most useful tools that exists in the DIY smart home space is a website called IFTTT.com which stands for “If This, Then That.” It is one of the measures of whether a new smart home product has made it that is starts to include IFTTT integration. And it can be a great tool, but one that should be used with an understanding of its limitations.
IFTTT began as more of an email/webcrawling service. It allowed (still does) you to set up rules in your account on their site for things like ‘If I receive an email from [someone] post the email to my Facebook account’. I used it to text me alerts when my daughter’s school was closed or delayed due to weather. The school’s website did not offer a texting alert service of its own, but would post weather alerts in an easily crawled RSS feed. And it worked great. A storm hit and my phone woke me up in time to not wake up my daughter. (You would think things like this would earn me lots of ‘Super Dad’ points. Apparently not).
IFTTT and the Smart Home
But like anything that works well, it became a victim of its own success as the smart home space started to explode. My Belkin WeMo plugs were the first products that I tried to use through IFTTT. I had a pair of bookshelves that I had wired with color changing LEDs. I wanted them to turn on with the room light without having to completely rewire the room. I installed a WeMo wall switch and a pair of WeMo plugs. When the WeMo app did not give me the ability to link devices into a ‘scene’ or ‘room’, I did a few searches and arrived at IFTTT. I set up a rule that said, when the wall switch is turned on, turn on the plugs. It actually ended up taking four rules: one for each plug to turn them on and then another one for each plug to turn them off. And it worked! But with a lag time that was often over a minute. It seems that this is not uncommon and that I may have been on the shorter end of that pause.
I then went on to adapt a Amazon Dash button so that it would toggle my bedroom light instead of ordering mac-and-cheese. When the Dash button was pressed, a Raspberry Pi intercepted the command using some Python script adapted from here. This then sent a request to the IFTTT Maker Channel and then back to my light. Admittedly, I did not expect this to work quickly (or, really, at all), but a five second initial delay was good enough for me. This became progressively longer until I was pressing the button to turn off the light, falling asleep and then waking 45 minutes later when the light finally came on. Rebooting the Pi and reconnecting the Maker Channel helped for awhile, but the lag time always kept crawling up.
The people behind IFTTT designed their systems to scan web pages periodically, maybe on the fifteen minute time scale. Smart home devices need faster turnaround times; even a five second delay is annoying. As much as they have tried, the IFTTT people have not been able to scale their systems to do this reliably.
If This AND This
Another challenge with IFTTT is that it is a very simple system. If ONE condition is met, the ONE task is completed. What if I want several lights to come on when I’m away from home (using the SmartThings channel and the Android Location channel). I need to set up separate recipes for each light. Or what if I want those away lights to come on, but only if it’s after sunset? That’s two conditions. Sorry.
Admittedly, I can solve most of those through the rules in my SmartThings hub. Most home automation hubs allow for these kinds of multiple input, multiple output tasks. However, there are times when you need to use an outside service because your hub and your connected devices are not compatible in any other way. The Amazon Echo is a perfect example, though its functionality seems to expand every other day. Yet, it is never going to have a Z-Wave or Zigbee antenna added: that cannot be solved with a software upgrade. Another is the Nest Learning Thermostat. Most hubs and other systems can only interact with it through IFTTT due to Nest’s Terms of Service and not directly even though it’s on the same local network.
Fortunately, IFTTT is not the only game in town. There are some other ways to get similar functionality and more, but they all come with their own sets of limitations. Stringify is one such that sets rules up in ‘flows’. These can have multiple input conditions and multiple outputs based on those conditions. However, it is still a cloud based solution and it can only be used through an Apple iPhone app. Android is coming, but not available yet.
For Android owners with a bit of daring, there is Tasker. Tasker turns your Android phone into the rule server and interface. There is no cloud which means almost instant responses. And it can do almost anything you want. If you can figure out how to do it. And therein lies the problem. Tasker is designed by software engineers for other software engineers. They honestly think that they have made connecting and controlling everything based on information from your phone easy. And it is for them. For the rest of us, it can be a jungle of plug-ins and searching for how others have done something similar. To make it worse, some of the plug-ins require that the phone be rooted, blowing the warranty if you care about things like that.
Ultimately, IFTTT and these other services are band-aides. It is better to do some research ahead of time and get a connected devices that work with your hub. But if you have to have something that isn’t otherwise compatible with your system, then IFTTT can help.