Skip to content

aaroneiche/echo-led-demo

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

Echo LED Control Demo

This project is a simple demo of controlling an WS2811 RGB LED strand with an Amazon Echo.

Components

secure.js is the application. It runs a webserver, listens for requests coming from an Amazon Echo, carries out the request (a color change) and generates/sends a response. Because of the SSL requirement of Echo interactions, the web server is HTTPS only. You will need to provide certificates (Key, Certificate, and CA) In this file you must configure which serial port to use, and the certificates. You'll need to turn on port forwarding on your router at home to get requests to your computer (or Raspberry Pi or whatever you run this on.)

arduino.ino is Arduino firmware. It receives serial data (through whatever port you define) and writes out the RGB data to the WS2811 strand. It depends on Adafruit's NeoPixel library.

Setting up an Echo

In order to make all this work, you're going to need to setup your Amazon Echo with a skill to interact with your server. Here are some settings information

Skill Type: Custom Interaction Model

Name: Whatever you want to call it.

Invocation Name: I used Oberon because it was unique phonically, and I enjoyed commanding a magical King. I'd prefer you not use Oberon or if you do, don't publish a skill using it.

Interaction Model

This is where all the important info for the skill goes

Intent Schema
{
    "intents": [
     {
         "intent":  "SetColor",
         "slots": [
           {
             "name":"color",
             "type":"LIST_OF_COLORS"
           }
         ]
     },
     {
          "intent": "Lights",
          "slots": [
              {
                "name":"channel",
                "type":"CHANNEL_VAL"
              },
              {
                "name":"to",
                "type":"ON_OFF"
              }              
          ]
     }
  ]
}
Custom Slot Types
CHANNEL_VAL	1 | 2 | 3
LIST_OF_COLORS	blue | red | green | yellow | orange | purple | white
ON_OFF	ON | OFF
Sample Utterances
SetColor change color
SetColor change the color
SetColor change color to {color}
SetColor change the color to {color}
SetColor set color to {color}
SetColor set the color to {color}

Lights turn {to} the lights
Lights turn {to} light {channel}

Configuration

You'll need to use an HTTPS endpoint (because you can't plug your Arduino into a Lamba function) I have a domain I point back home - you should be able to use a dynamic DNS domain.

SSL certificate

As mentioned above, you'll need an SSL cert. Amazon didn't seem to respect Let's Encrypt certificates when I built this, it may have changed since then. You can use a Self signed certificate though because you're only running this at home and not publishing the skill.

Everything else in the config is there for published skills. Once you get it setup, you can test commands against your server.

This project is detailed at this blog post, and a video demonstrating the project can be found at Youtube.

About

An Amazon Echo LED demo project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages