""" NMEA0183 verarbeiten """ def DBS(boatdata, msg): # Wassertiefe unter der Oberfläche pass def DBT(boatdata, msg): # Wassertiefe unter Geber pass def GLL(boatdata, msg): print("-> GLL") boatdata.setValue("LAT", msg.latitude) boatdata.setValue("LON", msg.longitude) 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 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 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) # 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, "MWV": MWV, "RSA": RSA, "RTE": RTE, "VHW": VHW, "VTG": VTG, "WPL": WPL }