nmea
nmea copied to clipboard
Supporting additional sentences
There are multiple sentences that are still not implemented in the crate and this is a list of the remaining sentences that we can implement.
Some work has gone into supporting additional sentences - #51
Contributing
- Write a comment - Please write a comment for the sentence(s) you'd like to implement and to be mentioned on the task to avoid duplicate implementations.
- Implement each sentence alongside at least 1 test in its own module using the
nomcrate. - Open a PR 🎉
Tips for contributing
- We suggest you start with a single sentence per PR and get a sense of the
NMEA 0183crate and protocol - If you have any questions, just open a Draft PR, so that we can provide you with feedback or answer your questions
- Checkout the GPSD project page for an example to use in your test (https://gpsd.gitlab.io/gpsd/NMEA.html) and any additional information for the given sentences
- Follow the information for the different versions of NMEA 0183 standard given in the GPSD project and implement the parsing for them
Sources
- https://gpsd.gitlab.io/gpsd/NMEA.html - sentence types in the list below have been taken from here, the gpsd project also includes examples for each sentence
- https://receiverhelp.trimble.com/alloy-gnss/en-us/NMEA-0183messages_MessageOverview.html - Additional overview resource of the NMEA 0183 messages
- All Identifiers - Manufacturer Mnemonic Codes, and Sentence Formatters List (2013)
Sentences
In this curated list you'll find sentence types that have yet to be implemented and tested. The standard sentences have priority over the rest of the types and less-known sentences.
- [ ] AIS See #46
NMEA Standard Sentences
- [x] AAM - Waypoint Arrival Alarm @bahelms #62
- [x] ALM - GPS Almanac Data @clemarescx #71
- [ ] add assertion in tests for the 10 bit week number method
- [x] APA - Autopilot Sentence "A" @ANG13T #123 (WIP PRs: #113 #119 #120)
- [ ] APB - Autopilot Sentence "B"
- [x] BOD - Bearing - Waypoint to Waypoint (impled in #51) Tests needed @clemarescx #61
- [x] BWC - Bearing & Distance to Waypoint - Great Circle
- [ ] BWR - Bearing and Distance to Waypoint - Rhumb Line
- [x] BWW - Bearing - Waypoint to Waypoint @taavit #86
- [x] DBK - Depth Below Keel @JasminFragnaud #85
- [ ] DBS - Depth Below Surface @asnimansari #138
- [ ] DBT - Depth below transducer
- [ ] DCN - Decca Position
- [ ] DPT - Depth of Water @trkohler #132
- [ ] DTM - Datum Reference
- [ ] FSI - Frequency Set Information
- [ ] GBS - GPS Satellite Fault Detection (tests needed) #51
- [x] GGA - Global Positioning System Fix Data
- [ ] GLC - Geographic Position, Loran-C
- [x] GLL - Geographic Position - Latitude/Longitude
- [x] GNS - Fix data
- [ ] GRS - GPS Range Residuals
- [x] GST - GPS Pseudorange Noise Statistics @zhrbrk #124 (based on #121)
- [x] GSA - GPS DOP and active satellites
- [x] GSV - Satellites in view
- [ ] GTD - Geographic Location in Time Differences
- [ ] GXA - TRANSIT Position - Latitude/Longitude
- [ ] HDG - Heading - Deviation & Variation
- [ ] HDM - Heading - Magnetic
- [x] HDT - Heading - True @ekuinox #82
- [ ] HFB - Trawl Headrope to Footrope and Bottom
- [ ] HSC - Heading Steering Command
- [ ] HWBIAS - Unknown
- [ ] ITS - Trawl Door Spread 2 Distance
- [ ] LCD - Loran-C Signal Data
- [x] MDA - Meteorological Composite @ALTinners #63
- [ ] MSK - Control for a Beacon Receiver
- [ ] MSS - Beacon Receiver Status
- [x] MTW - Mean Temperature of Water @JasminFragnaud #77
- [x] MWV - Wind Speed and Angle @ALTinners #63
- [ ] OLN - Omega Lane Numbers
- [ ] OSD - Own Ship Data
- [ ] R00 - Waypoints in active route
- [ ] RLM – Return Link Message
- [ ] RMA - Recommended Minimum Navigation Information
- [ ] RMB - Recommended Minimum Navigation Information
- [x] RMC - Recommended Minimum Navigation Information @clemarescx #66
- [ ] ROT - Rate Of Turn
- [ ] RPM - Revolutions
- [ ] RSA - Rudder Sensor Angle
- [ ] RSD - RADAR System Data
- [ ] RTE - Routes
- [ ] SFI - Scanning Frequency Information
- [ ] STN - Multiple Data ID
- [ ] TDS - Trawl Door Spread Distance
- [ ] TFI - Trawl Filling Indicator
- [ ] TLB - Target Label
- [ ] TLL - Target Latitude and Longitude
- [ ] TPC - Trawl Position Cartesian Coordinates
- [ ] TPR - Trawl Position Relative Vessel
- [ ] TPT - Trawl Position True
- [ ] TRF - TRANSIT Fix Data
- [x] TTM - Tracked Target Message @Tapped #128
- [ ] VBW - Dual Ground/Water Speed
- [ ] VDR - Set and Drift
- [x] VHW - Water speed and heading @ekuinox #84
- [ ] VLW - Distance Traveled through Water
- [ ] VPW - Speed - Measured Parallel to Wind
- [x] VTG - Track made good and Ground speed
- [ ] VWR - Relative Wind Speed and Angle
- [ ] WCV - Waypoint Closure Velocity
- [x] WNC - Distance - Waypoint to Waypoint #110 by @jarrod817
- [ ] WPL - Waypoint Location
- [ ] XDR - Transducer Measurement
- [ ] XTE - Cross-Track Error, Measured
- [ ] XTR - Cross Track Error - Dead Reckoning
- [x] ZDA - Time & Date - UTC, day, month, year and local time zone @ekuinox
- [x] ZFO - UTC & Time from origin Waypoint @taavit #87
- [x] ZTG - UTC & Time to Destination Waypoint @taavit #87
Other sentences (low priority)
- TODO: Find information on the internet for those additional messages if possible
- [x] TXT (u-blox)
- [ ] ACK - Alarm Acknowledgement
- [ ] ADS - Automatic Device Status
- [ ] AKD - Acknowledge Detail Alarm Condition
- [ ] ALA - Set Detail Alarm Condition
- [ ] ASD - Autopilot System Data
- [ ] BEC - Bearing & Distance to Waypoint - Dead Reckoning
- [ ] CEK - Configure Encryption Key Command
- [ ] COP - Configure the Operational Period, Command
- [ ] CUR - Water Current Layer
- [ ] DCR - Device Capability Report
- [ ] DDC - Display Dimming Control
- [ ] DOR - Door Status Detection
- [ ] DSC - Digital Selective Calling Information
- [ ] DSE - Extended DSC
- [ ] DSI - DSC Transponder Initiate
- [ ] DSR - DSC Transponder Response
- [ ] ETL - Engine Telegraph Operation Status
- [ ] EVE - General Event Message
- [ ] FIR - Fire Detection
- [ ] MWD - Wind Direction & Speed
- [ ] WDR - Distance to Waypoint - Rhumb Line
- [ ] WDC - Distance to Waypoint - Great Circle
- [ ] ZDL - Time and Distance to Variable Point
Vendor extensions (low priority)
- [ ] PASHR - RT300 proprietary roll and pitch sentence
- [ ] PGLOR - Quectel
- [ ] PGRME - Garmin Estimated Error
- [x] PGRMZ - Garmin Altitude @Turbo87 #59
- [ ] PJLTS - Jackson Labs GPSDO Status
- [ ] PJLTS - Jackson Labs Time and 3D velocity
- [ ] PMGNST - Magellan Status
- [ ] PRWIZCH - Rockwell Channel Status
- [ ] PUBX 00 - u-blox Lat/Long Position Data
- [ ] PUBX 01 - u-blox UTM Position Data
- [ ] PUBX 03 - u-blox Satellite Status
- [ ] PUBX 04 - u-blox Time of Day and Clock Information
- [ ] TMVTD - Transas VTS / SML tracking system report
Hello! I'd like to give AAM - Waypoint Arrival Alarm a shot.
Hello! I'd like to give
AAM - Waypoint Arrival Alarma shot.
I'm adding you to the list AAM sentence then. Thank you for working on this!
I wrote 2 tests for BOD - Bearing - Waypoint to Waypoint (tests needed) and presumably fixed an error in BOD parsing, can I send the PR for review?
I wrote 2 tests for
BOD - Bearing - Waypoint to Waypoint (tests needed)and presumably fixed an error in BOD parsing, can I send the PR for review?
Of course, you can. I will update the task and assign it to you.
Hello! I wanna try to implement parser for HDT sentence.
Hello! I wanna try to implement parser for HDT sentence.
Great to hear this @ekuinox , I'm adding you on this sentence them 😋
I'd like to work on ZDA and VHW. 😄
I'd like to work on ZDA and VHW. smile
They are both yours 😋 have fun implementing them
I'd like to pick BWW, ZFO and ZTG.
I'd like to pick BWW, ZFO and ZTG.
Thank you for your interest to contribute to the nmea crate!
I have assigned those messages to you.
I'd like to pick DBS - Depth Below Surface.
Thanks for your interest to contribute @rafiramadhana! I'm assigning you to the sentence parsing :yum:
I'd like to take a swing at VWT (True wind speed and angle).
Great to hear that @Tsuiban! I've assigned you to the sentence
@Tsuiban are you still interested in working on VWT sentence?
There is this list of sentences as json. I think it could be just used to generate code of all parsers
https://github.com/SmartBoatInnovations/ha-smart0183/blob/main/custom_components/smart0183/Smart0183.json
Thank you for sharing this resource @mgrouch! Although we could generate the sentences from the JSON, it will rather be used as another source of information for sentences.
Writing these parsers and generating them from the JSON might take more time than what's worth.
What we still need to support is Rust Struct to NMEA sentence and the iterator based parser, as top priority right now
Hello, I'd like to work on GST.
Hello, I'd like to work on GST.
Great to hear that @zhrbrk ! I'm assigning you to the sentence in the list.
Hi, I added support for TTM here: https://github.com/AeroRust/nmea/pull/128