2017-05-26 20:56:38 +00:00
|
|
|
from sqlalchemy import Column, Float, String, Integer, SmallInteger, ForeignKey
|
2016-05-22 05:23:22 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
2015-11-11 17:43:39 +00:00
|
|
|
class ReceiverBeacon(Beacon):
|
|
|
|
__tablename__ = "receiver_beacon"
|
2015-10-24 21:13:21 +00:00
|
|
|
|
2015-11-11 17:43:39 +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)
|
2017-05-26 20:56:38 +00:00
|
|
|
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)
|
|
|
|
|
2017-06-03 09:38:55 +00:00
|
|
|
status = Column(SmallInteger, index=True)
|
2016-10-03 13:14:44 +00:00
|
|
|
|
2016-05-22 05:23:22 +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):
|
2017-05-26 20:56:38 +00:00
|
|
|
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]
|