OBP60v/nmea0183.py

117 lines
2.5 KiB
Python

"""
NMEA0183 verarbeiten
"""
def DBS(boatdata, msg):
# Wassertiefe unter der Oberfläche
pass
#boatdata.setValue("DBS", msg.depth)
def DBT(boatdata, msg):
# Wassertiefe unter Geber
pass
#boatdata.setValue("DBT", msg.depth)
def GLL(boatdata, msg):
print("-> GLL")
boatdata.setValue("LAT", msg.latitude)
boatdata.setValue("LON", msg.longitude)
def GSV(boatdata, msg):
# Satellites in view
print("-> GSV")
def HDT(boatdata, msg):
# Heading True
print("-> HDT")
print(msg.fields)
def MWV(boatdata, msg):
# Windgeschwindigkeit und -winkel
print(f"Wind: {msg.wind_angle}° {msg.wind_speed}kt")
boatdata.setValue("AWA", msg.wind_angle)
boatdata.setValue("AWS", msg.wind_speed)
def MTW(boatdata, msg):
# Wassertemperatur
# boatdata.setValue("WTemp", msg.xxx)
print("-> MTW Wassertemperatur")
def RMB(boatdata, msg):
# Recommended Minimum Navigation Information
# Informationen bzgl. Erreichen des nächsten Wegepunkts
#
print("-> RMB")
def RMC(boatdata, msg):
print("-> RMC")
#boatdata.setValue("LAT", msg.lat)
#boatdata.setValue("LON", msg.lon)
def RSA(boatdata, msg):
# Rudder Sensor Angle
# negative Werte bedeuten Backbord
# Boatdata: RPOS primär, PRPOS sekundär
print("-> RSA")
print(msg.fields)
def RTE(boatdata, msg):
# Route
print("-> RTE")
print(msg.fields)
def VBW(boatdata, msg):
print("-> VBW")
def VHW(boatdata, msg):
boatdata.setValue("STW", float(msg.water_speed_knots))
def VTG(boatdata, msg):
boatdata.setValue("COG", int(msg.true_track))
#TODO klären was für Typen hier ankommen können
# bytearray, str, decimal.Decimal?
sog = float(msg.spd_over_grnd_kts)
#str von OpenCPN: sog = float(msg.spd_over_grnd_kts[:-1])
boatdata.setValue("SOG", sog)
def WPL(boatdata, msg):
print("-> WPL")
print(msg.fields)
def XTE(boatdata, msg):
# Cross Track error measured
print("-> XTE")
def XTR(boatdata, msg):
# Cross Track error gekoppelt
print("-> XTR")
def ZDA(boatdata, msg):
# Time and date
print("-> XTE")
#boatdata.gpsd
#boatdata.gpst
# Aus Performancegründen eine direkte Sprungtabelle, ggf. können
# zukünftig außer der Funktion noch weitere Daten gespeichert werdeb
decoder = {
"DBS": DBS,
"DBT": DBT,
"GLL": GLL,
"GSV": GSV,
"MWV": MWV,
"MTW": MTW,
"RMB": RMB,
"RMC": RMC,
"RSA": RSA,
"RTE": RTE,
"VBW": VBW,
"VHW": VHW,
"VTG": VTG,
"WPL": WPL,
"XTE": XTE,
"XTR": XTR,
"ZDA": ZDA
}