Own UIs for dump1090 data

Just wondering what kind of UIs you have made yourself utilizing dump1090-fa jsons?

Basically I’m just looking for some more ideas to my own tiny little UI-project :slight_smile:

This is what I have made during some spare time on last couple weekends using a very quick and very dirty method. I have just writing a plain javascript in a single html without thinking much and without cleaning it almost at all. It’s maintainable for a while since there’s only about 700 lines in it, but before I start to clean the code up (if I just have time), it would be good to stop for a while and think ahead too :smiley:

Currently the map is manipulated with leaflet and it’s based on Mapbox / OpenStreetMap, the altitude graph is just plain HTML5 canvas and so is the sort of FD mock-up shown when hovering mouse over the aircraft callsign. So it’s very basic stuff and definitely not pretty code, but works for me :wink:


@juei I love the thermometer style flight level. It might get a bit too crowded for me as I sometimes get 200 aircraft! Good job :wink:


agreed, i loved the flight level/altitude graph…good work!

1 Like

Thanks for your kind words to both of you! :slight_smile:
@triggers, I think an optional filter by the map zoom level using map center coordinates would be one possible option to overcome the issue of high number of the flights in the FL-indicator (and maybe that would be applied to the whole list too). That could be somewhat easy to implement. Thanks for pointing that out!

Happy to help :wink: ( 20 characters)

1 Like

Hello. Nice work! Github link? :slight_smile:

1 Like

Thanks @ethereali! :slight_smile: I quickly added it to here. As said, it’s very, very dirty one and contains bugs and unfinished features. So no warranties, support etc. at all :smiley: I’ll try to update & fix it at some point, but I’m currently just very busy…

Along side of the filtering, I managed to have some time to add supplementary receiver option also to this, which is basically using second receiver data to add missing values the primary receiver might not have. The clean-up of whole thing is still pending though.

1 Like

Just in case someone would be interested in this, I’ve added some more features to this recently, e.g. weather map overlays (wind, clouds & rain) from OpenWeatherMap and filters & adjustment regarding those, airport & runway lists, landing / departing detection (not necessarily in very good shape yet) and some extra information of flight (ATC radio callsigns). Still no cleaning up made for the code, I’ve been concentrating more to new features - quite lazy from me, but since this is just for fun and not for work, I don’t care just yet :wink:

Current features:

  • OpenStreetMap (using Leaflet) displaying:

    • Aircraft position
    • Aircraft heading/track with a line which end point is in a position where the aircraft would be in one minute if the speed and and track would be the same
    • Aircraft information:
      • 1st line: callsign and squawk code
      • 2nd line: true heading, speed, flight level / altitude and altitude change (green=up, red=down)
    • All the airports & runways at current zoom level, if enabled. To update airports after map position/zoom change, cycle airport checkbox
    • Weather information from OpenWeatherMap; selectable layers are wind, clouds and/or rain
  • Mockup FD (not completed though) - can be displayed by hovering mouse over the aircraft callsign

  • Altitude / Flight Level Indicator of all the aircrafts visible on the map / on the table (if altitude information received)

  • Receiver status information:

    • Supports primary receiver and a supplementary receiver
    • Displays:
      • Current message rate (msgs / minute)
      • Last 5 min and 15 min peak, signal and noiselevels, messages and position messages in respective timeframe
      • Aircrafts in total received and aircrafts with position messages received
      • Maximum distance in currently shown aircrafts and in total in session (refresh will reset the max distance)
  • Filtering options:

    • Filter aircrafts visible on the map
      • When zooming in, the list of the aircrafts and Flight Level Indicator will display only those aircrafts which are visible on the map
      • Also limits the aircrafts to those which have position information
    • Enable / disable FD mockup display
    • Weather information:
      • Winds, Clouds and Rain map overlays
      • Range slider for the overlays opacity
    • Airports toggle
      • List of over 42000 runways is used to draw all the runways in visible map
      • Overall list credits to ourairports.com, see Open data @ OurAirports for more lists
      • Toggle on & off to refresh the runways displayed (dragging the map or zooming out won’t refresh automatically those yet)
      • Bigger (over 8000ft) runways are drawn with magenta color in the map and highlighted in blue background in the runway list under the map
      • Also the bigger airports (with over 8000ft runways) are used to detect if and aircraft is landing or departing to or from it. Must be within 30 miles of the airport, under 1000ft of alitude and descenting or climbing in certain rate
  • List of the aircraft information from primary receiver added by the information for supplementary receiver

    • Columns:
      • Callsign - hover mouse over to either display FD mockup and/or extra information:
        • ICAO hex number
        • Aircraft company name
        • ATC resolved call sign (used in radio communications)
      • Cat - A category of the aircraft, hover mouse to check explanation
      • Track - a heading of the aircraft, hover mouse to check aircraft’s current Roll, A/P set heading, altitude and QNH
      • Squawk code - hover over for the same information as in callsign (useful when FD display enabled)
      • Alt - an altitude of an aircraft in feet
      • Rate - Climb/descent rate in feet/min
      • GS - Ground speed
      • TAS - True air speed
      • Dist - Distance from the primary (or supplementary, if no primary position information available) receiver in kilometers
      • RSSI - signal level of last message (not only position messages), if over -3 dBi, background will be red (a bit too strong signal)
      • Seen - seconds from the last message received, if over 15s, the data will be in red, if over 60, the data will have red strike through line
      • Msgs - number of all the messages received for this aircraft
      • Recvd - Primary + Supplementary label shown respectively which has information of this aircraft, greened label for which has the position information
      • L/D - Possibly landing or departing aircraft detected - hover to check which airport and click to scroll to runway description of given bigger airport
    • In general, if primary receiver information lacks of some information, the supplementary information will be used
    • If position is not known by the primary receiver, the possible supplementary receiver position information is used

1 Like

I like the virtual PFD.


I’ve made some more updates to this monitor and added e.g. live receiver distance / direction meter (looking like an antenna gain map) and minimum altitude / distance graph. The latter one though is most probably not that useful, but I think the distance / direction meter (or reach meter or what-ever-it-should-be-called) might prove to be somewhat useful in future when experimenting with antennas. I guess time will tell if so. Also finally had a bit time to separate the javascripts in respective files and transferred styles into a CSS -file. Some bugs still exists, but it seems to be just too fun to make new features instead of fixing bugs :wink:

1 Like

Thanks for your sharing.
Good work
Is it possible to enlarge the map.
Which file should I modify
Thank you

Thanks @LFBDBORDEAUX! Yeah, I have considered to add a sort of a full screen map feature at some point, but so far I wanted to add some other features first. Also, unfortunately the style in general is not responsive at all (i.e. adapting to browser device screen sizes), but changing that would require quite a lot of time from me since I’m not by any means a front end web developer :wink:
As a sort of a hack you could try to modify the #mapid style height and width values in map_monitor.css. You also might want to alter & experiment the other styles too in order to get e.g. runway/airport list table to same width.

Thank you for your reply
I put the following settings
height: 800px; width: 1200px

1 Like

Looks great - Will take a look later this week…

Good work :ok_hand:

1 Like

I just quickly added also a cumulative list of the flights grouped by the company under the altimeter graph section.
Now I’m beginning to worry a bit about the performance of all this since there’s now quite a lot of memory intensive lists, not at all optimized array handling etc. For me in Finland and with not-so-great performing receivers it seems to work ok, but I’m not really sure how does it perform with well-built receivers and/or crowded places.
I’m just wondering if someone could please test if it works at all with “normal” load? (Or anyways working at all? :wink: ) I would really appreciate it :slight_smile:

You should ask @keithma , he has a very “crowded” site. Try sending him a PM, maybe he is interested or willing to test.

1 Like

What’s “normal”? I just set it up, at midday on a rainy Saturday I am bouncing around between 40-75 planes, and a message rate around 300.

I unzipped to a folder on a new-ish Macbook Pro, edited my details into the config.js file, and opened the map-monitor.html in Chrome. I am finding it to be a little bit jittery on launch, but fairly smooth after that.

Issues that I ran into:

  • I apparently forgot the difference between latitude and longitude when I entered my data. Map centering was (obviously) screwed up. Clearly my own fault.
  • For some reason it won’t communicate with my FlightFeeder 978. I tried to set it up as a secondary receiver so that local GA aircraft would be included in the data, but I get a recurring “ADSB 2 Fail” message. This is probably caused by the FlightFeeder itself, as I can’t get it to feed to VRS either, and all of the normal ports seem to be closed.
  • Runways isn’t working. I get a “Runways Fail” message. The .csv file exists in the folder, and I can see where it is being called by runways.js, but no dice. Not sure where to look.
  • I am probably going to have to mess around with your .css. The tiny fonts in red/blue/yellow on the dark background is a little bit tough on my old eyes. Also, lots of wasted space on my screen.
  • It probably wouldn’t hurt to mention that the api key issued by openweathermaps takes some time to activate (in my case, about an hour). I spent most of that hour trying to troubleshoot the reason I was getting errors for wind/rain/clouds
  • The purpose of the “label” setting in the config wasn’t immediately clear to me (made worse by not being able to get my FlightFeeder to work), but it seems to be an arbitrary name assigned in order to tell them apart, and in your use case you call them W for west and E for east? I changed mine to “main” and “978” and they seem to display correctly in the columns. Doesn’t look like there is space for anything much longer though.

Here’s how it looks on my screen:

1 Like

Ok, figured out part of why my FlightFeeder wasn’t working. The aircraft.js file has the path to the aircraft.json file hard coded to “http:///dump1090-fa/data/aircraft.json”.

Two issues with this:

  1. dump1090-fa is being depreciated, and should be replaced with ‘skyaware’. Tried to edit this, but there seems to be a small difference (missing carriage return?) between the aircraft.json files returned. Haven’t taken the time to explore further.
  2. 978 feeders don’t use dump1090 or skyaware. Depending on the version, it needs to be changed to either ‘dump978-fa’ or ‘skyaware978’. In my case I was able to use ‘skyaware978/data/aircraft.json’ to eliminate the error, but I can’t figure out where they hid stats.json on the 978 feeders.

Since I can’t get ssh access to the FA provided FlightFeeder, does anyone have a current 978 install who could figure out the path to the stats file for me?

Doesn’t exist, dump978 doesn’t write a stats file.