![]() |
||
---|---|---|
alembic | ||
config | ||
ogn | ||
tests | ||
.gitignore | ||
.travis.yml | ||
CHANGELOG.md | ||
CONTRIBUTORS | ||
LICENSE | ||
MANIFEST.in | ||
README.md | ||
Vagrantfile | ||
alembic.ini | ||
manage.py | ||
requirements.txt | ||
setup.cfg | ||
setup.py |
README.md
ogn-python
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. For best performance you should use TimescaleDB, which is based on PostgreSQL.
Installation and Setup
-
Checkout the repository
git clone https://github.com/glidernet/ogn-python.git
-
Install python requirements
pip install -r requirements.txt
-
Install PostgreSQL with PostGIS Extension. Create a database (use "ogn" as default, otherwise you have to modify the configuration, see below)
-
Optional: Install redis for asynchronous tasks (like takeoff/landing-detection)
apt-get install redis-server
-
Create database
./manage.py db.init
-
Optional: Prepare tables for TimescaleDB
./manage.py db.init_timescaledb
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]
create_flights2d Create complete flight traces from logfile tables.
create_gaps2d Create 'gaps' from logfile tables.
file_export Export separate logfile tables to csv files. They can be used for fast bulk import with sql COPY command.
file_import Import APRS logfiles into separate logfile tables.
transfer Transfer beacons from separate logfile tables to beacon table.
update Update beacons (add foreign keys, compute distance, bearing, ags, etc.) in separate logfile tables.
[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.
import_flarmnet Import registered devices from a local file.
init Initialize the database.
init_timescaledb Initialize TimescaleDB features.
update_country_codes Update country codes of all receivers.
upgrade Upgrade database to the latest version.
[flights]
flights2d Compute flights.
[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>.
[stats]
create Create DeviceStats, ReceiverStats and RelationStats.
create_ognrange Create stats for Melissa's ognrange.
update_devices Update devices with data from stats.
update_receivers Update receivers with data from stats.
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.database.update_country_code
- Update country code in receivers table if None.ogn.collect.database.update_devices
- Add/update entries in devices table and update foreign keys in aircraft beacons.ogn.collect.database.update_receivers
- Add/update_receivers entries in receiver table and update receivers foreign keys and distance in aircraft beacons and update foreign keys in receiver beacons.ogn.collect.logbook.update_logbook
- Add/update logbook entries.ogn.collect.logbook.update_max_altitude
- Add max altitudes in logbook when flight is complete (takeoff and landing).ogn.collect.stats.update_device_stats
- Add/update entries in device stats table.ogn.collect.stats.update_receiver_stats
- Add/update entries in receiver stats table.ogn.collect.takeoff_landing.update_takeoff_landing
- Compute takeoffs and landings.
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.