CONFIGURING YOUR DEVICE

How your device will communicate with the TrackMyRide servers depends upon the type of device, and to some extent, your prefernces. Devices may communicate their position information in a couple of ways. Devices may use either TCP or UDP to send information to our servers.

The protocol used primary depends upon the device and how the manufacturer or developer of the device chooses to communicate with our servers. Learn more about TCP vs. UDP.

For most users the choice between TCP and UDP will already be made for them. Unless you are developing your own device or softare application the choice of communication protocol will already be decided for you.

For example, if you are using our Android or iPhone app they both use TCP to communicate with the TrackMyRide . server. If you are using an Arduino with our Wi-Fi software it also uses TCP to communicate.

The Pepwave Router BR1 Max Router on the hand uses UDP to communicate. One of the benefits of using the TrackMyRide service is the flexibility to allow different types of devices and communications protocols to communicate. We don't care how you get your data here, as long as it gets here.

If you are developing your own device or software application to communicate with our system you may choose the protocol you wish to use. As long as your data is sent to the server in a format that we can understand your device will be able to send the information so we can track it.

USING TCP

The majority of the devices that communicate with the TrackMyRide servers use TCP to send their position information. TCP is widely understood and is generally supported by all network devices. Some devices only support TCP while others may support TCP and UDP.

If you are developing your own application or hardware device and want to send your position information to TrackMyRide, all you have to do it create an HTTP GET request and send it to one of the following web addresses.

http://www.trackmyride.us/iot/web-report.aspx

Calling web-report.aspx is one of the easiest ways to report in with the TrackMyRide servers. When invoked, this page requires two parameters, id and data. An example is provided below.

http://www.trackmyride.us/iot/web-report.aspx?id=af900462-018b-470f-8e29-676b6578b13f&data=$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A

The id parameter is the way that our server identifies the device. Ids are always 36 character alphanumeric values that uniquely identifies your device to our server. The id is automatically generated at the time your device is added to the system. Our system ensures that no two devices will ever have the same id.

You can locate your device's identification information by logging in to the system and opening the settings for the device. Hover over the section entitled API Key to see your device's id as shown in the figure.

The second URL parameter (data) is the location data of the device. The information provided in this parameter is a standard NMEA GPRMC or GPGGA data string.

Typically we use the GPRMC sentance type as it is widely supported by most devices. The one disadvantge to the RMC sentance is that it doesn't contain altitude information. However, since most of the devices using the TrackMyRide service are moving about on the Earth's surface as opposed to flying, this isn't usually a factor. If you do wish to report your altitude then you should use the GGA sentance format. We support either, so that choice is up to you.

GPRMC FORMAT

The GPRMC string contains the recommended minimum amount of data for an effective position report. A typical GPRMC string looks similar to the following:

$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A

The string is known as a CSV string. Each field or bit of data is separated from every other field by a comma. The GPRMC string shown here has twelve values. Each is described below.

$GPRMC
Recommended minimum sentance type
123519
Fix taken at 12:35:19 UTC
A
Status A=active or V=Void
4807.038
Latitude 48 deg 07.038'
N
N = North, S = South. Specifies if device is either north or south of the equator
01131.000
Longitude Longitude 11 deg 31.000'
E
W = West, E = East. Specifies if device is either west or east of the Prime Meridian
022.4
Speed over the ground in knots. Data is optional.
084.4
Track angle (Heading) in degrees True. Data is optional
230394
Date - 23rd of March 1994
003.1
Magnetic Variation. The difference between magnetic and true north
W*6A
The checksum data, always begins with *. This data is not used by TrackMyRide

GPGGA FORMAT

In addition to supporting the standard GPRMC sentance, TrackMyRide servers can also accept GPGGA sentance data. The GPGGA string contains basic location information, fix quality data, and altitude, but does not contain heading or speed data. Below is an example of a GPGGA sentance.

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,,*47

The string is also a CSV delimited string similar to the GPRMC string described above. Each field or bit of data is separated from every other field by a comma. The GPGGA string shown here has sixteen values. Each is described below.

$GPGGA
Essential fix data which provide 3D location and accuracy data
123519
Fix taken at 12:35:19 UTC
4807.038
Latitude 48 deg 07.038'
N
N = North, S = South. Specifies if device is either north or south of the equator
01131.000
Longitude Longitude 11 deg 31.000'
E
W = West, E = East. Specifies if device is either west or east of the Prime Meridian
1
Fix Quality
  • 0 = invalid
  • 1 = GPS fix (SPS)
  • 2 = DGPS fix
  • 3 = PPS fix
  • 4 = Real Time Kinematic
  • 5 = Float RTK
  • 6 = estimated (dead reckoning) (2.3 feature)
  • 7 = Manual input mode
  • 8 = Simulation mode
08
Number of satellites being tracked
0.9
Horizontal dilution of precision
545.4
Altitude above mean sea level
M
Altitude unit of measure M = Meters
46.9
Height of geoid (mean sea level) above WGS84 ellipsoid
M
Unit of measure of height of geoid
(empty field)
Time in seconds since last DGPS update
(empty field)
DGPS station ID number
*47
Checksum data, always begins with *

USING UDP

Devices can communicate with the TrackMyRide servers by using the UDP (User Datagram Protocol). UDP is a connectionless protocol and the TMR servers accept position information from devices by "listening" for data coming in from a device on a specific UDP port. When you add a device to your account and select UDP as the communication protocol a specific port number is assigned to your device. That port number is "reserved" for your device and whenever the server receives data on that port it associates it with your device. Unlike TCP, when you use UDP only one device can be associated with the port. Fourtunatly, there are over 65,000 available UDP ports available.

If you are developing your own application or hardware device and want to send your position information to TrackMyRide via UDP all that is required is to create your device, specifiy UDP as the communications protocol and send your position data to the server assigned port.

The main advantage of using UDP over TCP is that since UDP is connectionless there is less overhead to sending data via UDP. If you are using a cellular or metered data connection this means you will use less data and bandwidth which means that you may save money on your connection costs. The TrackMyRide servers don't care which method you use and there are no advantages or disadvantages to using TCP or UDP as far as your reporting capabilities are concerned. You can even switch between the two methods at any time.

DATA FORMAT

Currently, our UDP listener only accepts GPS location information in the GPRMC format. Eventually we will modify the data parsing program to support the GPGGA sentance format as well. Below is an explanation of the GPRMC sentance format. Notice that the data format is the same whether you are using TCP or UDP.

GPRMC FORMAT

The GPRMC string contains the recommended minimum amount of data for an effective position report. A typical GPRMC string looks similar to the following:

$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A

The string is known as a CSV string. Each field or bit of data is separated from every other field by a comma. The GPRMC string shown here has twelve values. Each is described below.

$GPRMC
Recommended minimum sentance type
123519
Fix taken at 12:35:19 UTC
A
Status A=active or V=Void
4807.038
Latitude 48 deg 07.038'
N
N = North, S = South. Specifies if device is either north or south of the equator
01131.000
Longitude Longitude 11 deg 31.000'
E
W = West, E = East. Specifies if device is either west or east of the Prime Meridian
022.4
Speed over the ground in knots. Data is optional.
084.4
Track angle (Heading) in degrees True. Data is optional
230394
Date - 23rd of March 1994
003.1
Magnetic Variation. The difference between magnetic and true north
W*6A
The checksum data, always begins with *. This data is not used by TrackMyRide