Filament Control With Amazon Echo

Automation through voice commands

What was our motivation?


We are in that age and generation where everything is automated. Why do we need to automate? Well, because we are lazy. Time is becoming more and more precious every passing minute. Automation gives us more time to do and think about other important things. In our project, we are going to automate the lights through voice control and event scheduling. Turning the lights on/off, changing their brightness, varying their colors by specifying the moods, setting different whites are some of the basic functions one would need to control their bulbs. Our motivation for this project is to help someone with WigWag filaments to control these smart leds using Amazon Echo or what we prefer to call, Alexa.

What we used...


Alexa!!

Amazon Echo

Amazon Echo is a wireless speaker and voice command device from Amazon.com. The device responds to the name "Alexa"; this "wake word" can be changed by the user to either "Amazon" or "Echo". The device is capable of voice interaction, music playback, making to-do lists, setting alarms, streaming podcasts, playing audiobooks, and providing weather, traffic and other real time information. It can also control several smart devices.

Smart Lights!!

Wigwag LED Lighting

These are smart bulbs by WigWag which communicate with a border router through 6LoWPAN. The brightness, color, color temperature and power can be controlled using the local server running DeviceJS APIs.DeviceJS is a software platform for developing applications for the Internet of Things. More specifically, DeviceJS enables seamless control of and interaction between smart devices of different protocols and manufacturers. The DeviceJS APIs exist in conjunction with the DeviceJS server to facilitate the interaction between applications and devices of various types over a common interface. A DeviceJS script can play many roles such as informing the system of new types of devices, new device capabilities, or new instances of devices. They can also control and monitor devices in order to automate things.

How did we do it?


MQTT: Message Queue Telemetry Transport

MQTT allows devices to send (publish) information about a given topic to a server that functions as an MQTT message broker. The broker then pushes the information out to those clients that are subscribed to the client's topic. MQTT is a good choice for wireless networks that experience varying levels of latency due to occasional bandwidth constraints or unreliable connections. Should the connection from a subscribing client to the broker get broken, the broker will buffer messages and push them out to the subscriber when it is back online.

How it works?!


In our project, we have created a custom skill for Alexa to understand the phrases used by the customer and communicate that to our local server to control the WigWag lights and adjust its attributes suiting his/her needs. The customer can also schedule his/her requests for a specific date and time or even ask Alexa to check with the TI Sensor tag to check the intensity of light and adjust the bulb attributes based on the readings from the tag. We have managed to have this seamless integration between Alexa and WigWag filaments through the use of MQTT protocol which allows Alexa to publish these requirements and the local server to subscribe to these requirements. All the customer has to do now is to say "Alexa, ask WigWag to turn on the lights" and voila the lights are on!

How to converse...


Example user interactions:
One-shot model:
User: "Alexa, ask wig wag to turn on the lights at 11:30 AM on Friday."
Alexa: "Turning the lights on ..."
Dialog model:
User: "Alexa, open Wig Wag."
Alexa: "Welcome to Wig Wag."
User: "Set mood to red filament at 6:00 PM today."
Alexa: "Changing the mood..."

How it looks...


Showing it off..


People behind this...


People who inspired the above people....


University of Southern California:
Professor. Bhaskar Krishnamachari
Teaching Assisstant: Pradipta Ghosh
Sponsors:
WigWag
Special Thanks to Yash Goyal

Github Link