Siri Commands to Eventghost with the Apple Watch
The Apple watch is an amazing piece of hardware but out of the box with no modifications it and limited technology knowledge, it’s way overpriced. Most users use it as a notification device. Let’s talk about:
The best parts about it:
- It’s semi waterproof (they don’t just want people to swim in chlorine and the sea with it)
- it has great apps already (with the exception of facebook)
- Definitely lasts a day of heavy use (I’ve confirmed this)
- The screen is beautiful
- The microphone is great. It’s not perfect as it does make more mistakes than my iPhone.
The downsides are:
- The price
- The battery doesn’t come close to the pebble
- There are some quirks that I want to see fixed which I will list at the bottom in case any Apple employees are looking at this article.
How to connect the Apple Watch Siri to EventGhost or Tasker to control everything
Siri on your watch has tremendous power to control your life. Once you can get your text from the watch to your PC you can do just about anything. Until Assistant+ for the iPhone the ability to control what happened with Siri was our of our control. Since Apple has made the Apple Watch Siri separate from the iPhone Siri we can’t take advantage of the tweak. Until now…
Warning
This tutorial isn’t for everyone as it’s complex, requires a ton of patience and some determination. That said, once you do it you don’t need an Amazon Echo, tablets all over the house talking to you, etc. All of it can be controlled for your watch.
Why should you do it?
The Apple Watch Siri restricts you from sending email, querying websites, and requires the dreaded ‘handoff’. I want my watch to do everything while leaving my phone in my pocket. I currently control my iTunes Windows PC by searching with my voice for music but you can literally DO ANYTHING. You could combine it with scraping software like kimono labs, vera for home automation etc. You could get an image from your webcams and email it to yourself (the Watch Mail app lets you view images).
Two Versions of this solution:
A. For those Canadians with no international texting:
- A separate jailbroken iCloud iOS device running iOS 7-8 (I’m using an iPad)
- A gmail account (free)
- Zapier (free)
- Slight php knowledge (priceless) with access to a server
- An always on (or when you want the commands) home PC with EventGhost and Autoremote installed. You could also send messages to an Android device with Tasker and Autoremote installed instead.
*For more detailed instructions see below
B. If you have a US Texting Plan
- Setup a new user called Jarvis and with the phone number of IFTTT when you setup the SMS channel
- Setup ifttt.com with the SMS trigger and then to a Maker Web request which will be your EventGhost URL with AutoRemote installed. This is a way cleaner solution.
* Basic Canadian Number Workaround Outline
- Create a new contact in your contacts called whatever. I used ‘Jarvis‘. This mobile number is your own.
- Install iForward onto your always on iCloud device (I used an iPad) to forward messages to your gmail account.
- Go to your Zapier account and set up a new zap from an Zapier email to a WebHook (Post). The webhook will go to a webserver that will parse the command for the actual Siri command and then forward the resulting command to your Android device or Eventghost PC.
- Your webserver will look something like:[reveal title=”Webserver Script PHP To Parse The Command” open=”false,true” color=”grey-lite”]<?
//get message
function get_string_between($string, $start, $end){
$string = ” “.$string;
$ini = strpos($string,$start);
if ($ini == 0) return “”;
$ini += strlen($start);
$len = strpos($string,$end,$ini) – $ini;
return substr($string,$ini,$len);
}
$message= $_POST[‘message’];
$fullstring = $message;
$fullstring= str_replace(array(“\r\n”, “\r”, “\n”), “”, $fullstring);
$parsed = get_string_between($fullstring, “5555555555): “, ” New SMS at “);
$parsed = urldecode((string)$parsed);
switch ($parsed){
case $parsed==”Play music”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Play’ ) ;
break;
case $parsed==”Play some music”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Play’ ) ;
break;
case $parsed==”Pause music”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Play’ ) ;
break;
case $parsed==”Pause the music”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Play’ ) ;
break;
case $parsed==”Next song”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Next’) ;
break;
case $parsed==”Play next song”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Next’) ;
break;
case $parsed==”Play next song”:
header( ‘Location: http://myurl/touchcontrol/json/executebutton?device=Macros&button=Next’) ;
break;
case $parsed==”Play slideshow”:
header( ‘Location: http://myurl/touchcontrol/json/executebutton?device=Macros&button=CPUs%20slideshow’) ;
break;
case $parsed==”Start slideshow”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=CPUs%20slideshow’ ) ;
break;
case $parsed==”Start a slideshow”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=CPUs%20slideshow’ ) ;
break;
case $parsed==”Play dance music”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=dance’) ;
break;
case $parsed== “Play kids music”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Kids%20Music’ ) ;
break;
case $parsed==”Play radio”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=radio’ ) ;
break;
case $parsed==”Play the radio”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=radio’ ) ;
break;
case $parsed==”Turn on sound bar”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=powersoundbar’ ) ;
break;
case $parsed==”Turn on the sound bar”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=powersoundbar’ ) ;
break;
case $parsed==”Turn on the TV”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=powertv’ ) ;
break;
case $parsed==”Turn on TV”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=powertv’ ) ;
break;
case $parsed==”Turn on the amp”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Power%20Amp’ ) ;
break;
case $parsed==”Turn on amp”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=Power%20Amp’ ) ;
break;
case $parsed==”Play top 40″:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=uktop40’ ) ;
break;
case $parsed==”Play the top 40″:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=uktop40’ ) ;
break;
case $parsed==”Play the top 40 music”:
header( ‘Location: http://myurl:33/touchcontrol/json/executebutton?device=Macros&button=uktop40’ ) ;
break;
default:
header( ‘Location: http://myurl:33/?message=’.$parsed ) ;
break;
}?>[/reveal] - Setup the Gmail account with a custom filter to forward that message to your new Zapier email account trigger (you’ll need to setup a new forwarder email address). I set it up to delete all the other “New Incoming SMS’ Message to the trash. That way you only keep the commands said from Siri, but I also don’t want to see them so I set them to ‘archive it’ in the filter.
For those of you that can do this already without further instruction, get to it. Otherwise, follow AutomationDude.com on Facebook and I’ll give you more instructions with the code I used.
- Published in Apple Watch, Siri