Tutorial TUTORIAL
(^118) The Official Raspberry Pi Projects Book raspberrypi.org/magpi
Next, we’ll set up IFTTT. If This Then That (IFTTT)
is a service that lets us connect different parts of
the web together. In our case, IFTTT helps us couple
Alexa together with the Raspberry Pi. IFTTT lets us
bridge the AlexaPi responses back to the Raspberry
Pi. First, you’ll need to set up an IFTTT account.
(ifttt.com/join). Again, this is free.
Next, you’ll need to add the IFTTT service to your
AlexaPi. You can do this by first installing the Alexa
app on your phone or tablet (magpi.cc/2kyIJho); it’s
available for iOS, Android, and Fire OS. With your
phone on the same network as your Pi, connect to
your AlexaPi and add the IFTTT service.
Next, in IFTTT, we will need an applet for each
command we want to send to the GoPiGo. First,
connect Amazon Alexa to your IFTTT account
(magpi.cc/2kizD9X). Then we’ll do the following to
create an applet that will handle a single command:
- Create an IFTTT applet (magpi.cc/2jTYYn2)
for our first command. We will create
an Alexa applet. - Select ‘Say a Specific Phrase’.
- Specify the command. Say “Backward”.
- Next, select ‘That’.
- We’ll use the action service, Maker.
- Click ‘Make a web request’ and specify
the information. - The URL is either your provided ngrok URL or
your custom domain. We will find this in our
next step, but for now we can enter ngrok.io. - Our applet will be doing a ‘GET’ method, the
content will be text, and don’t put anything in
the body. - Click ‘Create Action’ and then ‘Finish’.
Figure 1 shows how this is done in more detail.
We will need to do this for all the moves you want
your Amazon Alexa-controlled robot to make! In
our project, we made seven: one each for Forward,
Backward, Left, Stop, Right, Dance, and Coffee.
Next, we’ll connect to the ngrok service. We will
have IFTTT contact a server on the Pi, but the tricky
part will be setting up a server on the Pi that’s visible
to the world outside our local wireless network. For
this, you can use ngrok (ngrok.com), a service that
allows you to connect to your Raspberry Pi through
any network. IFTTT needs an internet-based URL
to contact, so we’ll use ngrok to make our server
accessible to the outside world.
First, set up an account with ngrok. You can get
away with a free account, but it will be much easier to
set up Alexabot with a paid account. A paid account
will allow you to set up named servers, rather than
ngrok’s randomly assigned server.
Next, install ngrok on your Raspberry Pi using the
directions here: ngrok.com/download.
This should install all the software. You will next
need to get your token, which will authorise your
Raspberry Pi to ngrok. If you log into your account you
will see step 2, with your token already populated. It
should start with ./ngrok authtoken. Copy the
command, and paste it into your command line.
Test out ngrok
You can type the following into the command line:
./ngrok http 80
You should then see a server start up, as shown in
Figure 2. When an IP address appears, try typing that
IP address into your browser. You should see your
RUNNING
THE FLASK
SERVER
The Flask
server
runs in the
background
and needs
to be set up
in a different
command-
line window
from the
ngrok server.
TRIGGER
WORDS
Remember
that your
trigger words,
the words
that get Alexa
going, start
with “Alexa
trigger”.
A robot that will
respond to voice
commands
Figure 2 Your ngrok
readout should look
a bit like this