The Aircraft Radar skill for Amazon Alexa uses live ADS-B radio signals, collected by volunteers, to tell you what airplanes are around you.
This top-level README covers technical topics relevant to development of the skill codebase.
- To install the skill, see Aircraft Radar skill on Amazon.
- For a general introduction to the skill, read the skill website.
- For voice UI design and usage, read skill/README.
This is a standard Node application which requires Node v12. It should work with newer Node versions and versions as old as 8, but it's currently deployed with v12.
On macOS,
brew tap homebrew/cask-versions
brew install node@12
# then, in your shell:
export PATH="/usr/local/opt/node@12/bin:$PATH"
This application is deployed to AWS Lambda. You can probably run it elsewhere, but it’s specifically designed for and tested with Lambda.
The skill requires my geocoding web service to be deployed, and you’ll need an API key to access it (see “Environment Vars” below).
The skill requires my aircraft images web service to be deployed, and you’ll need an API key to access it (see “Environment Vars” below).
Per package.json
, in production this application requires alexa-sdk
, request
, and request-promise
.
Install dependencies, including those for development, with npm install
.
Once you have an API key for the geocoding service and aircraft image service, run source .env.dev
in your shell before running mock requests (see the next step). You can create this file by copying .env.sample
and filling out the empty values there.
package.json
defines a script that can be used to run a mock request for every supported intent.
Start by running npm run mock-nearest-aircraft
, and see package.json
for the full list.
(You’ll have to run this after setting the required environment variables in your shell.)
Use scripts/utterance-gen.py
to programmatically generate variants of utterances which can be grafted into the skill JSON file.
npm run package
generates a zip file suitable for uploading to AWS Lambda. It’s placed in the products
subdirectory. (See scripts/package.sh
.)
npm run deploy
uses the AWS CLI tool to deploy the Lambda function. Install aws
via brew install awscli
. The script respects the AWS_PROFILE_NAME
environment variable, if set. (See scripts/deploy.sh
.)
npm run deploy-website
rsyncs the www
folder to the public website.
ADSBX_API_KEY
is the API key for the ADS-B Exchange API.GEOCODE_API_KEY
is the client key for my geocoding web service.IMAGE_API_KEY
is the client key for my aircraft images web service.
Aircraft data comes from ADS-B Exchange. Be nice to them:
- Donate to them.
- If possible, run an ADS-B receiver and feed them.
Visit https://www.icao.int/publications/DOC8643/Pages/Search.aspx, observe network requests in the Inspector, and download the AircraftTypes file.
For Manufacturers, visit https://www.icao.int/publications/DOC8643/Pages/Manufacturers.aspx and download the Manufacturers file it loads.
The skill’s code and related data (eg. the utterances file) is licensed under GPLv3. See LICENSE.
The skill’s icon is stored in this repository but is not available for use by others under any circumstances.
Chris Dzombak
These links were interesting and inspired me to start on this project, but I wanted something more generally useful and that could use data from all over the place: