Skip to content

Restore and modernize the Planes plugin with live ADS-B providers#4926

Merged
alex-w merged 5 commits into
Stellarium:masterfrom
kamilzaras95-cmyk:aircraft-online-mvp
May 24, 2026
Merged

Restore and modernize the Planes plugin with live ADS-B providers#4926
alex-w merged 5 commits into
Stellarium:masterfrom
kamilzaras95-cmyk:aircraft-online-mvp

Conversation

@kamilzaras95-cmyk

Copy link
Copy Markdown
Contributor

Description

This PR restores the built-in Planes plugin on current Stellarium master and modernizes it into a working live aircraft plugin.

The original Planes work and the later revival attempt in #3091 provided the upstream basis for this plugin. This PR brings it back as a native Stellarium object module and replaces the old offline /
receiver-oriented approach with live online ADS-B providers.

Main changes:

  • restore plugins/Planes as a built-in static plugin on current master
  • integrate aircraft as native StelObject / StelObjectModule objects
  • fetch live aircraft data around the current observer location
  • support two providers:
    • adsb.fi
    • airplanes.live
  • draw aircraft directly in Stellarium without external overlay widgets
  • support selection, search, object info, and the standard Stellarium selection pointer
  • add a working configuration dialog and toolbar button
  • add safe refresh limits and provider-specific radius limits
  • keep live requests disabled until the user explicitly enables the plugin

User-facing behavior:

  • aircraft can be shown/hidden from the plugin button or configuration dialog
  • labels can be enabled
  • label content can be switched between flight number and aircraft model
  • refresh intervals below 15 seconds are blocked to reduce the risk of provider rate limits
  • provider websites are linked from the configuration panel
  • selected aircraft use the standard Stellarium selection marker

Technical notes:

  • the plugin uses dead reckoning between refreshes based on track, ground speed, and vertical rate
  • selected aircraft instances are preserved across updates by icao24, so the selection marker keeps following the aircraft after refreshes
  • provider-specific response differences are handled internally (aircraft vs ac payload keys)
  • the plugin is disabled by default in default_cfg.ini

This PR focuses on a usable upstream MVP and does not try to solve every future enhancement in one go.

Related:

Attribution:
This plugin builds on the earlier Planes work and revival effort, with the current live ADS-B integration and maintenance update by Kamil Zaraś (astronow.pl).

Screenshots:

  • Planes toolbar button and configuration dialog
image
  • Aircraft labels and selection marker in the sky
image
  • Aircraft info panel
image

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • This change requires a documentation update
  • Housekeeping

How Has This Been Tested?

Manual local testing on current Stellarium master build with the built-in Planes plugin enabled.

Tested areas:

  • plugin loads correctly at runtime
  • toolbar button works
  • configuration dialog opens without crashes
  • live provider switching works (adsb.fi / airplanes.live)
  • aircraft rendering works
  • labels work
  • selection and standard Stellarium pointer work
  • selection persists across refreshes
  • dead reckoning updates aircraft position between refreshes
  • refresh interval lower bound is enforced
  • provider-specific radius limits are enforced
  • provider links open correctly from the configuration dialog

Test Configuration:

  • Operating system: Windows 10 Pro 22H2 (build 22621.4387)
  • CPU: AMD Ryzen 7 3700X (8 cores / 16 threads)
  • RAM: 32 GB
  • Graphics Card: NVIDIA GeForce RTX 4070

Checklist:

  • My code follows the code style of this project.
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation (header file)
  • I have updated the respective chapter in the Stellarium User Guide
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

@github-actions

Copy link
Copy Markdown

Great PR! Please pay attention to the following items before merging:

Files matching src/**/*.cpp:

  • Are possibly unused includes removed?

This is an automatically generated QA checklist based on modified files.

Comment thread plugins/Planes/src/gui/PlanesDialog.cpp
@alex-w alex-w added the subsystem: plugins The issue is related to plugins of planetarium... label May 21, 2026
@alex-w alex-w added this to Plugin May 21, 2026
@github-project-automation github-project-automation Bot moved this to Backlog in Plugin May 21, 2026
@alex-w alex-w added this to the 26.2 milestone May 21, 2026

@alex-w alex-w left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the plugin!

It's good for me as first implementation and public testing feature, but IMHO informational box need to be redesigned and in future getting the ADS-B data also from connected real device will be very helpful.

@kamilzaras95-cmyk

Copy link
Copy Markdown
Contributor Author

@alex-w thanks!

I’m all for it. I wanted to do something I could get done quickly—that’s why I chose the API.
I plan to buy or borrow the equipment I need to develop the next feature.
As soon as I have the necessary equipment, I’ll get to work on the redesign and implementation ;

@Atque

Atque commented May 21, 2026

Copy link
Copy Markdown
Contributor

Very nice plugin! I think vertical rate could also be given in ft/min.

@kamilzaras95-cmyk

Copy link
Copy Markdown
Contributor Author

@Atque I will fix this. I hope today

@gzotti

gzotti commented May 21, 2026

Copy link
Copy Markdown
Member

Looks good with finally live data! Current wind means I have planes only out of sight, though, so cannot compare in this hour. The original Planes plugin also had track lines. Do you have plans to revive them?

Related, when I change the time in Stellarium, the original implementation moved the planes. Not sure what kind of data the online retrieval delivers or whether tracks can be constructed on which the planes then would be shown moving. Currently the planes seem to be plotted where they are "now" (system time). It then may be better to suppress plotting if not in realtime mode.

The color of the GUI panel title bar seems to differ from other plugin panels. Please try to harmonize with other plugins.

@Atque

Atque commented May 21, 2026

Copy link
Copy Markdown
Contributor

This plugin could probably use the same selection marker as the Satellites plugin.

@kamilzaras95-cmyk

Copy link
Copy Markdown
Contributor Author

I pushed a follow-up update that addresses the recent feedback:

  • @Atque the aircraft info panel now shows vertical rate in both m/s and ft/min
  • @Atque the selection marker now uses the same pointer style as the Satellites plugin
  • @gzotti the configuration dialog title bar is now wired the same way as other plugin dialogs, so its appearance matches the standard plugin panels
  • live aircraft are now shown only in real-time mode; outside real-time mode they are hidden and live updates are suppressed
  • the plugin status now reports this in the configuration panel

Regarding track lines and time changes:

I agree that the old Planes behavior was useful there. For the current live ADS-B implementation, the data source is fundamentally “live now”, not true historical trajectory data.

My current plan is to treat track lines and limited backward time playback as a follow-up improvement:

  • keep a local recent history buffer per aircraft while the plugin is running
  • use that for drawing recent track lines
  • allow limited backward playback only within that locally recorded history window
  • keep aircraft hidden again when going into future simulation time, or outside the retained local history range

That would provide a more honest time behavior without pretending to have full historical backend data.

@alex-w

alex-w commented May 23, 2026

Copy link
Copy Markdown
Member

@kamilzaras95-cmyk please update po/stellarium/POTFILES.in file also

@alex-w

alex-w commented May 23, 2026

Copy link
Copy Markdown
Member

I want to refactor infobox after merge to harmonize the data with other objects

@alex-w alex-w merged commit 5404370 into Stellarium:master May 24, 2026
14 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in Plugin May 24, 2026
@alex-w alex-w added the state: published The fix has been published for testing in weekly binary package label Jun 1, 2026
@github-actions

github-actions Bot commented Jun 1, 2026

Copy link
Copy Markdown

Hello @kamilzaras95-cmyk!

Please check the fresh version (development snapshot) of Stellarium:
https://github.com/Stellarium/stellarium-data/releases/tag/weekly-snapshot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state: published The fix has been published for testing in weekly binary package subsystem: plugins The issue is related to plugins of planetarium...

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants