Website Maps

When we create a blog post with a trip in Molly, we like to include a map of the trip in the side panel. And we want this map to be fully automatic for a couple of reasons. First, it would be nice if the map is updating in real-time without us having to do anything, like uploading files to the Internet. Secondly, if there are any manual activities, we have to remember to do these, and it is just as likely we would forget. At a minimum, we want simple tracking to be happening with zero effort. Of course, if we want to record something of interest, or note a stop for lunch or taking on more fuel, this is a manual activity. But even these manual notations should be easy to do, otherwise we probably would not bother. In summary, we want our maps to be a good representation of the trip but super easy to create.

At the heart of the system is some software hosted up in the cloud which gathers tracking points and GPS coded email messages and automatically generates our website maps.

The cloud software is based on lambda functions from AWS. The three lambda functions are

  • retrieveSpotMessages. This function connects with the Spot servers looking for new tracking points. When one is discovered, it is extracted from the server and sent to the listenForNewWaypoints function for further processing
  • parse-email. This function receives incoming email messages from various sources and parses them looking for GPS information and other attribute information, like message type and a short description. Because emails can come from different sources, how the email is parsed varies based on the source. And, just like the retrieveSpotMessages function, the tracking points are extracted from the email is sent along to listenForNewWaypoints for further processing.
  • listenForNewWaypoints. The last function processes the tracks from either retrieveSpotMessages or parse-email and stores these waypoints in a database (of sorts) and generates various javascript files for display of maps on our website.

In the future we also want to automatically retrieve waypoints off the Garmin servers. Just haven’t got around to writing this software yet.

How it Works

So, how how the system basically works. At the start of a trip, we send an email message with the keyword “Reset” along with he GPS coordinates, which tells the lambda functions that now is a good time to start a new track and marks the start of the trip. As Molly drives around, the Spot Trace sends locations report or waypoints every 10 minutes to the Spot servers. Our cloud software connects with the Spot servers every five minutes looking for new tracking points and automatically adds these to the website map. During the trip, notable items can be manually reported via email with either the MotionX application, if we are in cell coverage, or via the Garmin inReach devices if out of coverage. Once the email is received by our cloud application, they are processed and added automatically to the website with their respective icon.

When sending a message from the Garmin inReach devices, we use the Earthmate application on our iPhones or iPad. Unfortunately, the way the email message is formatted from Garmin, it is a little tricky to extract the email message body. So, we add the prefix “Label:”, and everything that follows is the actual message.

Example Website Waypoint

Waypoints added via an email have two parts, a keyword followed a short description. For the example below the message was “Food Ahwahnee for Coffee”, the other information like the conversion to Eating Place, latitude, longitude, Altitude and date and Time stamp was generated automatically.

With the MotionX application or Garmin inReach we can send the messages, and the above point is automatically added to our map.
Available Keywords
IconKeywordPurpose
PointTracking Point
CampCamping in Molly
ViewScenic Viewpoint
GasFueling Station
RepairGarage for Repairs
POIPoint of Interest
InfoInformation
WIFIWiFi Available
FoodRestaurant or Cafe
HotelHotel or other Accommodation
Last known location
The above map was auto-generated from a combination of SPOT Trace tracking points and manually entered points.