A database backend for the Open Glider Network
 
 
 
 
 
 
Go to file
Konstantin Gründger a77cdb6787 Fix postgis problem 2017-10-03 20:20:32 +02:00
alembic Wrong table... 2016-11-01 10:42:23 +01:00
config Add Vagrantfile 2016-09-23 20:27:00 +02:00
ogn Fix bulkimport 2017-10-03 15:35:22 +02:00
tests Fix string representation of models 2017-10-03 12:59:45 +02:00
.gitignore
.travis.yml Fix postgis problem 2017-10-03 20:20:32 +02:00
CHANGELOG.md Preparation for 0.3.0 2016-10-22 09:22:40 +02:00
CONTRIBUTORS Appended contributors list 2016-09-28 11:31:40 +02:00
LICENSE
MANIFEST.in
README.md Fixed badges 2017-09-16 09:19:21 +02:00
Vagrantfile Add Vagrantfile 2016-09-23 20:27:00 +02:00
alembic.ini
manage.py
requirements.txt
setup.cfg
setup.py Updated to python-ogn-client v0.8.0 2017-10-03 14:14:48 +02:00

README.md

ogn-python

Build Status Coverage Status

A database backend for the Open Glider Network. The ogn-python module saves all received beacons into a database with SQLAlchemy. It connects to the OGN aprs servers with python-ogn-client. It requires PostgreSQL and PostGIS.

Examples

Installation and Setup

  1. Checkout the repository

    git clone https://github.com/glidernet/ogn-python.git
    
  2. Install python requirements

    pip install -r requirements.txt
    
  3. Install PostgreSQL with PostGIS Extension. Create a database (use "ogn" as default, otherwise you have to modify the configuration, see below)

  4. Optional: Install redis for asynchronous tasks (like takeoff/landing-detection)

    apt-get install redis-server
    
  5. Create database

    ./manage.py db.init
    

There is also a Vagrant environment for the development of ogn-python. You can create and start this virtual machine with vagrant up and login with vagrant ssh. The code of ogn-python will be available in the shared folder /vagrant.

Usage

Running the aprs client and task server

To schedule tasks like takeoff/landing-detection (logbook.compute), Celery with Redis is used. The following scripts run in the foreground and should be deamonized (eg. use supervisord).

  • Start the aprs client

    ./manage.py gateway.run
    
  • Start a task server (make sure redis is up and running)

    celery -A ogn.collect worker -l info
    
  • Start the task scheduler (make sure a task server is up and running)

    celery -A ogn.collect beat -l info
    

To load a custom configuration, create a file myconfig.py (see config/default.py) and set the environment variable OGN_CONFIG_MODULE accordingly.

touch myconfig.py
export OGN_CONFIG_MODULE="myconfig"
./manage.py gateway.run

manage.py - CLI options

usage: manage [<namespace>.]<command> [<args>]

positional arguments:
  command     the command to run

optional arguments:
  -h, --help  show this help message and exit

available commands:
  
  [bulkimport]
    convert_logfile        Convert ogn logfiles to csv logfiles (one for aircraft beacons and one for receiver beacons) <arg: path>. Logfile name: blablabla.txt_YYYY-MM-DD.
    create_indices         Create indices for AircraftBeacon.
    drop_indices           Drop indices of AircraftBeacon.
    import_csv_logfile     Import csv logfile <arg: csv logfile>.
  
  [db]
    drop                   Drop all tables.
    import_airports        Import airports from a ".cup" file
    import_ddb             Import registered devices from the DDB.
    import_file            Import registered devices from a local file.
    init                   Initialize the database.
    update_relations       Update AircraftBeacon and ReceiverBeacon relations
    upgrade                Upgrade database to the latest version.
  
  [gateway]
    run                    Run the aprs client.
  
  [igcexport]
    write                  Export igc file for <address> at <date>.
  
  [logbook]
    compute_logbook        Compute logbook.
    compute_takeoff_landingCompute takeoffs and landings.
    show                   Show a logbook for <airport_name>.
  
  [show.airport]
    list_all               Show a list of all airports.
  
  [show.deviceinfos]
    stats                  Show some stats on registered devices.
  
  [show.devices]
    aircraft_type_stats    Show stats about aircraft types used by devices.
    hardware_stats         Show stats about hardware version used by devices.
    software_stats         Show stats about software version used by devices.
    stealth_stats          Show stats about stealth flag set by devices.
  
  [show.receiver]
    hardware_stats         Show some statistics of receiver hardware.
    list_all               Show a list of all receivers.
    software_stats         Show some statistics of receiver software.

Only the command logbook.compute requires a running task server (celery) at the moment.

Available tasks

  • ogn.collect.database.import_ddb - Import registered devices from the ddb
  • ogn.collect.database.import_file - Import registered devices from a local file
  • ogn.collect.receiver.update_receivers - Populate/update receiver table
  • ogn.collect.logbook.compute_takeoff_and_landing - Generate TakeoffLanding table

If the task server is up and running, tasks could be started manually.

python3
>>>from ogn.collect.database import import_ddb
>>>import_ddb.delay()

License

Licensed under the AGPLv3.