From 16984883e3002bc416f0a71ba9d699e5af5f6866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20Gru=CC=88ndger?= Date: Mon, 3 Oct 2016 15:14:44 +0200 Subject: [PATCH] Modifications for 0.2.5 protocol --- ogn/gateway/process.py | 16 +++++++++++++++- ogn/model/receiver_beacon.py | 6 ++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ogn/gateway/process.py b/ogn/gateway/process.py index 29bf3a1..d1fef12 100644 --- a/ogn/gateway/process.py +++ b/ogn/gateway/process.py @@ -30,7 +30,21 @@ def process_beacon(raw_message, reference_date=None, reference_time=None): # \n: ? # /z: ? # /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 message.update(parse_ogn_receiver_beacon(message['comment'])) message = replace_lonlat_with_wkt(message) diff --git a/ogn/model/receiver_beacon.py b/ogn/model/receiver_beacon.py index f54b642..5f757cd 100644 --- a/ogn/model/receiver_beacon.py +++ b/ogn/model/receiver_beacon.py @@ -21,6 +21,12 @@ class ReceiverBeacon(Beacon): rec_crystal_correction_fine = 0 # obsolete since 0.2.0 rec_input_noise = Column(Float) + snr_total_average = None + snr_total_fixes = None + snr_filtered_average_daily = None + snr_devices_daily_selection = None + snr_devices_daily = None + # Relations receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), index=True) receiver = relationship('Receiver', foreign_keys=[receiver_id])