Planes-overhead ADS-B flight tracker widget for led-ticker.
Project description
led-ticker-flight
A planes-overhead ADS-B flight tracker plugin for led-ticker. It contributes a single flight.overhead widget that shows nearby aircraft — callsign, aircraft type, altitude + climb/descend cue, ground speed, track, and distance/bearing — pulled from the free, keyless adsb.lol API, in the visual language of an airport departures board.
The widget renders in one of three layouts depending on sign shape — a scrolling single-line crawl on a scale-1 sign, or a hi-res single-flight hero / wide multi-column dashboard on a scale-4 sign — chosen automatically or pinned explicitly. See design/README.md for the normative visual spec (palette, airline tail-fin marks, exact layout geometry) this widget faithfully reproduces. Several deliberate divergences from the prototype are documented in code: ticker back-fill for seamless looping, the empty-state label's fit-fallback, and a procedural 7×3 level bar in place of a glyph (each chosen where the prototype's own behavior contradicted its design prose or the hi-res charset it draws from); the prototype's blinking live-refresh pulse dot is dropped entirely (no other led-ticker widget carries an unexplained status indicator, and poll health is already visible in the web UI's Status tab); and hero/dashboard fade the whole card through black for 200ms at each end of a flight's dwell window when 2+ flights are tracked (a hardware-review finding — a hard cut between rotating flights read as a glitch on the physical panel; see Layouts below).
Prerequisites
- A working led-ticker install.
- Internet access on the Pi (the widget polls the adsb.lol API — no API key required).
- The latitude/longitude of your receiver (or antenna/home location) — or set
demo = trueto preview with a bundled sample feed instead.
Install
The widget auto-registers via the led_ticker.plugins entry point — once the package is installed, no [plugins] config change is needed.
Into a containerized led-ticker (recommended): add this package to config/requirements-plugins.txt (copy it from config/requirements-plugins.example.txt), then rebuild:
led-ticker-flight
# in your led-ticker checkout
docker compose up -d --build
Standalone (a venv that already has led-ticker):
pip install led-ticker-flight
See the led-ticker Plugins docs for the constraint-based install the Docker image uses.
Configuration
[[playlist.section]]
[[playlist.section.widget]]
type = "flight.overhead"
latitude = 40.7128
longitude = -74.0060
radius_km = 30
A complete, runnable example (with every field commented) lives at examples/flight.toml.
Field reference
| Option | Type | Default | Description |
|---|---|---|---|
latitude |
float | required (unless demo = true) |
Receiver location, -90 to 90. |
longitude |
float | required (unless demo = true) |
Receiver location, -180 to 180. |
radius_km |
int | 30 |
Search radius in kilometers, 2-460. Converted to nautical miles for the adsb.lol call. |
layout |
string | "auto" |
"auto" | "ticker" | "hero" | "dashboard". auto picks by sign shape (see Layouts below). An explicit "hero"/"dashboard" on a scale-1 sign falls back to ticker — hi-res is impossible there. |
max_aircraft |
int | 4 |
Cap on tracked aircraft, 1-8. The closest N (by distance) are kept. |
interval |
float | 10.0 |
Seconds between adsb.lol polls, 5-3600. |
demo |
bool | false |
Render the bundled 4-flight sample feed instead of calling the network. No coordinates needed. |
No font/color knobs — the design handoff pins them (see design/README.md); the semantic palette (ident white, altitude amber, speed green, track cyan, distance magenta, climb/descend cues) and airline tail-fin colors are fixed across every layout and sign.
Layouts
ticker— a single-line, continuously-scrolling BDF crawl through every tracked aircraft's full field set, dot-separated. Targets scale-1 signs (smallsign) where hi-res drawing isn't available.hero— one flight at a time, shown large: a swept tail-fin, a hi-res callsign, an airline-name/type line, a metrics line (vertical-rate cue, altitude, speed, track, distance), and paging dots. Rotates through the tracked flights on a fixed dwell. Targets narrower hi-res signs (scale > 1, < 400 physical px — e.g. bigsign).dashboard— the widescreen layout: hero ident on the left, four labelled metric columns (altitude, speed, track, distance) filling the rest of the width. Targets wide hi-res signs (scale > 1, >= 400 physical px — e.g. longboi).
layout = "auto" (the default) resolves at draw time from the canvas's scale and physical width, so the same config works unmodified across smallsign/bigsign/longboi deploys.
With 2 or more tracked flights, hero/dashboard fade the entire card through black for 200ms at the start and end of each flight's dwell window (0.4s total spent near/at black per rotation) instead of cutting straight to the next flight. A single tracked flight is just held — it never fades.
Data source
Aircraft come from adsb.lol's /v2/point/{lat}/{lon}/{radius} endpoint — free, public, no API key. Be a good citizen of the shared endpoint: the default 10s interval is already frequent for a keyless public API; don't lower it without reason. Aircraft missing a callsign, altitude, or position are dropped; the remaining set is sorted by distance and capped at max_aircraft.
Development
This package lives in the led-ticker-plugins monorepo. Run tooling from the repo root:
uv sync --extra dev
uv run pytest plugins/flight
uv run ruff check plugins/flight
uv run pyright plugins/flight/src
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file led_ticker_flight-0.1.0.tar.gz.
File metadata
- Download URL: led_ticker_flight-0.1.0.tar.gz
- Upload date:
- Size: 52.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b611f5fc27655b9280921d3c9541f13b1c0a04de6153e8d78bd35d46eb0b2d25
|
|
| MD5 |
1c52d00dae4caeed1a3d4c5af6794a95
|
|
| BLAKE2b-256 |
607bc33e1e7b55c89d65d94e19d3f59bb60d0777e413895706c6a4b56d4fa1bc
|
Provenance
The following attestation bundles were made for led_ticker_flight-0.1.0.tar.gz:
Publisher:
publish.yml on JamesAwesome/led-ticker-plugins
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
led_ticker_flight-0.1.0.tar.gz -
Subject digest:
b611f5fc27655b9280921d3c9541f13b1c0a04de6153e8d78bd35d46eb0b2d25 - Sigstore transparency entry: 2152593884
- Sigstore integration time:
-
Permalink:
JamesAwesome/led-ticker-plugins@bc85f1629910aa6b81c02bc54218a41681024ad4 -
Branch / Tag:
refs/tags/flight-v0.1.0 - Owner: https://github.com/JamesAwesome
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bc85f1629910aa6b81c02bc54218a41681024ad4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file led_ticker_flight-0.1.0-py3-none-any.whl.
File metadata
- Download URL: led_ticker_flight-0.1.0-py3-none-any.whl
- Upload date:
- Size: 21.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78e7b412da0883da8ac6981d8dc08932cb692a4739ecabb41939cbee57a17f18
|
|
| MD5 |
1d1ec0c91bfc28ce23dfb1cd439b39c0
|
|
| BLAKE2b-256 |
eb17a7dfc56d35ed046b893c1b53afc511f39e814f5f02a630ce72ab33ded338
|
Provenance
The following attestation bundles were made for led_ticker_flight-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on JamesAwesome/led-ticker-plugins
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
led_ticker_flight-0.1.0-py3-none-any.whl -
Subject digest:
78e7b412da0883da8ac6981d8dc08932cb692a4739ecabb41939cbee57a17f18 - Sigstore transparency entry: 2152593905
- Sigstore integration time:
-
Permalink:
JamesAwesome/led-ticker-plugins@bc85f1629910aa6b81c02bc54218a41681024ad4 -
Branch / Tag:
refs/tags/flight-v0.1.0 - Owner: https://github.com/JamesAwesome
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bc85f1629910aa6b81c02bc54218a41681024ad4 -
Trigger Event:
release
-
Statement type: