NMEA Adapter

8090
14
02-19-2014 01:12 PM
KeithNightlinger
New Contributor III
I am working with the new NMEA adapter and using the socket connector it only appears to be processing the GPGGA message.  I have GeoEvent definitions for for all three (GGA, RMC, and GLL) and I know my GPS device is sending all three by sending it to another port.

Would there be a reason why only one message type is coming through the GeoEvent Processor?

Also, how is the DeviceID assigned?  I have 30 vehicles that will be sending in a NMEA signal.  Using the GGA message, the device ID shows as 4.  How can I correlate this device ID with a Vehicle ID?

Thanks in advance.

Keith
0 Kudos
14 Replies
JoelSmith1
New Contributor III
Try changing your Filter Properties of your GeoEvent Service to something like this (using the OR operand):

       $DEFINITION_NAME = NMEAGPGGA
OR    $DEFINITION_NAME = NMEAGPGLL
       $DEFINITION_NAME = NMEAGPRMC

As far as the Device ID, I'm wondering the same thing.

Thanks,
Joel
0 Kudos
KeithNightlinger
New Contributor III
Thanks for the suggestion.  This is actually without a filter sending directly to the tcp-console.  I even setup a standalone TCP listener and can see the data coming in:


Standalone TCP Listener - pre-geoevent processor
  $GPGGA,144358.0,4154.891742,N,08818.761683,W,1,06,0.8,206.4,M,-34.0,M,,*64
  $GPRMC,144358.0,A,4154.891742,N,08818.761683,W,0.0,359.9,200214,,,A*71

tcp-console - after going through geoevent processor
  Received Event : NMEAGPGGA,5,02/20/2014 08:37:52 AM,"-88.31268728333333,41.9148789,0.0",1,6,0.8,205.9,M,-34.0,M,,
0 Kudos
KeithNightlinger
New Contributor III
I am working a guess here but it looks like the GPRMC GeoEvent Definition might be out of order.  It looks like the Validity check field should come before the Geometry, unless the connector was built to reorder the fields during processing.  If someone from ESRI could chime in here it would be helpful.

Field order of GeoEvent Definition
DeviceId
TimeStamp
Shape
GEOMETRY
Validity
Speed
Course
Variation
EastWest


Field order of GPRMC NMEA Sentence
      1   220516     Time Stamp
      2   A          validity - A-ok, V-invalid
      3   5133.82    current Latitude
      4   N          North/South
      5   00042.24   current Longitude
      6   W          East/West
      7   173.8      Speed in knots
      8   231.8      True course
      9   130694     Date Stamp
      10  004.2      Variation
      11  W          East/West
      12  *70        checksum

Actual sentance
$GPRMC,144358.0,A,4154.891742,N,08818.761683,W,0.0,359.9,200214,,,A*71
0 Kudos
VladislavPlechnoy
New Contributor III
Keith,

NMEA adapter implements all three formats (GGA, RMC, and GLL). It appears that it interprets GGA messages correctly and for some reason fails on other two. We need to troubleshot this issue to find out what is going on. Source code for this adapter is available in our public GitHub repository. Please feel free to review it at 'https://github.com/Esri/nmea-for-geoevent' I will let you know when I have a fix for this issue.

DeviceID is reported by the device as part of GeoEvent. If you would like to correlate this ID with vehicle ID you need to use a field enricher processor that will enrich geoevents with vehicle ID. Required mapping should be provided during field enricher configuration. If you need help setting that up please let me know. I can assist you with that.

-Vlad.
0 Kudos
KeithNightlinger
New Contributor III
Keith,

Required mapping should be provided during field enricher configuration. If you need help setting that up please let me know. I can assist you with that.

-Vlad.


Vlad,

I would like to take you up on this offer, how can we get started?

Thanks,
Keith
0 Kudos
VladislavPlechnoy
New Contributor III
Keith,

This is how you setup your Field Enricher (File) processor:
1) Create a csv file similar to one attached to this post and put it in the folder that one of your registered folder data stores is pointed at
2) In your service designer add a new processor and choose 'Field Enricher (File)' from the drop down called 'Processor'
3) Give it a name of your choice
4) In 'Registered Folder' drop-down choose the folder data store that you are going to use or click 'Register Folder' button to create a new one
5) Put your csv file name into 'File Name' property
6) 'File Join Field' property value should represent the field name in your csv file that will be used for linking with incoming GeoEvent (For instance from the csv file attached choose: FlightNumber)
6) Fill out 'Enrichment Fields' property value with coma-separated list of fields (For instance from the csv file attached choose: PilotName,PilotPhone)
7) 'Field Tags' property is optional. Leave it blank for now.
😎 'GeoEvent Join Field' property value should specify the field name or tag on the GeoEvent that will be used for linking.
9) Specify new GeoEvent Definition name in the 'Resulting GeoEvent Definition Name' property value.

Let me know if you require more help.

Thanks,
Vlad.
0 Kudos
JoelSmith1
New Contributor III
Keith,

NMEA adapter implements all three formats (GGA, RMC, and GLL). It appears that it interprets GGA messages correctly and for some reason fails on other two. We need to troubleshot this issue to find out what is going on. Source code for this adapter is available in our public GitHub repository. Please feel free to review it at 'https://github.com/Esri/nmea-for-geoevent' I will let you know when I have a fix for this issue.

DeviceID is reported by the device as part of GeoEvent. If you would like to correlate this ID with vehicle ID you need to use a field enricher processor that will enrich geoevents with vehicle ID. Required mapping should be provided during field enricher configuration. If you need help setting that up please let me know. I can assist you with that.

-Vlad.


I'm in the same boat... is there an incident / bug open for this issue? Looking forward to the fix!

Thanks,
Joel
0 Kudos
VladislavPlechnoy
New Contributor III
The NMEA connector has been updated with a new JAR on the Product Gallery.

The update can be downloaded from its page:
NMEA" rel="nofollow" target="_blank">http://www.arcgis.com/home/item.html?id=1717c2f7fe5b497491234ce... 0183 for GeoEvent Processor

This update fixes translation of RMC and GLL messages.

Thanks!
0 Kudos
SamuelRichmond
New Contributor
I believe there is still a bug in the adaptor affecting the RMC NMEA format translation. GGA works with no issues, but from looking at the code on github for the NMEAGPRMCMessageTranslator.java file I notice on line 44 it says:

geoEvent.setField(i++, toPoint(data[3], data[5], "N".equals(data[4]), "E".equals(data[6])));


I'm looking at the strings my GPS device is sending and in field 6 I have "W" not "E". I think this is causing the connector to error out. If so, I would think the "N" could be an "S" as well and cause the same issue. 

GGA works fine. I can't test GLL because my device doesn't support it. I do get errors in my GeoEvent Processor logs that read "Exception while translating a NMEA message : NMEAGPRMC message data is invalid."

Here is a sample of the data I am getting from the GPS:

$GPRMC,052037.0,A,3029.916471,N,09032.533741,W,0.0,,060614,,,A*5F
$GPRMC,052038.0,A,3029.916472,N,09032.533740,W,0.0,,060614,,,A*52
$GPRMC,052039.0,A,3029.916458,N,09032.533756,W,0.0,,060614,,,A*5C
$GPRMC,052040.0,A,3029.916448,N,09032.533767,W,0.0,,060614,,,A*51
$GPRMC,052041.0,A,3029.916448,N,09032.533767,W,0.0,,060614,,,A*50
$GPRMC,052042.0,A,3029.916448,N,09032.533767,W,0.0,,060614,,,A*53
$GPRMC,052043.0,A,3029.916448,N,09032.533767,W,0.0,,060614,,,A*52
$GPRMC,052044.0,A,3029.916448,N,09032.533767,W,0.0,,060614,,,A*55


Any help is much appreciated!
0 Kudos