Voice Control Using Siri and IFTTT (not using HomeKit, just voice text)

Hi All - see the below instructions for executing simple SmartThings commands using Siri. The solution involves sending a text to an IFTTT phone number which acts as a trigger to turn on or off devices via SmartThings. You can setup a contact called ‘home’ and then send a message to ‘home’ (use command ‘Tell Home’) with the proper tag to trigger the event. I’d love feedback on the approach. I would rather use more natural language like ‘Tell Home to turn on the kitchen lights’ rather than ‘Tell home hashtag kitchen underscore lights’. Regardless, the approach below executes simple ST actions with use of Siri alone, which is pretty cool.

BASIC SETUP

  1. Setup an IFTTT account
  2. Add the Smarthings channel to IFTTT - make sure to provide access to any devices that you want to control
  3. Add the SMS channel to IFTTT and get your IFTTT phone number
  4. Add a new entry to your contacts with first name “Home” and using your IFTTT number as the MOBILE number

CREATE IFTTT RECIPE

  1. In IFTTT go to recipes (the bowl icon) and select the + to add a new recipe
  2. Click the + (start here) icon, select the search icon, and find SMS (not Android)
  3. Select ‘send IFTTT an SMS tagged’
  4. Enter the tag or keyword to trigger the event - note it must be a single word. Do NOT include the hashtag symbol before the word. For this example, use 'light and click next
  5. Click on the next + (after ‘then’), select the search icon, and find SmartThings
  6. Click on the + by Switch On and select the device you would like to turn on with the phrase ‘light’
  7. Click continue, turn off the ‘receive notifications’ option, and click finish

EXECUTE VOICE COMMAND VIA SIRI

  1. Activate Siri with your home button and say “tell home hashtag light”. Siri will ask for confirmation and just say ‘yes’
  2. Your lamp should turn on within about 2 seconds

NOTES

  1. Since IFTTT only uses hashtags as triggers, you must speak the word ‘hashtag’ before the actual tag itself
  2. Hashtags must be a single word, so consider using underscores. For example, to get ‘#lamp_off’ say “hashtag lamp underscore off”
  3. You can only turn on or off a single device with each IFTTT recipe but you can have multiple recipes with the same tag/trigger - for example, I have 4 lights that turn on using the tag “on” - so I created 4 IFTTT recipes, each with the SMS tag of ‘on’ and each turning on a different light. So, when I say “tell home hashtag on”, it turns on those 4 lights simultaneously.
  4. For some unknown reason, certain tags simply DO NOT WORK. For example, the word ‘lamp’ doesn’t work, but ‘light’ does. Go figure.

I hope this helps others that are trying to solve the same problem I was, without buying more hardware or services.

Will Poirier

16 Likes

is there an equivalent for “OK Google” on Android?

Jovan, you can use “OK Google” voice commands on Android using SharpTools… check out the following tutorial:

As I’ve mentioned, i don’t have any smartphone because I’m quadriparetic and smaller objects are harder for me. I have two iPads, both great.

Anyway…

I have an ipad2 mounted on my wheelchair that has 3G but no Siri. And an iPad Mini with Siri, but only wifi.

I am seriously considering getting the least expensive IOS 8 iPhone with unlimited SMS text just to use as handsfree voice control. So always plugged in, hey siri, send SMS to IFTTT via @Will_Poirier 's method above.

Any suggestions for model/memory for this specific purpose? I can add a refurbished iphone 5S with 16 g for about $15 a month, which seems well worth it for a voice option, but I’m not sure that’s enough memory. I do want to use the IFFTT DO app also, I think.

It works! It works great! Totally handsfree voice control.

I had briefly looked into IFTTT before, but dismissed it as an option because I thought it was too limited. As mentioned before, I love my ipad, but didn’t have any smartphone as physically they were too hard for me to use. (I’m quadriparetic with limited hand function.)

But @Will_Poirier brilliantly noticed that you can use one SMS message to IFTTT to trigger multiple SmartThings channel requests.

And with iOS 8 and handsfree Hey Siri I can now do everything handsfree. No custom code, just the simple IFTTT rules engine.

As for hardware and costs…if you already have an iPhone and unlimited text, this adds zero cost. :blush:

I had messaging for my iPad 2, the one on my wheelchair, but no Siri.

Coincidentally, I got an ATT marketing letter this week. I think they’re trying to get rid of old inventory. Anyway, they offered an iPhone 5C on their Next plan plus a gen 1 cellular-enabled iPad mini for an additional $99.

My total additional costs will be about $20/month more than I’ve been paying now. (Again, if I had already had an iPhone with unlimited text, there would be no additional costs. The $20 is the installment purchase of the 5c.)

Had my techie helper over today, we got everything set up in about 10 minutes, works perfectly! Never had to touch the IDE.

Hands free voice control via Siri for anything that’s controllable via the IFTTT SmartThings channel. :blush:

1 Like

Wow… It worked perfectly well with switches but not with a hue though…oops it worked… Nice…

So glad this was useful for you! It took forever to figure out the details. I think HomeKit will make it irrelevant but, for now, this is a free and perfectly effective way to control simple SmartThings triggers using Siri.

Take Care,

Will Poirier

1 Like

Still practicing with it to get the rhythm smooth, but it’s great.

Tried several different hashtag options, but ended up deciding the easiest for everyone to remember and most extensible was

“Zone_device_action”

So “tell house hashtag bedroom_light_on”

The trick is finding things that are easy to say and that siri won’t try to break into two words.

I’m using “central” as the zone name instead of “living room” for example.

And each person’s name to designate their bedroom.

“Entry” instead of “entryway.”

Since HomeKit is going to keep one database for all of a home’s zone and device names, I think it’s likely a HomeKit installation won’t have the underscore issue, but this setup for SmartThings isn’t bad once you get used to it.

Once I formalized the trigger structure to zone_device_action it went a lot better. I had been trying to keep some triggers as short as possible, like just “light” for the entry light, but my roommate kept getting confused as to which was what. And when he named the triggers, I was the one getting confused.

So the longer triggers sound a little more stilted, but are easier for us to remember.

FWIW

1 Like

This is really cool, although I found it a bit spotty. For example, #office_on and #office_off works fine. Yet, while #room_on would work, I could never get #room_off to work – even after re-creating the recipe twice. And “bedroom” invariably flummoxed it.

In the hopes of using completely natural language, I tried using Dropbox as an intermediate step. Dropbox, unfortunately, does not support IFTTT Quick Triggers, meaning that it only gets polled about every 15min or so.

Nevertheless, if you set up the SMS to create a file in a Dropbox directory that is the name of the SMS text, you can actually trigger actions with any completely natural text. But you could wait up to 15min for a result. Still I did get it to work as proof of concept, with each try taking between 5-7min, so if Dropbox ever gets Quick Trigger support on IFTTT, this could be really cool.

Some more details:

(1) I created a phone contact called HAL Two, whose “mobile” is the IFTTT number that I was assigned.
(2) I set up a Dropbox directory called IFTTT/open the pod bay doors
(no, really)
(3) Then I set up a regular (not tagged) SMS message, so I wasn’t following @Will_Poirier 's instructions above.
(4) The first IFTTT recipe is an IF SMS THEN Dropbox, where the Dropbox folder path is IFTTT/{{MESSAGE}}. Thus, the words you speak to send the SMS determine the name of the subdirectory. (The file name and content of the file that Dropbox are irrelevant; all that matters is the sub-directory, which it gets from the transcription of the SMS.)

So, when I say, “Hey Siri, tell HAL to open the pod bay doors,” it sends an SMS to IFTTT with the content “open the pod bay doors”, which creates an empty file in a Dropbox subdirectory whose name is the content of the SMS, e.g., IFTTT/Open the pod bay doors.

(5) The next IFTTT recipe is IF Dropbox THEN SmartThings. The details are such that if any file is created in a Dropbox subdirectory IFTTT/Open the pod bay doors, then SmartThings gets a command, to turn on or off a light. I also tested it with “Tell HAL to turn on the bedroom light” and that worked fine also. (Notably, Siri translates “tell HAL to do x” as “tell HAL Two: do x”. Remember, my iPhone contact is named HAL Two, so that’s convenient. But I suppose I could have also titled the subdirectory, “IFTTT/to open the pod bay doors” and then I could name the contact Marvin or The Computer or whatever.)

So, in the end, you’d only have one recipe translating SMS --> Dropbox, and then a bunch of recipes going Dropbox --> SmartThings, connecting each subdirectory to each action. E.g., you’d have a directory “IFTTT/turn on the kitchen lights”, IFTTT/turn off the kitchen lights", etc. Over time, those directories would get cluttered up with tiny, empty files. But each file only runs 1K, so you would have to use this thousands before you’d even notice. Plus, Dropbox storage is very affordable. Also, I expect that if you ever botch a command, e.g., “Tell Hal to please open the pod bay doors” then you’ll get a random subdirectory with that name, and nothing will happen because that’s not the name of the subdirectory that IFTTT is looking for.

The whole thing is so haphazard I still can’t believe it actually worked. Nevertheless, it won’t actually be useful unless Dropbox gets Quick Trigger support. However, since IFTTT said late last year that they were trying to roll out more Quick Trigger support, it might one day happen.

1 Like

minor update after a few weeks: I’m really happy with the IFTTT solution for now. Response is very quick once the message is sent, usually under 5 seconds. Siri seems to be understanding me better. We’ve found good phrases for everything after some trial and error.

We did shorten a few common phrases that were easy to remember, so “hashtag TV” to turn on the entertainment center power strip instead of " hashtag central_tv_on" and “hashtag kitchen” instead of “hashtag kitchen_light_on.” We kept the longer phrases as well for consistency, but a couple of shortcuts made a big difference.

1 Like

Looks like there’s a new option for voice controlling ST. Check out the new moni.ai channel on IFTTT. Looks like it’s powered by Nuance and the community makes it smarter. Could be pretty cool. Could be IFTTT’s Homekit killer. :wink:

Full disclosure: I haven’t had any success with my first recipe! Seems like this would require a lot of different recipes for more granular control. Or… it could just be an april fools joke. Who the hell knows anymore.

1 Like

I got my first recipe to work, it’s pretty damn cool. Not much of a delay.

As a quad, I rely on totally handsfree voice control. This is indeed cool, in terms of injecting more natural language, but it won’t be a homekit killer for three different reasons:

  1. you have to open to the Mona. ai. website screen or app before you can enter any command. Getting there is going to be fairly tedious or tap intensive depending on what else your device was just doing.

  2. Home kit will keep a single database for your house that has the room, zone, and device name that you’ve assigned to every controllable device. This will be shared among all your Siri enabled devices. This should allow natural language while retaining Device name consistency. That is, whether you call a particular room a study, den, Little room, office, front room, studio, Charlie’s room, or whatever, that name will be stored for your house. The problem with natural language that doesn’t have a similar database is that the wrong devices may be triggered if Mona guesses wrong about what you were trying to do.

Because I am using voice now to control basic smart things, I’ve been very aware of the naming issue.

  1. mona will not work from a wearable at present, although maybe eventually. Samsung’s current, very limited, geaR S Smart watch implementation for basic smart things, is one approach. The Apple Watch will give you hey Siri implementation anywhere in the house or yard as long as the linked smart phone is on the same Wi-Fi network. That’s a big difference.

So I think Mona could be a limited homekit substitute but the limitations are going to be pretty big. For Apple users, hey Siri will be a better choice. For android users using smartthings there are several options, and right now sharptools is the slickest, although it’s not a fully free implementation.

So I think Mona is fun now, cool, and may be practical for some people, particularly those who are looking for one room implementation and can dedicate a device to it.

As always, “your use case is not my use case.” :wink:

1 Like

now, none of my recipes work. It’s still pretty hit or miss.

I knew about Siri but didn’t know hey Siri would be a part of the apple watch. Isn’t this going to murder battery on the watch?

Nope. :blush: it’s touchless, but it’s not always listening. You have to do the Dick Tracy gesture of raising your wrist towards your face. Then hey siri is activated and you can talk to it without touching any buttons or the screen.

1 Like

Very cool. I had been looking at IFTTT but didn’t get the commands right. With simple commands now I have had very fast success with lights and also window shades, through the somfy RTSI integration with ST. I’ll need to clean up the key words, hoping to avoid long or underscores, but great to see such quick results. Thanks for publishing!

1 Like

Is there any known way to control a thermostat? Send a temp setting, not on/off which I presume wouldn’t function anyway

If you have a jailbroken iPhone, there is a much more direct way to use siri to control any smart things-connected device. Use Assistant+ & Activate Command to call any ST endpoint. The result is, in my experience, 5-10x faster than using IFTTT.

I’m finding the ifttt method that uses a text is very fast. Much faster than using The channels that get polled. Typically two seconds or less, which is fine for my purposes.

Everybody’s personal preferences are different. Because I like to spend as little time as possible these days ferreting out problems, I don’t jailbreak my devices. Things either work, or they don’t work. But for those who do choose to jailbreak their devices, there’s certainly a lot of creative stuff out there.

1 Like