Tracker verbessert, lokales Tracking vorbereitet
This commit is contained in:
parent
e5646b6f27
commit
f0ebdd0201
|
@ -41,12 +41,13 @@ config = ~/.opencpn/opencpn.conf
|
|||
type = NONE
|
||||
host = 127.0.0.1
|
||||
port = 80
|
||||
path = /
|
||||
ssl = false
|
||||
username = demo
|
||||
password = secret
|
||||
mqtt_host = 127.0.0.1
|
||||
mqtt_port = 1883
|
||||
mqtt_ssl = False
|
||||
mqtt_ssl = false
|
||||
mqtt_user = demo
|
||||
mqtt_pass = 123456
|
||||
trace = false
|
||||
|
@ -134,4 +135,3 @@ type = Rudder
|
|||
|
||||
[page10]
|
||||
type = SkyView
|
||||
|
||||
|
|
|
@ -120,6 +120,7 @@ __email__ = "thomas@hoogi.de"
|
|||
__status__ = "Development"
|
||||
|
||||
# Standardkonfiguration, kann durch Konfigdatei überschrieben werden
|
||||
# TODO prüfen ob defaults ziehen wenn kein Eintrag in Konfigdatei
|
||||
cfg = {
|
||||
'cfgfile': 'obp60v.conf',
|
||||
'logdir': '~/.local/share/obp60v',
|
||||
|
@ -127,6 +128,7 @@ cfg = {
|
|||
'loglevel': 3,
|
||||
'imgpath': os.path.join(sys.path[0], 'images'),
|
||||
'audiopath': os.path.join(sys.path[0], 'audio'),
|
||||
'histpath' = '~/.local/lib/obp60v',
|
||||
'deviceid': 100,
|
||||
'manufcode': 2046, # Open Boat Projects (OBP)
|
||||
'devfunc': 120, # Display
|
||||
|
@ -804,10 +806,13 @@ if __name__ == "__main__":
|
|||
log.info("Networking enabled")
|
||||
t_rxd_net = threading.Thread(target=rxd_network, args=(cfg['net_port'],cfg['net_addr']))
|
||||
t_rxd_net.start()
|
||||
if cfg['tracker']['type'] != 'NONE':
|
||||
if cfg['tracker']['type'] == 'NONE':
|
||||
log.info(f"Tracking enabled, mode {cfg['tracker']['type']}")
|
||||
#appdata.track.set_type( cfg['tracker']['type'])
|
||||
t_tracker = threading.Thread(target=appdata.track.mqtt_tracker, args=(cfg['tracker'],cfg['boat'],appdata,boatdata))
|
||||
if cfg['tracker']['type'] == 'HERO':
|
||||
t_tracker = threading.Thread(target=appdata.track.mqtt_tracker, args=(cfg['tracker'],cfg['boat'],appdata,boatdata))
|
||||
elif cfg['tracker']['type'] IN ['LOCAL', 'SDCARD']:
|
||||
t_tracker = threading.Thread(target=appdata.track.local_tracker, args=(cfg['tracker'],cfg['boat'],appdata,boatdata))
|
||||
t_tracker.start()
|
||||
if not cfg['simulation']:
|
||||
if cfg['bme280']:
|
||||
|
|
|
@ -11,7 +11,7 @@ Es gibt zwei Modi: Track und Race
|
|||
Um versehentliches Umschalten zu vermeiden ist eine Nachfrage
|
||||
integriert.
|
||||
|
||||
- currentry only Ragatta hero supported
|
||||
- Momentan wird nur Regatta Hero unterstützt
|
||||
|
||||
Behandlung von Verbindungsabbrüchen:
|
||||
- on_disconnect
|
||||
|
@ -196,6 +196,20 @@ class RaceTracker(Page):
|
|||
ctx.move_to(x, y)
|
||||
ctx.show_text("race officer to get configuration data.")
|
||||
|
||||
def draw_local(self, ctx):
|
||||
x = 8
|
||||
y = 50
|
||||
ctx.select_font_face("Ubuntu", cairo.FontSlant.NORMAL, cairo.FontWeight.BOLD)
|
||||
ctx.set_font_size(24)
|
||||
ctx.move_to(x, y)
|
||||
ctx.show_text("Local Tracking")
|
||||
|
||||
# Anzeige
|
||||
# - LAT, LON
|
||||
# - bisher gespeicherte Anzahl Positionen
|
||||
# - Zeitabstand zwischen den einzelnen Messungen
|
||||
# - Hinweis wo gespeichert wird
|
||||
|
||||
def draw_normal(self, ctx):
|
||||
|
||||
ctx.select_font_face("DSEG7 Classic")
|
||||
|
|
38
tracker.py
38
tracker.py
|
@ -3,9 +3,17 @@ Tracker-Daten
|
|||
|
||||
Mögliche Typen:
|
||||
HERO - Regatta Hero
|
||||
SDCARD
|
||||
LOCAL - gpx Datei
|
||||
SDCARD - nur für ESP32 relevant
|
||||
LOCAL - Logdatei. GPX ist ungeeignet, weil das Gerät zu jedem Zeitpunkt
|
||||
ausgeschaltet werden kann und somit die Datei in einem
|
||||
ungültigen Zustand sein kann.
|
||||
Es wird eine Datei track.log.geschrieben.
|
||||
Um fehlende Daten festzustellen wird ein fortlaufender Zähler
|
||||
geschrieben.
|
||||
SERVER - spezielle Software benötigt, kann auch ein Raspi an Bord sein
|
||||
Der Tracker sendet einen HTTP-POST. Der Server speichert
|
||||
die Daten für mehrere Geräte. Vorläufiger Servername:
|
||||
trackserver
|
||||
NONE - kein Tracking
|
||||
|
||||
Wenn die Verbindung zum Server im Internet nicht funktioniert, werden
|
||||
|
@ -119,6 +127,32 @@ class Tracker():
|
|||
def set_active(self, newval):
|
||||
self.activated = newval
|
||||
|
||||
def local_tracker(self, cfg, boat, appdata, boatdata):
|
||||
# TODO / WIP
|
||||
self.log.info("Local tracker enabled")
|
||||
|
||||
# Zugriff auf Boatdata: Referenzen für leichten schnellen Zugriff
|
||||
bv_lat = boatdata.getRef("LAT")
|
||||
bv_lon = boatdata.getRef("LON")
|
||||
bv_hdop = boatdata.getRef("HDOP")
|
||||
bv_tspos = boatdata.getRef("TSPOS")
|
||||
|
||||
self.local_dt = 15
|
||||
self.local_lfdno = 0
|
||||
trackerfile = "/tmp/test.log" # TODO Konfiguration lesen
|
||||
fh = open(trackerfile, 'a+')
|
||||
while not appdata.shutdown:
|
||||
time.sleep(self.local_dt)
|
||||
self.local_lfdno += 1
|
||||
data = f"{},{},{},{}\n".format(
|
||||
self.local_lfdno,
|
||||
bv_tspos.getValueRaw(),
|
||||
bv_lat.getValueRaw(),
|
||||
bv_lon.getValueRaw(),
|
||||
bv_hdop.getValueRaw())
|
||||
fh.write(data)
|
||||
fh.close()
|
||||
|
||||
def set_hero_raceid(self, newraceid):
|
||||
self.hero_raceid = newraceid
|
||||
|
||||
|
|
Loading…
Reference in New Issue