117 lines
2.5 KiB
Python
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
|
|
}
|