kopia lustrzana https://github.com/glidernet/ogn-python
Merge pull request #61 from Meisterschueler/feature/+protocol_0.2.5
Feature/+protocol 0.2.5pull/45/merge
commit
a1276fbc7e
|
@ -1,6 +1,9 @@
|
||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
## 0.3.0 - 2016-10-22
|
||||||
|
- Changed database for OGN v0.2.5 receiver beacons
|
||||||
- Moved to PostGIS, PostgreSQL is now mandantory
|
- Moved to PostGIS, PostgreSQL is now mandantory
|
||||||
- Changed database schema (added airport, added relations, added `aircraft_type`, removed unused fields)
|
- Changed database schema (added airport, added relations, added `aircraft_type`, removed unused fields)
|
||||||
- Added Airport manager with command line option `db.import_airports`,
|
- Added Airport manager with command line option `db.import_airports`,
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
"""update protocol to v0.2.5
|
||||||
|
|
||||||
|
Revision ID: 5717cf8e17c
|
||||||
|
Revises: 4ebfb325db6
|
||||||
|
Create Date: 2016-10-17 19:16:38.632097
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '5717cf8e17c'
|
||||||
|
down_revision = '4ebfb325db6'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.alter_column('aircraft_beacon', 'signal_strength', new_column_name='signal_quality')
|
||||||
|
op.add_column('aircraft_beacon', sa.Column('signal_power', sa.Float))
|
||||||
|
|
||||||
|
op.add_column('receiver_beacon', sa.Column('senders_visible', sa.Integer))
|
||||||
|
op.add_column('receiver_beacon', sa.Column('senders_total', sa.Integer))
|
||||||
|
op.add_column('receiver_beacon', sa.Column('senders_signal', sa.Float))
|
||||||
|
op.add_column('receiver_beacon', sa.Column('senders_messages', sa.Integer))
|
||||||
|
op.add_column('receiver_beacon', sa.Column('good_senders_signal', sa.Float))
|
||||||
|
op.add_column('receiver_beacon', sa.Column('good_senders', sa.Integer))
|
||||||
|
op.add_column('receiver_beacon', sa.Column('good_and_bad_senders', sa.Integer))
|
||||||
|
|
||||||
|
op.add_column('receiver_beacon', sa.Column('voltage', sa.Float))
|
||||||
|
op.add_column('receiver_beacon', sa.Column('amperage', sa.Float))
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.alter_column('aircraft_beacon', 'signal_quality', new_column_name='signal_strength')
|
||||||
|
op.drop_column('aircraft_beacon', 'signal_power')
|
||||||
|
|
||||||
|
op.drop_column('receiver_beacon', 'senders_visible')
|
||||||
|
op.drop_column('receiver_beacon', 'senders_total')
|
||||||
|
op.drop_column('receiver_beacon', 'senders_signal')
|
||||||
|
op.drop_column('receiver_beacon', 'senders_messages')
|
||||||
|
op.drop_column('receiver_beacon', 'good_senders_signal')
|
||||||
|
op.drop_column('receiver_beacon', 'good_senders')
|
||||||
|
op.drop_column('receiver_beacon', 'good_and_bad_senders')
|
||||||
|
|
||||||
|
op.drop_column('receiver_beacon', 'voltage')
|
||||||
|
op.drop_column('receiver_beacon', 'amperage')
|
|
@ -30,7 +30,21 @@ def process_beacon(raw_message, reference_date=None, reference_time=None):
|
||||||
# \n: ?
|
# \n: ?
|
||||||
# /z: ?
|
# /z: ?
|
||||||
# /o: ?
|
# /o: ?
|
||||||
if message['symboltable'] == "I" and message['symbolcode'] == '&':
|
if 'symboltable' not in message and 'symbolcode' not in message:
|
||||||
|
# we have a receiver_beacon (status message)
|
||||||
|
message.update(parse_ogn_receiver_beacon(message['comment']))
|
||||||
|
beacon = ReceiverBeacon(**message)
|
||||||
|
|
||||||
|
# connect beacon with receiver
|
||||||
|
receiver = session.query(Receiver.id) \
|
||||||
|
.filter(Receiver.name == beacon.name) \
|
||||||
|
.first()
|
||||||
|
if receiver is None:
|
||||||
|
receiver = Receiver()
|
||||||
|
receiver.name = beacon.name
|
||||||
|
session.add(receiver)
|
||||||
|
beacon.receiver_id = receiver.id
|
||||||
|
elif message['symboltable'] == "I" and message['symbolcode'] == '&':
|
||||||
# ... we have a receiver_beacon
|
# ... we have a receiver_beacon
|
||||||
message.update(parse_ogn_receiver_beacon(message['comment']))
|
message.update(parse_ogn_receiver_beacon(message['comment']))
|
||||||
message = replace_lonlat_with_wkt(message)
|
message = replace_lonlat_with_wkt(message)
|
||||||
|
|
|
@ -14,7 +14,7 @@ class AircraftBeacon(Beacon):
|
||||||
address = Column(String(6))
|
address = Column(String(6))
|
||||||
climb_rate = Column(Float)
|
climb_rate = Column(Float)
|
||||||
turn_rate = Column(Float)
|
turn_rate = Column(Float)
|
||||||
signal_strength = Column(Float)
|
signal_quality = Column(Float)
|
||||||
error_count = Column(Integer)
|
error_count = Column(Integer)
|
||||||
frequency_offset = Column(Float)
|
frequency_offset = Column(Float)
|
||||||
gps_status = Column(String)
|
gps_status = Column(String)
|
||||||
|
@ -25,6 +25,8 @@ class AircraftBeacon(Beacon):
|
||||||
|
|
||||||
flightlevel = Column(Float)
|
flightlevel = Column(Float)
|
||||||
|
|
||||||
|
signal_power = Column(Float)
|
||||||
|
|
||||||
# Relations
|
# Relations
|
||||||
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), index=True)
|
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), index=True)
|
||||||
receiver = relationship('Receiver', foreign_keys=[receiver_id])
|
receiver = relationship('Receiver', foreign_keys=[receiver_id])
|
||||||
|
|
|
@ -21,6 +21,17 @@ class ReceiverBeacon(Beacon):
|
||||||
rec_crystal_correction_fine = 0 # obsolete since 0.2.0
|
rec_crystal_correction_fine = 0 # obsolete since 0.2.0
|
||||||
rec_input_noise = Column(Float)
|
rec_input_noise = Column(Float)
|
||||||
|
|
||||||
|
senders_visible = Column(Integer)
|
||||||
|
senders_total = Column(Integer)
|
||||||
|
senders_signal = Column(Float)
|
||||||
|
senders_messages = Column(Integer)
|
||||||
|
good_senders_signal = Column(Float)
|
||||||
|
good_senders = Column(Integer)
|
||||||
|
good_and_bad_senders = Column(Integer)
|
||||||
|
|
||||||
|
voltage = Column(Float)
|
||||||
|
amperage = Column(Float)
|
||||||
|
|
||||||
# Relations
|
# Relations
|
||||||
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), index=True)
|
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), index=True)
|
||||||
receiver = relationship('Receiver', foreign_keys=[receiver_id])
|
receiver = relationship('Receiver', foreign_keys=[receiver_id])
|
||||||
|
|
12
setup.py
12
setup.py
|
@ -12,7 +12,7 @@ with open(path.join(here, 'README.md'), encoding='utf-8') as f:
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='ogn-python',
|
name='ogn-python',
|
||||||
version='0.2.1',
|
version='0.3.0',
|
||||||
description='A database backend for the Open Glider Network',
|
description='A database backend for the Open Glider Network',
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
url='https://github.com/glidernet/ogn-python',
|
url='https://github.com/glidernet/ogn-python',
|
||||||
|
@ -32,22 +32,22 @@ setup(
|
||||||
keywords='gliding ogn',
|
keywords='gliding ogn',
|
||||||
packages=find_packages(exclude=['tests', 'tests.*']),
|
packages=find_packages(exclude=['tests', 'tests.*']),
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'SQLAlchemy==1.0.8',
|
'SQLAlchemy==1.1.2',
|
||||||
'geopy==1.11.0',
|
'geopy==1.11.0',
|
||||||
'manage.py==0.2.10',
|
'manage.py==0.2.10',
|
||||||
'celery[redis]>=3.1,<3.2',
|
'celery[redis]>=3.1,<3.2',
|
||||||
'alembic==0.8.3',
|
'alembic==0.8.8',
|
||||||
'aerofiles==0.3',
|
'aerofiles==0.3',
|
||||||
'geoalchemy2==0.3.0',
|
'geoalchemy2==0.3.0',
|
||||||
'shapely==1.5.15',
|
'shapely==1.5.15',
|
||||||
'ogn-client==0.5.0',
|
'ogn-client==0.6.0',
|
||||||
'psycopg2==2.6.1'
|
'psycopg2==2.6.1'
|
||||||
],
|
],
|
||||||
extras_require={
|
extras_require={
|
||||||
'dev': [
|
'dev': [
|
||||||
'nose==1.3.7',
|
'nose==1.3.7',
|
||||||
'coveralls==0.4.4',
|
'coveralls==1.1',
|
||||||
'flake8==2.5.0'
|
'flake8==3.0.4'
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
zip_safe=False
|
zip_safe=False
|
||||||
|
|
Ładowanie…
Reference in New Issue