Skip to content

Integrations

Łukasz Nowak edited this page Aug 5, 2026 · 2 revisions

Integrations

All optional, all configured in the web panel (Settings tab) or on the device (gear icon > Integrations tab; the watchlist and flyover alerts sit on the Filters tab). An empty field means the feature is off.

Push notifications to your phone (ntfy.sh)

Free, no account needed.

  1. Install the ntfy app (Android or iOS).
  2. In the app, subscribe to a topic with a unique name you invent, e.g. jans-esp32flight-8341. Anyone who knows the name can read the topic, so make it non-obvious.
  3. Enter the same name in ntfy.sh topic and save.

You get a push for:

  • Emergency squawks (7500 hijack, 7600 radio failure, 7700 general emergency) within your radius
  • Watchlist aircraft entering your radius
  • Flyovers, with Flyover alerts (CPA) enabled: a heads-up a few minutes before an interesting aircraft passes nearly overhead, with distance and direction

Home Assistant / MQTT

Enter your broker URI as MQTT broker, e.g. mqtt://user:password@192.168.1.10:1883. The device announces itself via MQTT discovery, so an "esp32flight" device appears in Home Assistant automatically with sensors: nearest aircraft (callsign, route, distance), aircraft count, and session unique count. No YAML needed.

FlightAware flight numbers and routes

By default flights show radio callsigns (RYR638T). A free FlightAware AeroAPI key adds the commercial flight number (FR4238) next to it and uses the live origin and destination as an extra route source. FlightAware serves actual flight plans, so with a key set the routes become authoritative and stale entries from community databases stop mattering.

Create a Personal key at flightaware.com/aeroapi and paste it into FlightAware API key. Results are cached, so the free monthly credit is more than enough for continuous use.

Watchlist

Comma-separated registration or callsign prefixes in Watchlist, e.g. SP-LR,RCH,A388. Matching aircraft are highlighted in gold in the list and push-notified on entry. Military aircraft and notable heavies (A380, AN-124, C-17 and friends) are always highlighted, no entry needed.

Webhook

On every alert (emergency, watchlist, flyover) the device POSTs

{"source": "esp32flight", "title": "...", "message": "..."}

to the URL in Webhook URL. Point it at Node-RED, n8n, a Discord or Slack bridge, or your own endpoint.

Local ADS-B receiver (dump1090 / readsb)

If you run your own receiver (an RTL-SDR dongle on a Raspberry Pi with dump1090, readsb, or any feeder image), point Local receiver aircraft.json URL at its JSON output, e.g.

http://192.168.1.50:8080/data/aircraft.json

The device then reads aircraft straight from your antenna instead of the internet APIs: faster updates, no rate limits, and it keeps working without internet. When the receiver is unreachable, the device falls back to the internet sources automatically and returns to the receiver when it comes back.

Where is my aircraft.json?

Practically every feeder setup runs a dump1090-family decoder underneath, and that decoder serves the JSON we need. Find your receiver's IP (your router's client list, or the address you already use for its status page), then try these in a normal browser:

Your setup URL to try
Flightradar24 Pi24 image http://<ip>:8080/data/aircraft.json
fr24feed installed on top of Raspbian http://<ip>:8080/data/aircraft.json or http://<ip>/dump1090/data/aircraft.json
FlightAware PiAware / SkyAware http://<ip>:8080/data/aircraft.json or http://<ip>/skyaware/data/aircraft.json
dump1090 / dump1090-mutability / readsb (your own) http://<ip>:8080/data/aircraft.json
adsb.im / ADSB.lol images http://<ip>/tar1090/data/aircraft.json

You are looking for a page of raw JSON that starts with { "now": ... and contains an aircraft array. When one of the URLs shows that, paste exactly that URL into Local receiver aircraft.json URL and save. The header status line shows when the device is feeding from your receiver.

Two things that do NOT work: the Flightradar24 feeder status page (http://<ip>:8754) serves its own format, not aircraft.json; and flights.json from that page is not it either. If none of the URLs answer, your dump1090 may have its web server disabled: on Pi24 it is on by default, elsewhere start the decoder with --net.

Clone this wiki locally