All Ruby on Rails Node JS Android iOS React Native Frontend

Quick Review - Indoorway SDK

Indoorway SDK

Beacons have been constantly gaining popularity since 2013 when Apple introduced the iBeacon technology in 2013, and Google their Eddystone in 2015. Today, beacons are used in airports, stadiums, and shopping malls. Mobile marketers are showing more and more interest in this technology every year, and today it is valued at about 98 billion dollars.

Recently we got a pretty white box with some pretty goodies inside from Indoorway Beacons. We decided to give it a try and test it out!

Inside of the starter kit we can find 5 Sensoro beacons with the Indoorway logo. The beacons are powered by 4 AA batteries which should last for about 7-8 years. They are unfortunately not water- or shockproof.

Beacons

The simplicity of bluetooth beacons has made them popular for basic indoor location applications.

Beacons are basically small bluetooth devices that constantly transmit signal, and, let’s be clear - they have no location intelligence built in. Right now we have two standards of transmitting signals - iBeacon from Apple and Eddystone from Google. Beacons do not normally affect other radio networks and they also do not interfere with medical devices, however if you install beacons in a space with lots of wifi, they can interfere. This is caused by sharing same frequency - 2.4 and 5 GHz. 

Creating map

You simply go to https://indoorway.com, create an account, and you are ready to set up your first location.

First of all, you have to place your building on the map. After that, the Map Creator appears in front of your eyes. This is where you will have to set up your space plan. The picture must have at least 1000px in width or height, otherwise you won’t be able to continue. Also this is where it’s gets a bit tricky, because unfortunately I didn’t have my house plan, but you can do it anyway without it !

The Map Creator itself is very intuitive and super easy to use. I have set my room space, added a wall scheme, and mapped out the indoor routes. After that you have to add a room scheme to the map. Overall, I would say that setting up new locations using Map Creator is very smooth and easy👌 

Installing Beacons

Looking at the help section of the website, we can find tips on how to setup beacons. For example, beacons have to be in the field of vision of the tracked mobile device, and the best height for them is about 2 meters, so placing it on the wall at this height can be a good idea. This is probably the hardest step to achieve. After a few tries to setup this I finally did it, but it is still not working perfect. The position of users often jumps from one wall to the other and messes up the results, but this may be because there are not enough beacons in here, or the space isn’t big enough. 

Radio Map

To create a radio map we have to download the Indoorway Measurements app.

After logging in you will see your map with blue dots. These are spots that you have to scan. You simply walk all over the map and scan by spinning around.

There have to be at least 3 beacons detected next to you to complete the scan for the current dot - so one beacon for 60 square meters will not be enough. And let’s be honest - to create a good, working map you will have to spend some time spinning around 😉 Another problem is the really long time it takes to see the new map in the app. I have deleted the old map, added a new one, and I had to wait for a few hours to see it in the app. 

Integrate it with your app

Integrating Indoorway beacons with your app is quite easy. The documentation is well-written and everything is clear.

To connect an iOS app to the web service you basically need to just call one method.

import IndoorwaySdk
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    IndoorwaySdk.configure(token: "Your API key")
return true
}

To display a map you will have to get the Map UUID and the Building UUID.


var mapView = IndoorwayMapView()
let description = IndoorwayMapDescription(buildingUuid: "building UUID",
                                          mapUuid: "map UUID")

mapView.loadMap(with: description) { [weak self] (completed) in
   self?.mapView.showsUserLocation = completed
}

But to get them you have to display link of your current map and look at the URL:

https://dashboard.indoorway.com/wizard/buildings/„building UUID"/maps/„map UUID"/revision/

Off course, delegate also needs to be set:

pdemapView.delegate = self

You should also add mapViewDidFinishLoadingMap and mapViewDidFailLoadingMap methods.

That’s all you need to display a map in your mobile app 🙂

You can also integrate Kontakt.io and Estimote beacons with the Indoorway SDK. 

Is it accurate?

We can read on the Indoorway website that their beacons can show positions with up to 1-2 meter accuracy.

So what exactly does the Indoorway SDK use to track our position?

  • Magnetometers
  • Gyroscopes
  • BLE Algorithms

Accuracy is mostly achieved thanks to a good beacon setup. There are some cases, for example entering a new room, when new beacons come in range of our phone and the position glitches out. However, this isn’t too common, so I would say that the technology is quite accurate, but only when everything is set up well 😄

How does it work under the hood?

The stability of signal is based on two things - broadcast power and advertising interval (frequency). Broadcast power is pretty simple - the stronger the signal power, the more accurate the distance estimates will be. Beacon broadcasting power can be changed. Mostly the values range from -30/40 dBm up to 4dBM, but remember that more broadcasting power will have a negative effect on battery life.

Another thing is frequency. Beacons do not broadcast continuously - they blink, just like a lighthouse from afar. They transmit advertising packets which are basically saying - “Hello there, I’m here!” These are usually measured in milliseconds. Setting the interval at 700ms level can cause some serious problems with signal stability. Apple iBeacon standard is set at 100ms - which in most cases is a bit overkill. Also, phones are not scanning for signals constantly. When the phone is unlocked, the interval of scanning is high, but when it will is locked for a few minutes, the interval is be much lower, preventing the battery of draining.

Also.. What other “magic” beacons are using to make the user position accurate? Here are few of them.

Fingerprinting signal. Fingerprinting, i.e. collecting beacon signal data from known positions on the route. Basically, when we create a radio map using a measurement map, we are using the fingerprinting method. Thanks to many signals from the same spot, we can determine the exact position of the user on the route.

Triangulation, more precisely called trilateration, is a process that measures distance from 3 fixed points. However, data from trilateration is very often not enough to properly determine our current position.

There are a lot of things that stop us from making these calculations accurate - the way we hold our smartphone, beacon signal fluctuations, and even battery life.

Kalman filters - these are series of measurements observed over time that contain inaccuracies, and simply estimate all these unknowns to be more accurate. This can prevent a lot of “position jumping” around the whole room.

Overall

Indoor location technology is already used in many places, but this is probably just the beginning. There is variety of places where beacons can be used: museums, shopping centres, airports, or basically any other high-traffic public space. It is estimated that in 2019 there will be 60 million beacons installed all over the world. Indoorway is probably delivering one of the best experiences with beacons available right now. It can work with most popular beacons, and they provide a really good SDK!

Let's make the world better for everyone - join us
READ ALSO FROM IoT
Read also
Need a successful project?
Estimate project or contact us