A database backend for the Open Glider Network
 
 
 
 
 
 
Go to file
Konstantin Gründger 6ce599fbb0 Changed port for unfiltered beacons 2015-11-24 20:06:06 +01:00
alembic ReceiverDevice to Receiver 2015-11-16 20:09:26 +01:00
ogn Changed port for unfiltered beacons 2015-11-24 20:06:06 +01:00
tests Let disconnect crash once 2015-11-24 08:18:36 +01:00
.gitignore Update README, CONTRIBUTORS. 2015-11-15 10:01:57 +01:00
.travis.yml Initial release 2015-10-24 23:13:21 +02:00
CONTRIBUTORS Update README, CONTRIBUTORS. 2015-11-15 10:01:57 +01:00
LICENSE Create LICENSE 2015-11-14 22:47:25 +01:00
README.md Typo 2015-11-15 19:59:25 +01:00
alembic.ini Added Alembic 2015-11-16 08:31:32 +01:00
manage.py Add common CLI manage.py. 2015-11-15 09:59:48 +01:00
requirements.txt Handle tasks (eg. updateddb) with celery. 2015-11-15 09:59:48 +01:00

README.md

ogn-python

[Build Status] (https://travis-ci.org/Meisterschueler/ogn-python) [Coverage Status] (https://coveralls.io/r/Meisterschueler/ogn-python)

A python module for the Open Glider Network. The submodule 'ogn.gateway' is an aprs client, saving all received beacons into a database with SQLAlchemy. Other submodules process this data.

To schedule tasks like fetching ddb data, Celery with Redis is used.

Installation and Setup

  1. Install python requirements
pip install -r requirements.txt
  1. Install redis for asynchronous tasks ('ogn.collect.*')
$ apt-get install redis-server
  1. Create database
$ ./manage.py db.init

Running the aprs client and task server

This scripts run in the foreground and should be deamonized (eg. use supervisord).

# start aprs client
$ ./manage.py gateway.run

# start task server (make sure redis is up and running)
$ celery -A ogn.collect worker -l info

manage.py - CLI options

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

positional arguments:
  command     the command to run

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

available commands:

  [db]
    init                   Initialize the database.
    updateddb              Update the ddb data.
  
  [gateway]
    run                    Run the aprs client.
  
  [logbook]
    show                   Show a logbook for <airport_name> located at given position.
  
  [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.

The task server must be running for db.updateddb.

TODO

  • Write celery backend and add task 'fetchddb'
  • Rewrite manage.py with https://github.com/Birdback/manage.py or flask-script
  • Rename existing cli commands
  • Document/Improve cli commands
  • Separate settings from module (currently at ogn/command/dbutils.py)
  • Enable granular data acquisition (eg. store receiver beacons only)
  • Future Database-Migrations: Use Alembic?
    • Rename 'Flarm' to 'Device'?
    • Rename self.heared_aircraft_IDs (lowercase) in aircraft_beacon
    • Rename self.heared_aircraft_IDs
  • Fix command/logbook.py (@Meisterschueler?)
  • Introduce scheduled tasks with 'celery beat' (eg. updateddb)

Scheduled tasks

  • ogn.collect.fetchddb (generate Flarm table)
  • ogn.collect.receiver (generate Receiver table)
  • ogn.collect.logbook (generate TaoffLanding table)

How to use virtualenv

$ sudo apt-get install python-virtualenv

$ virtualenv env
$ source env/bin/activate