- (2016.11.17 @ 19:15) Submitted for certification
- (2016.11.20 @ 20:02) Resubmitted with updates for certification
- (2016.11.22 @ 07:06) Resubmitted with response string typo fix
- (2016.11.25 @ 01:21) Skill is live!
- (2017.02.23 @ 23:41) Skill is live for the English (U.K.)!
It's a bird! It's a plane! It's... a helicopter?! Or maybe that's actually a blimp?
There's something inherently fascinating about vehicles that can fly. The way they defy gravity and take to the skies with three-dimensional freedom is a truly amazing feat of human engineering. Many a child- and also many of us old enough to have a child of our own- love to watch airplanes criss-crossing overhead. But what if instead of passively watching them go by and speculating about their manufacturer, model, owner, and altitude, we could actually ask and find out about those attributes?
Thanks to the ADS-B Exchange API, it's possible to answer these kinds of a questions. Thanks to the API's data, compiled from a collection of ADS-B receivers all around the world, real-time information about anything that flies is available for us to do something useful with. This project uses an Amazon Alexa-powered device, AWS Lambda, the Google Maps Geocoding API, and the ADS-B Exchange API to give basic information about the lowest aircraft flying above a given location.rhomVUI Diagram:
**Note: These instructions assume a basic familiarity with Python, the Alexa Skills Kit service, AWS Lambda, and the Amazon Developer portal in general. If you're unfamiliar with one/all of those, check out the great tutorial here for more information on how to easily get started with your very own Alexa Skill.
- Sign-in to the AWS Developer dashboard and create a new Alexa Skills Kit skill. Give it a name, invocation, and click "Next" to continue.
- Download/clone the source code.
- Navigate to the code repository and open the
/alexadirectory. There should be two files:
- Copy the contents of the schema and utterance files to the skill's Interaction Model. Be sure that there is only one intent/utterance pair per line, as seen above, then click
- Open a new browser window and navigate to the AWS Developer portal, and then open the AWS Lambda service dashboard.
- Create a new AWS Lambda function using the "Blank Function" blueprint and Alexa Skills Kit as a trigger.
- At this point you'll want to also go and get a Google Maps Goeocoding API access key. You'll need that shortly.
- Back in the top level directory of the downloaded source code, make a copy of
config.py.exampleand rename it
config.py, modifying its contents with the Geocoding API key you just acquired and the Alexa Skills Kit ID.
- Put all of the files in the project folder into a single
.ziparchive and upload it to your AWS Lambda function. (Tip: You need to put all of the files and folders as-is directly into the archive, without any upper-level containing folder.) For the lambda function handler, create a custom role and accept the default values. (
lambda_basic_executionis the type you're after.)
Nextand continue with all of the defaults to deploy your lambda function.
- Copy the ARN number you are given and paste it into the Alexa Skills Kit window that you left open in an earlier step. Click
Nextto continue, and finish filling in details about the skill.
- Finally, submit your skill for certification. You're done! Now sit back and wait to hear back from the certification team informing you of a successful publication!
In its current state, this skill works best for locations farther away from an airport, because for someone living there, the lowest aircraft is most likely to be the only aircraft that is easy to see. Try asking, "Alexa, ask Air Traffic Control what is flying over New York City," and you're likely to get information about an aircraft mere feet above the ground that is about to touch down or take off from one of the city's airports.
There are a few improvements planned that should help, such as a finer-grained location search. It would also be great to be able to answer even more questions, ranging from simple to add (highest aircraft) to more complicated (number of specific aircraft). When time allows, these will be added.
This skill will always be limited by the crowd-sourced data provided by the ADS-B Exchance API: if that service goes down, then the skill won't be able to find any aircraft. Likewise, if a piece of information isn't publicly available, then the skill can't report it. That being said it's still amazing what they've made available for free use.
Hope you enjoy using the Air Traffic Control skill!