The NMEA protocol handler parses the NMEA 0183 protocol (f.e. from GPS devices). For input both GenericPush and GenericPull can be used in combination with File or UDP transport handler. This protocol can also be used for output, to write NMEA sentences.
ID | Description | Fields |
---|---|---|
DPT | Depth of Water | depth, offset |
GGA | Global Positioning System Fix Data. Time, Position and fix related data | time, latitude, latitudeHem, longitude, longitudeHem, gpsQuality, numberOfSattelites, horizontalDilution, antennaAltitude, antennaAltUnits, geoidalSeparation, geoidalSepUnits, ageOfDgps, differentialRefId |
GLL | Geographic Position – Latitude/Longitude | latitude, latitudeHem, longitude, longitudeHem, time, status |
HDG | Heading - Deviation & Variation | heading, deviation, deviationDir, variation, variationDir |
MTW | Water Temperature | degrees, unit |
MWV | Wind Speed and Angle | angle, reference, speed, speedUnit, status |
RMC | Recomended Minimum Navigation Information | time, status, latitude, latitudeHem, longitude, longitudeHem, speedOverGround, trackMadeGood, date, magneticVariation, magneticHem, signalIntegrity |
RPM | Revolutions | source, number, speed, pitch, status |
RSA | Rudder Sensor Angle | starboard, sbStatus, portboard, pbStatus |
TTM | Tracked Target Message | targetNumber, targetDistance, bearing, bearingUnit, targetSpeed, targetCourse, courseUnit, closestPointOfApproach, timeUntilClosestPoint, distanceUnit, targetLabel, targetStatus, referenceTarget, time, typeAcquisition |
VDM | AIS (Automatic Identification System) Message | fragmentsCount, fragmentId, messageId, channel, message, fillBits |
VDO | Same as VDM for own ship | see VDM |
VTG | Track Made Good and Ground Speed | headingTrack, trackReference, headingMagnetic, magneticReference, speedKnots, speedKnotsUnits, speedKilometers, speedKilometersUnits |
All above mentioned sentences have default fields derieved from Sentence.
Field | Type | Description |
---|---|---|
beginChar | char | The first character, the nmea sentence starts with (e.g. $ or !) |
talkerId | String | The two digit talker ID (Single character 'P' for proprietary sentence types) |
sentenceId | String | Mostly three digit sentence ID for standard types mentioned in first column in table above. (Or proprietary sentences, starting with three digit manufacturer code) |
/// Read from File input = ACCESS({source='FileInput', wrapper='GenericPull', transport='File', protocol='NMEA', dataHandler='KeyValueObject', options=[['filename','...'], ['delay','100']] }) /// Read from UDP on Port 4711 inputGps = ACCESS({source='GpsInput', wrapper='GenericPush', transport='UDPServer', protocol='NMEA', dataHandler='KeyValueObject', options=[['port', '4711']] }) /// UDP Broadcast on Port 6003 output = SENDER({sink='SinkGps', wrapper='GenericPush', transport='UDPClient', protocol='NMEA', dataHandler='KeyValueObject', options=[['host', '255.255.255.255'],['port', '6003']] }, inputGps) |
TODO |
If you for example only need GPS Positions, you only need to extract latitude and longitude informations from the sentences. As you can see in "Supported Sentences" table, the sentences GGA, GLL and RMC do have the needed information you want to have. To extract the information you want to do a Selection, to get only these sentence types and a Projection, to extract only the needed informations.
/// Listen on UDP prot 4711 input = ACCESS({source='input', wrapper='GenericPush', transport='UDPServer', protocol='NMEA', dataHandler='KeyValueObject', options=[['port', '4711']] }) /// Select GGA, GLL, RMC gps = SELECT({predicate=KeyValuePredicate('sentenceId="GGA" OR sentenceId="GLL" OR sentenceId="RMC"')}, input) /// Project only the latitude and longitude latLon = PROJECT({paths = [['latitude', 'String'], ['longitude', 'String']]}, gps) |