Anki Cozmo is a little tiny robot, a great companion on your desk. Cozmo comes with a great personality. He is full of fun, he plays games with you, he can do tricks, move around, and generally creates a lot of joy. Cozmo comes with a camera that can detect faces and greet people and pets. It also has an SDK that allows you to customize Cozmo and create cool apps and IoT connected programs.

The Cozmo SDK comes with a bundle of examples and apps that you can play with and modify. There are a bunch of examples that connect Cozmo to IFTTT and use different channels like Gmail or sports news. I took the Gmail example and modified it to get Jenkins notifications. Here's how this works on a high level:

Step 1: Connecting to Cozmo From IFTTT

In order to connect to Cozmo from IFTTT, we need a computer running Cozmo exposed to the Internet. You can do this either by using a static IP or using a tool like ngrok, which sets up a secure tunnel to localhost running on your computer. To set up ngrok, follow the instructions here.

Run this command to create a secure public URL for port 8080:

./ngrok http 8080

Note the HTTP forwarding address shown in the terminal (e.g., http://4916890d.ngrok.io). This is required while creating the IFTTT applet.

WARNING: Using ngrok exposes your local web server to the Internet. See the ngrok documentation for more information: https://ngrok.com/docs

Step 2: IFTTT Jenkins Cozmo Script

The Cozmo SDK is presently available in Python. The IFTTT examples use the aiohttp module to create a web server with an endpoint with a handler to call the Cozmo SDK:

Step 3: Creating the IFTTT Recipe

IFTTT is a web service that lets you create chains of simple conditional statements, called applets. An applet is triggered by changes that occur within other web services such as Gmail, Facebook, Instagram, or Twitter. An applet may send an email message if the user tweets using a hashtag or copy a photo on Facebook to a user's archive if someone tags a user in it, or it can trigger an IoT device to a specific action.

In this example, we will create custom IFTTT Trigger and Action using the Maker Webhooks feature.

Select “Maker Webhooks" to set it as your action channel. Connect to the Maker channel if prompted.

Click “Make a web request" and fill out the fields as follows. Remember your publicly accessible URL from above (e.g., http://55e57164.ngrok.io) and use it in the URL field, followed by "/iftttJenkins" as shown below:

Finally, run the Jenkins job to test the setup. In response to the IFTTT web request, Cozmo should roll off the charger, raise and lower his lift, announce its status, and then animate and light up the cubes.

Here is video loop for above settings:

Running It Together

Here's a video with Cozmo's reaction to a passed build vs. a failed build:

You can also connect CI tools like Travis or Circle CI using the curl command to the Maker endpoint. We can add more actions to this web server and make Cozmo even more thrilling.