My son Gus is a very curious kid. I love that about him, and it’s something I try to foster at every opportunity. Growing up, my father was great at sharing information about the world around us, and showing us how we could find that information for ourselves. I think that’s an essential skill, and it’s important to me to pass it along.

So when Gus’ curiosity turned to the sky and the planes overhead, I was excited to show him that we could use FlightAware to see what airline each plane was affiliated with and where it was going. He was instantly engaged, and it became such a regular habit that now we have to look up pretty much every plane we see when we’re out and about.

We live about 8 miles north of T.F. Green Airport, which sees an average of 120 flights per day, so we see a decent number of planes. Most of the larger jets that serve T.F. Green use runway 5/23, and the takeoff and landing pattern for that runway has them flying generally over our neighborhood.

This past June, Alice sent me an Instagram reel, in which someone made a display for their apartment that showed flight information for the planes they could see out their window. Seeing a DIY project that combined tech and automation with ambient awareness of one’s environment was all the inspiration I needed. And as it turned out, I already had all the required components in my home to make my own.

Tools

The digital clock in our living room is a LaMetric Time that I gave Alice a few years ago for her birthday. It’s pretty and unobtrusive, and also highly customizable. Plus it has an integration with Home Assistant, which is just about the best home automation platform in existence, with near limitless potential.

I started out by looking to see what flight tracking APIs had Home Assistant integrations, and sure enough, there are a few. I settled on a custom component for FlightRadar24 because it’s free, rich in data, and decently customizable. Another intriguing option would be to set up my own ADS-B receiver, and I may yet do that in the future, but I opted to keep it simple for now.

Configuration

By default, the FlightRadar24 integration uses Home Assistant’s home zone as the center point of the area to look for flights. Since I already had the home zone configured, this required no customization.

Other important settings are the radius (i.e. how large a perimeter around my house) and the minimum and maximum elevation to monitor for planes. For radius, I wanted a big enough circle that a jet would come in range just as it started to become audible. I chose 2.5 miles (4,000 meters) to start, and this ended up working pretty well. For elevation, I considered setting a somewhat low ceiling so it would only track flights into/out of T.F. Green, but I opted to set it as limitless to see what else it would pick up.

With the integration configured, the only remaining step was to write an automation that would trigger a notification when a flight was nearby. I started testing it out by sending a notification to my phone, which allowed me to tweak the values included in the text. Once I was happy with it, I configured the notification for the LaMetric Time. I ended up liking the notification on my phone enough to keep it, but I added a condition that suppresses it if I’m away from home. I also set a 10-second delay for the notification on the LaMetric – that way I know about it in advance and can give Gus a heads up.

Here’s my final Home Assistant automation:

---
alias: "Notify When Flight Passes Overhead"
trigger:
  platform: event
  event_type: flightradar24_entry
condition:
  - condition: template
    value_template: "{{ trigger.event.data.aircraft_registration is not none }}"
variables:
  flight_info: >-
    {{
      trigger.event.data.airline_short
        if trigger.event.data.airline_short is not none
    }} {{
      trigger.event.data.flight_number
        if trigger.event.data.flight_number is not none
        else trigger.event.data.aircraft_registration
    }}: {{
      trigger.event.data.airport_origin_name
        if trigger.event.data.airport_origin_name is not none
        else trigger.event.data.airport_origin_code_iata
    }} {{
      "→ " ~ trigger.event.data.airport_destination_name
        if trigger.event.data.airport_destination_name is not none
    }}
  details_url: >-
    {% if trigger.event.data.flight_number is not none %}
      https://www.flightaware.com/live/flight/{{
        trigger.event.data.flight_number }}
    {% else %}
      https://www.flightaware.com/resources/registration/{{
        trigger.event.data.aircraft_registration }}
    {% endif %}
action:
  - if:
      - condition: state
        entity_id: person.ianw
        state: home
    then:
      - service: notify.mobile_app_ianw
        data:
          title: "Flight Overhead"
          message: "{{ flight_info }}"
          data:
            image: "{{ trigger.event.data.aircraft_photo_medium }}"
            url: "{{ details_url }}"
  - delay: 10
  - service: lametric.message
    data:
      cycles: 2
      message: "{{ flight_info }}"
      device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      icon: "15302"

Results

This was an easy and super rewarding project. It only took a couple hours to set up, and as soon as it was running we were learning way more about air traffic around us than we originally expected. We get frequent info about takeoffs and landings from T.F. Green, but we also see:

  • Daily international flights from New York JFK and Newark Liberty to European cities like Glasgow, Paris, Frankfurt, Nice, and Rome;
  • Light aircraft from nearby general aviation airports in Rhode Island such as North Central and Quonset;
  • Chartered flights for private air travel between Westchester or Teterboro and wealthy enclaves like Martha’s Vineyard and the Hamptons;
  • Helicopters conducting medical transport between Rhode Island Hospital and other hospitals in Boston and Worcester.

For jets in audible range, it’s perfect – the notification comes up on the LaMetric Time just as we start to hear the plane overhead. Gus is still learning to read, so he’ll ask where the plane is going and we’ll read it together. (I set the notification to cycle 2 times so we can read it again if we need to.) We’re less likely to hear smaller planes when they cross the 2.5-mile threshold, but they’re interesting all the same.

Takeaways

  • Home Assistant really is an amazing project with an incredible community of contributors. I have over 50 integrations configured now, and I frequently find new things to try.
  • FlightRadar24‘s API is free, and the custom component that makes it available to Home Assistant is trivial to set up (provided you’re used to installing custom components in Home Assistant). There’s also an OpenSky Network integration, which is intriguing. If I decide to set up my own ADS-B receiver I’d like to look into dump1090 and asdb2mqtt as well.
  • The LaMetric Time is a lovely device, but for what it’s worth, there are a lot of options out there that can receive notifications from Home Assistant. Heck, even my LG TV supports receiving notifications.
  • For folks who want all the nerdiness of ambient flight info without the prerequisites of Home Assistant plus a few hours of tinkering, there are people making off-the-shelf versions: (Disclaimer: I haven’t vetted any of these options, they just came up in my search results)
    • TheFlightWall is a (forthcoming) LED panel made by the creators of the Instagram reel that inspired this project. They’ve also open-sourced their version.
    • There’s a similar product called Flight Tracker LED, but the person whose DIY project inspired it advises folks to steer clear of it.
    • Titbyt apparently has a couple apps for flight tracking. Alice has one of these in her office now and she likes it.
  • Some self-contained DIY options:

Thanks for reading! If you have suggestions for other links or want to comment on this post, hit me up on Bluesky.