Code Monkey home page Code Monkey logo

pyairwaves's Introduction

pyAirwaves, realtime planes and boats display on map with rtl-sdr

Build Status

Screenshot

screenshow

Licensing

This project is licensed under AGPL v3, except a few files in js and css which are GPL v3 from AirSuck project. See LICENSE.other file.

What is it

This project use the AirSuck frontend with new features, improvements and uses Leaflets maps.

The entire backend haven't been kept and then entirely write from scratch.

pyAirwaves will use dump1090 and rtl-ais daemons to send real-time display of airplanes and boards to a maps for display.

Some more features will be available like airplane picture, company, and statistics.

Requirements

  • redis server
  • postgresql >= 10 (should work with lower but you are on your own)
  • python >= 3.6
  • elixir >= 1.5
  • at least 5G of disk space on the server running nginx (tile caching)
  • an ADSB source (dump1090)
  • an AIS source (rtl-ais)

Setup

See docs/install.md

Daemons/scripts:

  • airwaves_adsb_client.py will connect to dump1090
  • airwaves_ais_client.py will connect to rtl-ais
  • simulator_adsb_real_datas.py instead of connecting to a remote dump1090, it will replay 15minutes of ADS-B datas
  • simulator_adsb_coordinates.py instead of connecting to a remote dump1090, it will replay three planes looping somewhere in the USA
  • simulator_ais_real_datas.py instead of connecting to a remote rtl-ais, it will replay a few minutes of AIS datas
  • installation/*.service systemd services files for the daemons and production server

Docs

Various docs can be found in the docs/ folder.

Contact

Dashie [email protected]

pyairwaves's People

Contributors

dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar rhaamo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

pyairwaves's Issues

Improve markers bounding box

Markers bounding box is huge and not practical in crowded places.

The bounding box needs to be way smaller.

Also to be taken into account, markers should be rendered on canvas for performance purposes.

client threading

currently airwaves_adsb_client only handle ADSB and no threading.

the new client needs to handle ADSB and AIS, do threading (restart if fails) and the socket part needs to restart too if failed.

Archives pages & handling

Common to AIS and ADSB

  • Stats page per day, month, year

    • total vehicles
    • countries
    • airlines
    • the above for ais
    • the above for adsb
  • journey detail page

    • ship
    • aircraft
  • detail page

    • ship
    • aircraft
  • total coverage polygon per source

  • Pruning of old messages because that's going to take space quickly

Multiple sources

Being able to use multiple ADSB or AIS sources would be great.

That adds another issue : deduplication.

The needed refactoring is:

  • airwaves_*_client.py pushes to a redis queue 'collector'
  • a daemon will run and listen to 'collector', do some dedup, and then push them to 'state' queue
  • backend will then uses 'state' queue instead of 'default' one

Backend feature requests

What needs to be implemented, or fixed:

  • Log every spot in archives
  • Statistics of archives (day, month, year)
  • Coverage plot of the receiver (AIS, ADSB), per source
  • Non-map template
  • Error page
  • AIS: Send IDs+text instead of only text; Front can uses both for ease.

APRS support

airAPRS type, struct extended for sub-type (icon change) and a few other things.

same expiry as the rest except base-station.

display by using a filter r/lat/lon/radiusKM

New Frontend overhaull

The frontend needs serious work.
Actual code fails to load frequently and isn´t that great.

A POC in Vue is a work in progress but code changes are way harder than expected, and the whole thing is harder because of reactivity issues.

Frontend feature requests

What needs to be implemented, or fixed:

  • Always show MMSI of ships in table
  • Specific markers for non-ship (like Coastal station, SAR aircraft, ...)
  • Better markers icons
  • When expiring markers, grey them before deletion
  • On sidebar opening, the right icon isn't always selected
  • Quick filter on sidebar
  • Overlay for airports (GEOJson)
  • Aircraft picture, from DB infos
  • Icon should follow bearing (implementation seems wonky)

AIS support

AIS RAW datas available in real_datas_test.py.
AIS support is beta.
No support of fragmented messages.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.