FAA Airport Status smart home integration, free and open source

US airport delays from the FAA: ground stops, delay programs, departure and arrival delays, closures
The status of US airports in Gladys, as the Federal Aviation Administration (FAA) publishes it: ground stops, ground delay programs, departure and arrival delays, and closures. Handy before a trip to or from the United States, or to keep an eye on the airport of a relative's flight.
The data comes from FAA NAS Status, the FAA's open feed on the National Airspace System: no account, no key. This integration is not affiliated with the FAA.
Developed outside the United States: feedback welcome. It is built and tested on real FAA answers (a summer thunderstorm day, a winter storm, a quiet morning) and its container was run against the live feed; it has not yet run in many Gladys installations.
What you get
- A device per followed airport (JFK, ATL, SFO… or any FAA code): its status in words, a disruption level from 0 to 3, four yes/no (delays, ground stop, ground delay program, closure), the average and maximum delays of departures and of arrivals in minutes, and the cause (thunderstorms, wind, low clouds, heavy traffic…).
- A dashboard widget: the status of every followed airport, the most disrupted first.
- A scene trigger: the FAA declares or lifts delays, a ground stop or a closure.
- A scene action: read the status of an airport, with a sentence ready to send by message or to a speaker.
Requirements
- Gladys Assistant 5.1.0 or later.
- Internet access from the Gladys host (the integration calls
nasstatus.faa.gov).
Installation
- In Gladys, open Integrations → Install from GitHub.
- Paste
https://github.com/guim31/gladys-faaand install. - Open the integration's Configuration tab to follow airports (below).
Configuration
Settings
- Language of the texts: the language of the feature names (set when a device is created), of the statuses, of the causes and of the sentences sent to your scenes.
- Refresh interval: 5 minutes (default) or 10 minutes. A single request serves every followed airport.
Following an airport
Use Follow an airport with:
- its three-letter FAA code:
JFK,LGA,EWR,ATL,ORD,SFO… (for most airports, the code printed on your boarding pass); - or its four-letter ICAO code in the contiguous United States:
KJFK; - or the name of its city:
Atlanta,San Francisco. When several airports match (Chicago,Washington,New York), the answer lists them: follow the one you want by its code.
The 77 major airports the FAA tracks are known by name. Any other code is accepted as typed: the
FAA files events for smaller airports too (mostly closures), and ground delay programs for some
Canadian airports (YYZ, YUL).
Then open the Discover tab and create the device. Up to 20 airports.
Removing, checking the state
- Stop following an airport: type its code. Its device stays in Gladys until you delete it.
- Status: lists the followed airports, their current status, whether their device is created, and the last read of the FAA.
Devices
Each airport device has these features (names in the language chosen when it was created):
| Feature | Type | Value |
|---|---|---|
| Status | text | “Ground stop until 23:45 · Departures 121–135 min ↗” |
| Disruption level | level 0 to 3 | 0 normal, 1 delays, 2 ground delay program, 3 stop or closure |
| Delays | yes/no | a ground stop, a program, departure or arrival delays |
| Ground stop | yes/no | flights to this airport held at their origin |
| Ground delay program | yes/no | departures to this airport metered, with assigned delays |
| Closure | yes/no | closed by a NOTAM, now |
| Departure delay (average) | minutes | 0 when there is none |
| Departure delay (maximum) | minutes | 0 when there is none |
| Arrival delay (average) | minutes | the larger of the arrival delay and of the program |
| Arrival delay (maximum) | minutes | same |
| Cause | text | “Thunderstorms”, “Closure (NOTAM)”, “No disruption” |
Times are shown in the time zone of your Gladys. The arrows say whether the FAA expects the delays to grow (↗) or shrink (↘).
Dashboard widget
US airport status: a row per followed airport (with a created device), the most disrupted first: green for normal operations, orange for departure or arrival delays, red for a ground delay program, a ground stop or a closure. The caption gives the causes. The widget shows 10 airports at most: the most disrupted ones.
Scene trigger
Airport status changed: fires when the FAA, at a followed airport (or at the one you pick):
- declares or lifts a closure (
closed,reopened); - declares or lifts a ground stop (
ground_stop_declared,ground_stop_lifted); - declares delays (departures, arrivals or a ground delay program) or ends them
(
delay_declared,delay_lifted).
Pick the events you want in the trigger. The variables give the airport, the event, the status in words, the level and the previous level, the cause, the average departure and arrival delays and the expected end. Nothing fires at the first read after the integration starts: what was already there is not news. Delays are over only after two reads in a row without any (departure delays often come and go around the FAA's 15-minute threshold).
Scene action
Get an airport status: for a followed airport, gives a sentence (“EWR · Newark: Ground stop until 23:45 · Departures 121–135 min ↗. Cause: Thunderstorms.”), the status, the level and its name, delays, ground stop, ground delay program and closure as 1 or 0, the four delays in minutes, and the cause. Use them in a message, or in a “Continue only if” step.
Scene examples
- Before a flight: every morning at 6:00, get the status of
JFK; continue only if the level is greater than 0; send the sentence on Telegram. - Picking someone up: when a ground stop is declared at the arrival airport of the evening, send a message “Their flight will be late: ground stop at JFK, cause: thunderstorms”.
- Back to normal: when delays at
ORDend, announce it on the kitchen speaker.
Data, refresh and terms
The integration reads https://nasstatus.faa.gov/api/airport-events every 5 or 10 minutes, once
for every followed airport, and only when at least one airport device is created. This is the feed
of the FAA's own NAS Status page; it needs no key and the FAA publishes no quota for it. The
airports absent from the answer run normally.
- Ground stop: the FAA holds the flights bound for the airport at their origin, usually for storms or low visibility. The status gives its planned end.
- Ground delay program: the FAA meters the flights bound for the airport and assigns them a delay before take-off; its average and maximum count as arrival delays. A program announced for later counts from its start.
- Departure and arrival delays: reported by the airport, as a range (“16–30 min”) with a trend.
- Closure: a NOTAM closing the airport now. Closures with daily hours (“DLY 0430-0945”) count only during those hours; closures that let scheduled flights in, and restrictions for general aviation only, are ignored.
Troubleshooting
- The device shows no value: create it in the Discover tab; the values arrive within a few seconds.
- The connection status says “The FAA does not answer”: the feed is down or unreachable from your Gladys. The last values stay; the integration retries at every interval and says when it is back.
- An airport is never disrupted: check its code with Status. An airport that is not one of the 77 major ones rarely appears in the feed.
- More details: set
LOG_LEVEL=debugin the integration's environment; a normal read writes nothing at the info level.
Limits
- The FAA covers the United States (and a few Canadian programs): no other country.
- No flight-level data: the delays are the airport's, not your flight's.
- Restrictions for general aviation, de-icing and runway configurations are not shown.
- Feature names are set when the device is created.
- Closures by sunrise and sunset (“SS-SR”) count for their whole period.
- Up to 20 airports.
Credits
- Data: FAA NAS Status, a public service of the Federal Aviation Administration. This integration is not affiliated with nor endorsed by the FAA.
- Inspired by the Home Assistant FAA Delays
integration (Apache 2.0) and its
faadelayslibrary.
Configuration settings
These are the settings FAA Airport Status asks for in its configuration screen in Gladys.
| Setting | Type | Required | Description |
|---|---|---|---|
| How it works | section | No | Follow airports with the action below, then create their devices in the Discover tab. Everything comes from the FAA's open NAS Status feed: no account, no key. |
| Language of the texts | select | No | Language of the feature names, of the statuses and of the sentences sent to your scenes. Feature names are set when a device is created. |
| Refresh interval | select | No | How often the FAA is read: a single request for every followed airport. |
How to install FAA Airport Status in Gladys
- In Gladys, open Integrations: FAA Airport Status appears in the catalog, next to the native integrations, with a community badge.
- Click Install. Gladys pulls the Docker image (
ghcr.io/guim31/gladys-faa:1.0.0), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration). - Open the Configuration screen of the integration, fill in the settings, and save.
- You can also install it directly from its repository URL: https://github.com/guim31/gladys-faa.
FAA Airport Status requires Gladys >=5.1.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.
Not running Gladys yet? It is free and open source: follow the installation guide to get started.
About external integrations
FAA Airport Status is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.
- Browse all integrations, native and community
- Build and publish your own external integration
- Source code on GitHub — source of this documentation