Giter Club home page Giter Club logo

elastic_pct_tracking's Introduction

SPOT Tracking with the Elastic Stack

In 2018, my brother was hiking the Pacific Crest Trail. After much convincing, we were able to get him to purchase a SPOT. Luckily, this had an API associated with it and I was able to track his movements throughout his hike. I blogged about this experience in the links below. There seems to be some general interest in this code so I figured it couldn't hurt to throw it on GitHub.

I am hosting a read only instance on Elastic Cloud that takes advantage of freely available features like Maps and Canvas.

  • Host: https://b778b00c9167a18a95c2a263f6baea62.us-east-1.aws.found.io:9243
  • Username: Elastic_PCT
  • Password: whereismike

Setup

I haven't had time to generalize the script or saved objects for Kibana. I had a cron job that ran the python script every 10 minutes. You'll want to open the mike_location.py and add a Google Maps API key, an OpenWeatherMap API, SPOT feed ID and the details for your cluster. If you make no changes to the index name, you can import the saved_objects.ndjson file. Unfortunately, everything will be labeled "Mike" .

This is a no judgement coding zone, I was and still am a python n00b. I also realize it's unnecessary to create the index and mappings every run. If you want to improve this code, feel free to submit a PR :-)

You can run the stack on Elastic Cloud or download for a self managed experience.

Dashboard

Click here and login with Elastic_PCT : whereismike for a read only view of the latest dashboard

screenshot

Canvas

Click here and login with Elastic_PCT : whereismike for a read only view of this Canvas workpad

screenshot

screenshot

screenshot

Elastic Maps

Click here and login with Elastic_PCT : whereismike for a read only view of this map

screenshot

screenshot

Example document

{
  "_index": "mike_location-v2",
  "_type": "doc",
  "_id": "1077296819",
  "_version": 1,
  "_score": null,
  "_source": {
    "distance_text": "36 ft",
    "origin_distance_miles": 1363.81270176,
    "weather_place": "Marietta-Alderwood",
    "origin_estimated_duration_text": "18 days 21 hours",
    "weather_rain": {
      "1h": 0.25
    },
    "weather_wind": {
      "speed": 1.22,
      "deg": 140.001
    },
    "messageType": "TRACK",
    "day_or_night": "Night",
    "showCustomMsg": "N",
    "weather_wind_direction": "SE",
    "weather_long_description": "light rain",
    "weather_sunset": "2018-10-07T01:38:12+00",
    "batteryState": "LOW",
    "address_state": "Washington",
    "address_postcode": "98226-8048",
    "tracker_detailedMessageShown": false,
    "address_country": "USA",
    "id": 1077296819,
    "elevation_feet": 168.13703008712767,
    "origin_distance_text": "1,364 mi",
    "tracker_status": "ACTIVE",
    "address_raw": "I 5, Birchwood, Whatcom County, Washington, 98226-8048, USA",
    "weather_timestamp": "2018-10-06T00:35:00+00",
    "altitude": 74,
    "address_road": "I 5",
    "weather_short_description": "Rain",
    "location": {
      "lat": 48.79611,
      "lon": -122.52904
    },
    "previous_location": {
      "lat": 48.79602,
      "lon": -122.52913
    },
    "weather_sunrise": "2018-10-06T14:17:14+00",
    "latitude": 48.79611,
    "distance_meters": 11,
    "hidden": 0,
    "origin_distance_meters": 2194848,
    "weather_humidity": 76,
    "weather_snow": {},
    "modelId": "SPOT3",
    "tracker_daysRange": 7,
    "distance_miles": 0.00683507,
    "weather_clouds": 90,
    "elevation_resolution": 4.771975994110107,
    "address_county": "Whatcom County",
    "tracker_id": "0xUCMqoO8VBNO2qCuh8MMobhyCmrlAYbR",
    "messengerId": "0-3086869",
    "tracker_usage": 0,
    "tracker_name": "Mike's SPOT",
    "origin_estimated_duration_seconds": 1632078,
    "clientUnixTime": "0",
    "messageDetail": "",
    "address_country_code": "us",
    "estimated_duration_seconds": 8,
    "weather_pressure": {
      "press": 1014,
      "sea_level": null
    },
    "unixTime": 1538787465,
    "elevation_meters": 51.24816513061523,
    "tracker_type": "SHARED_PAGE",
    "longitude": -122.52904,
    "dateTime": "2018-10-06T00:57:45+0000",
    "messengerName": "Mike's Spot",
    "weather_temperature": {
      "temp_max": 53.96,
      "temp_kf": null,
      "temp": 52.95,
      "temp_min": 51.8
    },
    "tracker_description": "Mike's SPOT",
    "estimated_duration_text": "1 min"
  },
  "fields": {
    "dateTime": [
      "2018-10-06T00:57:45.000Z"
    ],
    "weather_sunset": [
      "2018-10-07T01:38:12.000Z"
    ],
    "weather_timestamp": [
      "2018-10-06T00:35:00.000Z"
    ],
    "hour_of_day": [
      0
    ],
    "weather_sunrise": [
      "2018-10-06T14:17:14.000Z"
    ]
  },
  "sort": [
    1538787465000
  ]
}

elastic_pct_tracking's People

Stargazers

 avatar

Watchers

James Cloos avatar AlexF avatar

Forkers

poldinik

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.