The idea for an application on a smartphone which publishes your location via MQTT was born a few weeks prior to the first commit to the Android app. My first notes are dated June 16th 2013, and shortly thereafter I spoke to Alexander about the idea of the app which would turn into what we now call OwnTracks. Just after first writing about it, Christoph created the iOS app.

The principle is simple enough: an app on an iOS or Android device transmits the device’s location in a JSON payload via MQTT to a broker I operate and from there, I can do whatever I wish with the data.

Andy's tweet

We started this project under what we thought was a very techy-sounding and very sexy name MQTTitude, but it was unpronounceable; friends thought we were being rude when we tried to say the word, and since we couldn’t agree on giving the name a few more t_s to make it really impossible, we decided to re-brand and chose OwnTracks. The name should associate _tracks as in “location tracking”, and own as in “you own the data” or “your own data”.

Initially, the JSON payload contained a time-stamp, and decimal latitude and longitude. These were augmented with the device’s battery level (for monitoring) and positional accuracy. JSON makes it easy to extract the data you want from the payload in almost any programming or scripting language, and it enables us to add elements to the object without breaking your application. (You are not using regular expressions to access payload data, are you?!)

{
    "_type": "location", 
    "acc": "141", 
    "batt": "27", 
    "lat": "48.858334", 
    "lon": "2.295134", 
    "tst": "1402507486"
}

Early on, we had a lot of ideas pour in, and people started doing fun things with OwnTracks. Marshall T. Rose added support for OwnTracks into The Thing System which greatly pleased us, and Ben Jones wanted us to add support for waypoints and geo-fences which he used to implement a binding for openHAB to control “stuff” upon entering or leaving the premises.

If I recall correctly, we then added support for what we call “Friends and Family”: people who share an MQTT broker can ‘see’ each other, and the user-interface displays icons on a list or on a map. Friends optionally get to see me entering/leaving waypoints, if I share them.

Screenshots iOS/Android

Bryan Boyd literally took OwnTracks for a run when he live-tweeted a marathon using a bunch of technology together with our app as a GPS capture device, and others have put OwnTracks to good use in other ways, using it to determine colleagues’ whereabouts (which later became this), track and display delayed trains, and all sorts of other things.

While we do try and keep the apps’ capabilities in sync with eachother (iOS / Android), Christoph tends to implement features on iOS as soon as we breathe an idea to him, which is why the iOS app is slightly ahead feature-wise. For example, on iOS we now have iBeacon support as well as support for the iPhone 5 pedometer function, and I’ll tell you something: testing that has literally been exhausting for me: all that walking … The way it works is, OwnTracks keeps track of the number of steps and I can request it reports the steps taken since midnight:

{"_type":"steps", "tst":1401966882, "steps":3269}

OwnTracks has really become international, and I think the user farthest away from us here in Germany is in Tasmania. (The only reason I know is because I’ve seen an OwnTracks JSON payload which was handed over for debugging purposes; remember: it’s your data; we don’t see it if you don’t show us, and that’s good! :-) Update: Matt reminds me that I’m quite wrong: Ben’s furthest away, in New Zealand. :-)

OwnTracks in Tasmania

Many thanks to everybody who has contributed code, ideas, time for testing, documentation, and everything else we’ve needed to have over one several thousand people now use our Open Source apps!

OwnTracks, location, and MQTT :: 16 Jun 2014 :: e-mail