kopia lustrzana https://github.com/glidernet/ogn-python
129 wiersze
4.1 KiB
Python
129 wiersze
4.1 KiB
Python
from sqlalchemy.sql import func
|
|
from .beacon import Beacon
|
|
|
|
from app import db
|
|
|
|
|
|
class ReceiverBeacon(Beacon):
|
|
__tablename__ = "receiver_beacons"
|
|
|
|
# disable irrelevant aprs fields
|
|
track = None
|
|
ground_speed = None
|
|
|
|
# ReceiverBeacon specific data
|
|
version = db.Column(db.String)
|
|
platform = db.Column(db.String)
|
|
cpu_load = db.Column(db.Float(precision=2))
|
|
free_ram = db.Column(db.Float(precision=2))
|
|
total_ram = db.Column(db.Float(precision=2))
|
|
ntp_error = db.Column(db.Float(precision=2))
|
|
rt_crystal_correction = db.Column(db.Float(precision=2))
|
|
voltage = db.Column(db.Float(precision=2))
|
|
amperage = db.Column(db.Float(precision=2))
|
|
cpu_temp = db.Column(db.Float(precision=2))
|
|
senders_visible = db.Column(db.Integer)
|
|
senders_total = db.Column(db.Integer)
|
|
rec_input_noise = db.Column(db.Float(precision=2))
|
|
senders_signal = db.Column(db.Float(precision=2))
|
|
senders_messages = db.Column(db.Integer)
|
|
good_senders_signal = db.Column(db.Float(precision=2))
|
|
good_senders = db.Column(db.Integer)
|
|
good_and_bad_senders = db.Column(db.Integer)
|
|
|
|
# User comment: used for additional information like hardware configuration, web site, email address, ...
|
|
user_comment = None
|
|
|
|
# Relations
|
|
receiver_id = db.Column(db.Integer, db.ForeignKey("receivers.id", ondelete="SET NULL"))
|
|
receiver = db.relationship("Receiver", foreign_keys=[receiver_id], backref="receiver_beacons")
|
|
|
|
# Multi-column indices
|
|
db.Index("ix_receiver_beacons_receiver_id_name", "receiver_id", "name")
|
|
|
|
def __repr__(self):
|
|
return "<ReceiverBeacon %s: %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%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_input_noise,
|
|
self.senders_signal,
|
|
self.senders_messages,
|
|
self.good_senders_signal,
|
|
self.good_senders,
|
|
self.good_and_bad_senders,
|
|
)
|
|
|
|
@classmethod
|
|
def get_columns(self):
|
|
return [
|
|
"location",
|
|
"altitude",
|
|
"name",
|
|
"dstcall",
|
|
"receiver_name",
|
|
"timestamp",
|
|
# 'raw_message',
|
|
# 'reference_timestamp',
|
|
"version",
|
|
"platform",
|
|
"cpu_load",
|
|
"free_ram",
|
|
"total_ram",
|
|
"ntp_error",
|
|
"rt_crystal_correction",
|
|
"voltage",
|
|
"amperage",
|
|
"cpu_temp",
|
|
"senders_visible",
|
|
"senders_total",
|
|
"rec_input_noise",
|
|
"senders_signal",
|
|
"senders_messages",
|
|
"good_senders_signal",
|
|
"good_senders",
|
|
"good_and_bad_senders",
|
|
]
|
|
|
|
def get_values(self):
|
|
return [
|
|
self.location_wkt,
|
|
int(self.altitude) if self.altitude else None,
|
|
self.name,
|
|
self.dstcall,
|
|
self.receiver_name,
|
|
self.timestamp,
|
|
# self.raw_message,
|
|
# self.reference_timestamp,
|
|
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_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,
|
|
]
|
|
|
|
|
|
db.Index("ix_receiver_beacons_date_receiver_id", func.date(ReceiverBeacon.timestamp), ReceiverBeacon.receiver_id)
|