How will I know where my thing is ?
This is one of the questions that keeps popping up while designing an IoT solution, or when trying to fit different connectivity solutions in nice benchmark grids.
As often, there is no silver bullet matching all cases.
I’ll list here various approaches to geolocation, diving into the details about how to handle these questions when using the Sigfox service.
(Having been working at Sigfox for 2 years, I’m obviously biased.)
Feel free to jump in the comments to discuss respective pros/cons of other solutions you know well, or to offer suggestions.
GNSS based geolocation
GNSS stands for Global Navigation Satellite System.
The most well-known GNSS is GPS, but there is two alternatives with different maturity : GLONASS (🇷🇺) & Galileo(🇪🇺).
I’ll be using GPS as a generic term in the rest of this post, as it is the de facto standard.
GPS principle is to use satelitte constellations to determine a device’s position, using time signals.
This service is available anywhere, as long as you’re in line of sight of several satellites.
Before jumping to the following conclusion :
I’ll just put a GPS module in my device
… Make sure that your usecase matches GPS’ strong points and that you’re OK with its constraints.
When to use GPS ?
- Outdoor location
- Very precise location required, at the street level.
- ··· GPS provides ~15 meters precision.
- Information is important enough to cope with
- ··· Extra hardware cost. GPS module will cost between $x & $y
- ··· Extra lifecycle costs. GPS is power-hungry, as you need > 30 seconds (and up to minutes) to get a position fix. Extra consumption means more hidden costs : frequent battery charging/replacement (human time is expensive).
When not to use GPS ?
- You’re looking for indoor locations
- You need years of autonomy, on simple batteries and without human intervention
- Your solution must be a very simple one, and you can’t afford the extra cost.
GPS & Sigfox
Asset tracking is a popular usecase, and several solutions rely on a GPS.
Within the 12-bytes Sigfox useful payload, you can easily pack 2 latitude x longitude pairs (6 bytes each). And there ways to optimise this to send as much data as possible within a single frame :
- Send deltas to a previous point rather than absolute coordinates.
- If you don’t need to pan the whole 90°S-90°N & 180°W-180°E range, you can get rid of a few bits here and there
- You can round down coordinates if you don’t need 15m precision, and that a couple hundred meters is enough
Network-based geolocation
Another too frequent wishful thinking:
Your network will just do some triangulation and tell me where the device is
Sounds easy enough.
The promise is that the network will be able to guess location of a device by comparing how signal sent by a device is received (strength, time of flight) on different receiving stations.
But what would work fine with 4G (power hungry + high network density) don’t work the same way with IoT networks which offer large cells and are as simple as possible, to keep operating costs (.. thus subscription costs) as low as possible.
There are a lot of claims floating around, with various technology & service providers promising a lot.
My point here is not to compare technologies, using best- or worst-case scenario depending on where I want to lead the benchmark.
But to give details about available services, now.
I’ll only detail the current Sigfox service, as I lack details about current offering from other actors (LoRaWAN operators or else).
Feel free to provide these to me, so I can update this post accordingly.
Sigfox network-based geolocation
Principle
Sigfox is offering to its users a network-based service, which provide the location of a device with a kilometric-range precision.
This service is available today, and is easy to use :
- Setup a webhook, and your application server will receive for each message the following :
- ···latitude
- ···longitude
- ··· accuracy in meters of the provided value. Can be considered as a confidence score.
A couple of minutes of configuration, and you’ll receive customised HTTP requests for each message received from one of your devices
How does it work
Location is calculated by the Sigfox network based on two main information :
- Probabilistic : Given the stations that received the message, with their respective Received Signal Strength Intensity, we’re able to approximate the emitter position
- Machine Learning : Based on a dataset of GPS-based messages, we can train a model that will improve the computed location precision.
This is still a beta offer, and will keep on improving with the network densification and the evergrowing datasets being gathered.
Usage
The point is not replace GPS, but to offer an alternative to enable :
- Geolocation without the extra cost of a GPS module
- Add geolocation feature to already deployed solutions
This service is priced at a fraction of the conenctivity cost, depending on your contract.
As a solution developer, the hard part is to narrow down what your application really need.
Meter-precision location is of course better than kilometric. But do your appliation really need this precision, and do the extra components & cost match your constraints ?
When to use Sigfox network-based geolocation
- A few kms precision is enough for your tracking application
- ··· You want to know if your asset is at Storage point A, Customer site B, Customer Site C, on its way between B and C, or at some unexpected location.
- Location is not the core feature of your application.
When not to use Sigfox network-base geolocation
- Getting a guaranteed accuracy of <100 meters is critical.
- Your device needs to know where it is
- ··· When using network-based location, the information is known by your cloud application first.
- ··· Unless you push this info down to your device, it is not aware of its postion.
- ··· As GPS systems has been designed as navigation-centric, in this case the device is the first to know its location.
Indoor location
As mentioned earlier:
- GPS doesn’t work well indoors
- Network-based location will tell you on which site your device is, not in which room.
For precise indoor geolocation, there are three main approaches
- Bluetooth beacons
- Wifi access points
- Proprietary RF solutions that I won’t detail here.
Wifi positioning
Any Wifi device is able to scan for surrounding hotspots, without connecting to them.
By confronting this information to databases compiling location of Wifi hotspots, you can get a very precise location even when indoor.
This precision can be between a few meters and a couple hundred meters, depending on the information you share and the local database quality.
There are three major providers offering access to Wifi hotspots databases :
All of them offers simple API endpoints to retrieve instantly the location matching provided wifi hotspots info. Up to you to compare their offers, based on pricing & use terms.
Another approach could be to purchase such databases, if keeping full control is worth the extra initial investment in your case.
Wifi positioning with Sigfox
Without any optimisation, the 12-bytes Sigfox payload makes room for 2 Wifi hotspots MAC adresses.
Existing service
Loka is offering a Sigfox+Wifi geolocation service, which was trialed during Rio de Janeiro Olympics to track athletes equipments.
Check out their website for details: http://loka-systems.com/
Build a demo
A basic demo using the Pycom SiPy board and its Sigfox+Wifi+BLE module is available on Github.
This demo relies on the Google API, but switching provider would be rather easy and would have zero impact on the device itself.
To send the RSSI along for increased accuracy, you can either :
- Split the data into two or more Sigfox messages
- Compress the MAC address, especially the manufacturer info.
When to use Wifi positioning
- Looking for precise indoor location
- Cannot/Don’t want to deal with extra infrastructure
- Devices are moving within unknown sites
When not to use Wifi positioning
- Don’t want to rely on a 3rd party
- Devices moving within remote or underequiped sites
Bluetooth beacons
One way to get precise indoor location is to use Bluetooth beacons.
This can be combined with another solution (GPS, network-based) to be able to track assets both indoor & outdoor.
Either you’ll have scanner that will detect incoming devices and will send the information Device 1234 seen by scanner ABC .
It can also be the other way, with the device sending the information I’m seeing beacons ABC and XYZ
It’s then a matter of confronting these informations with your own database, knowing that beacon XYZ has been installed in the 3rd floor meeting room, and ABC in the staircase.
It’s possible to get very precise location using sensitiviy and time-of-flight, providing you install enough beacons.
Several players are offering solutions in this field, such as Kontakt.io to mention one I tried recently.
Bluetooth alone is not enough to send this data, as it will only help with the point-to-point communication between scanners & beacons.
You need either your devices to have onboard connectivity (Sigfox, Wifi, else), or your local gateways to be connected to the Internet (Wired, Wifi).
When to use Bluetooth beacons
- You need precise indoor location : building, floor, room, section, ..
- Devices will only move within known sites
- You can manage local infrastructure deployment
When not to use Bluetooth beacons
- Your devices moves between unpredictable sites
- You cannot manage installation onsite
TL;DR
There is not a unique way to approach the geolocation challenge for IoT solutions.
Before chosing between one of them, or a combination of them, answering a set of basic questions will help to make an informed choice :
- What is the minimum accuracy required by my solution ?
- Do my solution require outdoor location only, indoor only, or both ?
- ··· If indoor, will it be in known & managed sites, or anywhere ?
- What are my hardware & lifecycle cost constraints ?
- Do the device needs to be aware of its location ?
One last advice: don’t make your choice based on vendor claims (not even mine).
Test, assess, compare: nothing replace a test in the real word.