r00b / roob1090

Monorepo for custom flight tracking stack for localized ADS-B tracking
https://aircraft.robsteilberg.io
GNU Affero General Public License v3.0
4 stars 0 forks source link
adsb aviation flightaware opensky

roob1090 monorepo

Overview

roob1090 (an amalgamation of roob, my username, and 1090, the frequency over which aircraft broadcast ADS-B signals) is a stack for harvesting and aggregating ADS-B data.

A live demo of the entire roob1090 stack in action can be seen on my personal website. You can also directly hit the API at aircraft.robsteilberg.io; see aircraft.robsteilberg.io/airports/boards/kdca to see the current board of aircraft movements for KDCA, or aircraft.robsteilberg.io/aircraft/valid to see all valid aircraft currently being tracked.

roob1090 contains three packages and one submodule:

  1. dump1090 is a program originally written by anitrez and maintained by FlightAware that parses ADS-B signals received through an antenna into readable JSON. roob1090 uses FlightAware's fork of dump1090. It is included as a git submodule and contains some custom scripts for running dump1090. See its README for details.
  2. pump1090 is a Rust program that reads a JSON dumpfile generated by dump1090 and sends it to a WebSocket endpoint. See its README for details.
  3. serve1090 is an express Node application that scaffolds a server for receiving data through a WebSocket, aggregating and processing it, exposing an API to retrieve it, and broadcasting it via WebSocket to clients. See its README for details.
  4. piTemp is a Python script for monitoring the core temperature of a Raspberry Pi running Buster or a related distribution of Raspbian. See its README for details.

Monorepo installation

  1. git clone git@github.com:robertsteilberg/roob1090.git
  2. git submodule init
  3. git submodule update will fetch dump1090
  4. Follow the individual READMEs for each package to initialize the dependent environment variables

Remarks

I created this stack as a personal exercise to achieve the following goals, in descending order of importance:

  1. As someone who lives next to and with a direct view of Washington Reagan National Airport, I wanted to be able to see an aircraft landing or taking off and immediately know its flight number, origin or destination, aircraft type, and other information without consulting/paying for a public API
  2. Record and analyze flight trends into and out of DCA and the surrounding airspace
  3. Take up ADS-B flight tracking as a hobby and contribute to the flight tracking community by sending data to aggregates like FlightAware
  4. Learn Rust and Raspberry Pi
  5. Build a "full stack" application that harvests data and exposes an API and hone my back-end development skills
  6. Develop software for something other than my full-time job

This stack should require minimal development to make it useful for any airspace or airport other than DCA; details on how to do this are included in the serve1090 README.