Python library for parsing and generating NMEA 0183 protocol messages used in GPS and marine navigation systems
77
Depth and sonar sentences provide water depth measurements from various types of depth finding equipment including echo sounders and sonar systems.
class DBT(TalkerSentence):
"""Depth Below Transducer."""
depth_feet: str # Depth in feet
unit_feet: str # 'f' for feet
depth_meters: str # Depth in meters
unit_meters: str # 'M' for meters
depth_fathoms: str # Depth in fathoms
unit_fathoms: str # 'F' for fathomsclass DBS(TalkerSentence):
"""Depth Below Surface."""
depth_feet: str # Depth in feet
feets: str # 'f' for feet
depth_meter: str # Depth in meters
meters: str # 'M' for meters
depth_fathoms: str # Depth in fathoms
fathoms: str # 'F' for fathomsclass DPT(TalkerSentence):
"""Depth of Water."""
depth: str # Water depth in meters
offset: str # Offset from transducer
range: str # Maximum range scaleimport pynmea2
# Parse depth below transducer
msg = pynmea2.parse("$SDDBT,12.3,f,3.7,M,2.0,F*35")
print(f"Depth: {msg.depth_feet} feet = {msg.depth_meters} meters = {msg.depth_fathoms} fathoms")
# Depth: 12.3 feet = 3.7 meters = 2.0 fathoms
# Parse depth below surface
msg = pynmea2.parse("$SDDBS,15.8,f,4.8,M,2.6,F*09")
print(f"Surface depth: {msg.depth_meter} {msg.meters}") # 4.8 M
# Parse water depth with offset
msg = pynmea2.parse("$SDDPT,4.2,0.5,*4F")
print(f"Water depth: {msg.depth}m, Offset: {msg.offset}m") # 4.2m, 0.5m
if msg.range:
print(f"Range scale: {msg.range}")
# Create depth sentence
dbt_data = ['12.3', 'f', '3.7', 'M', '2.0', 'F']
depth_msg = pynmea2.DBT('SD', 'DBT', dbt_data)
print(str(depth_msg)) # $SDDBT,12.3,f,3.7,M,2.0,F*35Common depth unit conversions:
import pynmea2
msg = pynmea2.parse("$SDDBT,12.3,f,3.7,M,2.0,F*35")
# Convert between units manually
feet_to_meters = float(msg.depth_feet) * 0.3048
meters_to_feet = float(msg.depth_meters) * 3.28084
fathoms_to_meters = float(msg.depth_fathoms) * 1.8288
print(f"Conversions:")
print(f" {msg.depth_feet} ft = {feet_to_meters:.2f} m") # 12.3 ft = 3.75 m
print(f" {msg.depth_meters} m = {meters_to_feet:.2f} ft") # 3.7 m = 12.14 ft
print(f" {msg.depth_fathoms} F = {fathoms_to_meters:.2f} m") # 2.0 F = 3.66 mInstall with Tessl CLI
npx tessl i tessl/pypi-pynmea2docs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10