What is it?
The Alexa METAR and TAF Reader skill is something I developed for pilots to check the airport weather at home. Airports with weather stations generate an hourly report called a METAR (METeorological Report). This is available in printed form and on the Internet. Additionally, many airports have a radio service called ATIS (Automated Terminal Information Service) that plays a recording the weather and other terminal information.
The content of METARs and ATIS, though similar, are not the same. This skill translates the METAR data to be as like ATIS as possible. ICAO aviation phonetics are used and wind directions are magnetic-north referenced. Also, ATIS often contains airport-specific information not present in METARs.
Pilots, this skill is not a substitute for real ATIS! Get a legal weather briefing before launching!
Due to popular demand, I have added a few more features of interest to pilots and non-pilots alike. It now reads TAFs (Terminal Area Forecasts) as well as METARs, and the user can configure the output format a bit.
How to Enable
From your Alexa, just say:
1 |
Alexa, enable airport weather. |
That should do it. If not, you can do it from the Alexa App on your phone, but you’ll have to look for it. This is Amazon’s landing page for the skill.
Basic Operation
The primary means I had in mind for calling up airports was by their four-letter ICAO identifier using ICAO phonetics. This actually works pretty well, since, like Alexa, ICAO phonetics are designed for maximum comprehensibility when read aloud over a noisy radio channel. The skill will also work with “regular” letter pronunciations, but Alexa is much more likely to misunderstand if you don’t use the phonetics.
For example, do get the weather at New York JFK, you might say:
1 |
Alexa, ask airport weather to get kilo juliet foxtrot kilo |
Note that the ICAO abbreviation for JFK airport is KJFK. All conterminous US airports start with ‘K’, and if you leave out the first letter and only give three, the skill will prepend a ‘K’, assuming you want a US airport.
However, you can certainly specify any international airport by using all for letters. For example:
1 |
Alexa, ask airport weather to get echo lima hotel romeo |
That’ll get you London Heathrow.
You can access any airport out of the thousands available from the Aviation Digital Data Service using this method.
As a secondary method, you can also access an airport by the name of the city it is in.
1 |
Alexa, ask airport weather to get Liverpool |
Will return the weather in Liverpool, England. Overall, though, my list of cities is limited, and biased strongly towards US and Canadian airports. Furthermore, if there are two cities of the same name, just naming the city will get you the one with the busier airport. Often, you can specify the other airport by also providing the state and country if appropriate.
1 |
Alexa, ask airport weather to get Portland |
1 |
Alexa, ask airport weather to get Portland, Oregon |
1 |
Alexa, ask airport weather to get Portland, Maine |
The first two will get your KPDX. The last one will get you KPWM.
In general, though, the city method is pretty error-prone, so I’m not a huge fan of it. I might take it out entirely.
Getting a Forecast (TAF)
All the examples above return the current weather, the METAR. Various users have asked if they could get a tool that also returns the weather forecast, the TAF. Well, you can do that similarly, just add the word “TAF” or “forecast” to your request:
Alexa, ask airport weather to get the forecast for kilo sierra foxtrot oscar
Gets you the TAF at San Francisco International.
1 |
Alexa, ask airport weather to get the taf for Los Angeles |
Gets you the forecast at LAX.
Note that terminal forecasts are essentially a written product. There is no verbal version of a TAF. This skill sort of just reads the TAF aloud as written, trying to do whatever makes the most sense — but if you ask me, it doesn’t make all that much sense to read a TAF out loud as they are quite long and detailed!
Non-aviation users, be aware that many fewer airports have TAFs than have METARs. There are thousands of US airports with weather reporting, but to a fist approximation, only the airports with commercial service will have terminal forecasts. If you get an error message getting a TAF, it is likely it doesn’t exist.
Customization
You can customize the way this skill works a little bit.
Wind direction
Winds on METARS are always true-north referenced, but on ATIS, they are magnetic-north referenced. This skill by default returns a magnetic-north result, for maximal ATIS “realism.”
You can change this:
1 |
Ask airport to set wind reference to [ true | magnetic ] |
Note that when the skill reads a TAF it will also follow this preference, though TAFs in real life are true-north referenced.
Visibility Unit
Americans use nautical miles. In most of the rest of the world, they use kilometers.
1 |
Alexa, ask airport weather to set visibility to [ miles | kilometers ] |
Note that when the skill reads out the visibility, if it is in miles, the words “miles” or “nautical miles” are not read, consistent with the custom in the US. If set to kilometers, you will hear the word “kilometers.”
Pressure Unit
Americans use inches of mercury to set their altimeters. The rest of the world uses millibar. Change it like this:
1 |
Alexa, ask airport weather to set altimeter to [ inches | millibar ] |
If you are having trouble getting the system to recognize “millibar”, you can try “bar.”
In millibar mode, the skill will precede the altimeter setting with “QNH”. In inches, you’ll get no unit, consistent with US custom. (See a pattern here?)
Temperature
All aviation weather products uses Centigrade. All. Always. However, some users like Fahrenheit, so you can change it:
1 |
Alexa, ask airport weather to set temperature to [ Fahrenheit | Celsius ] |
In Fahrenheit, the skill will say “Fahrenheit.” In Celsius it will not say the unit.
Default Airport
Stating an airport identifier using ICAO phonetics can get tedious. The system can be trained to remember one “default” or “local” airport. It is a two step process.
First, get the skill to read the airport weather you want using whatever method works for you.
Next, say
-
1Alexa, ask airport weather to store default airport
Subsequently, you can recall the default like this:
1 |
Alexa, ask airport weather to get the default airport |
or
1 |
Alexa, ask airport weather to get the local station |
Repetition
Airport ATIS transmissions are actually a short recording on a loop. The pilot can listen to it repeat as many times as he needs to copy the weather. Looping indefinitely would not be a good idea on Alexa, but you can have it repeat a few times for you.
1 |
Alexa, ask airport weather to set repeat to [ one | two | three | ... ] |
Only the numbers one through ten will be accepted. Note also that the TAF will not repeat, regardless of your setting. TAF is already insanely long to read out loud.
Alternative Phrasings
If you stick to the phrasing above, you should not have any problems. Nevertheless, I have tried to get the tool to respond to a bunch of common variations: get foo, get the weather at foo, give me foo, etc. However, it is certainly possible to confuse this skill. Let me know if there is an obvious and important “utterance” that you think the skill mishandles.
A Few Notes about What’s Under the Hood
This skill is hosted by Amazon Lambda. Lambda is a neat way to run code, but it is utterly stateless. That means that your preferences are stored in a separate database, Amazon DynamoDB.
The weather information itself comes from a server hosted by the Aviation Digital Data Service, or ADDS. In order to make sure this app doesn’t hit ADDS too much, the skill also caches weather reports and forecasts for up to three minutes. That means that the weather data you get may be up to three minutes older than the latest available. I thought this was a reasonable compromise to hitting the ADDS server for Every. Single. Request.
Questions and Comments
Feel free to contact me with suggestions at dave@toolsofourtools.org.
Also, if you are interested in the code, you can check it out on github: https://github.com/djacobow/alexa_metar.