ogn-python/ogn/model/receiver_beacon.py

124 wiersze
3.9 KiB
Python
Czysty Zwykły widok Historia

from sqlalchemy import Column, Float, String, Integer, SmallInteger, ForeignKey
from sqlalchemy.orm import relationship
2015-10-24 21:13:21 +00:00
2015-10-30 20:19:03 +00:00
from .beacon import Beacon
2015-10-24 21:13:21 +00:00
class ReceiverBeacon(Beacon):
__tablename__ = "receiver_beacon"
2015-10-24 21:13:21 +00:00
# ReceiverBeacon specific data
2015-10-24 21:13:21 +00:00
version = Column(String)
2015-10-28 14:47:53 +00:00
platform = Column(String)
2016-01-21 22:18:02 +00:00
cpu_load = Column(Float)
free_ram = Column(Float)
total_ram = Column(Float)
ntp_error = Column(Float)
rt_crystal_correction = Column(Float)
voltage = Column(Float)
amperage = Column(Float)
cpu_temp = Column(Float)
senders_visible = Column(Integer)
senders_total = Column(Integer)
2016-01-21 22:18:02 +00:00
rec_crystal_correction = 0 # obsolete since 0.2.0
rec_crystal_correction_fine = 0 # obsolete since 0.2.0
rec_input_noise = Column(Float)
2016-10-17 19:24:55 +00:00
senders_signal = Column(Float)
senders_messages = Column(Integer)
good_senders_signal = Column(Float)
good_senders = Column(Integer)
good_and_bad_senders = Column(Integer)
status = Column(SmallInteger, index=True)
2016-10-03 13:14:44 +00:00
# Relations
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), index=True)
receiver = relationship('Receiver', foreign_keys=[receiver_id])
2015-10-24 21:13:21 +00:00
def __repr__(self):
return "<ReceiverBeacon %s: %s>" % (
self.version,
self.platform,
self.cpu_load,
self.free_ram,
self.total_ram,
self.ntp_error,
self.rt_crystal_correction,
self.voltage,
self.amperage,
self.cpu_temp,
self.senders_visible,
self.senders_total,
# self.rec_crystal_correction,
# self.rec_crystal_correction_fine,
self.rec_input_noise,
self.senders_signal,
self.senders_messages,
self.good_senders_signal,
self.good_senders,
self.good_and_bad_senders,
self.status)
@classmethod
def get_csv_columns(self):
return['location',
'altitude',
'name',
'receiver_name',
'timestamp',
'track',
'ground_speed',
'version',
'platform',
'cpu_load',
'free_ram',
'total_ram',
'ntp_error',
'rt_crystal_correction',
'voltage',
'amperage',
'cpu_temp',
'senders_visible',
'senders_total',
# 'rec_crystal_correction',
# 'rec_crystal_correction_fine',
'rec_input_noise',
'senders_signal',
'senders_messages',
'good_senders_signal',
'good_senders',
'good_and_bad_senders']
def get_csv_values(self):
return [
self.location_wkt,
int(self.altitude) if self.altitude else None,
self.name,
self.receiver_name,
self.timestamp,
self.track,
self.ground_speed,
self.version,
self.platform,
self.cpu_load,
self.free_ram,
self.total_ram,
self.ntp_error,
self.rt_crystal_correction,
self.voltage,
self.amperage,
self.cpu_temp,
int(self.senders_visible) if self.senders_visible else None,
int(self.senders_total) if self.senders_visible else None,
# self.rec_crystal_correction,
# self.rec_crystal_correction_fine,
self.rec_input_noise,
self.senders_signal,
int(self.senders_messages) if self.senders_messages else None,
self.good_senders_signal,
int(self.good_senders) if self.good_senders else None,
int(self.good_and_bad_senders) if self.good_and_bad_senders else None]