Table of Contents
The Internet of Things (IoT) is producing many great products which will change our world. Smart thermostats are allowing us to use the power of the internet to control our homes from afar and setup smart heating and cooling schedules. Amazon’s recent Dash product makes ordering simple items such as laundry detergent from your home a trivial process. These are just some of the simple ideas put into practice which harness the concept of IoT.
One of the most popular IoT products on the market is beacons. The amount of manufacturers entering this arena is increasing. However, the two most common beacons (by opinion of the author) as of the date of this writing are Estimote and Gimbal. Currently, these beacons are meant to work with a custom application written to run on a mobile device (iOS or Android). The mobile device will pickup these beacons and perform the desired logic specified by the developer.
One common idea for these beacons is to use them in a way that tracks something. This means they wouldn’t be stationary as they are commonly used but rather mobile or on the go. This article aims to look deeper into this subject.
Asset Tracking Use Case
For the sake of example, a simple use case will be defined. Using beacons will be investigated to potentially meet the demands of this use case. Since beacons are becoming more common and are rather affordable, it is likely this use case won’t be new for some organizations or individuals.
Example Use Case: Acme Distributors Inc. is a company that distributes merchandise to its customers. This merchandise is anything from shoes to cigars. Everything is kept in a central warehouse where individual orders are filled and then merchandise is shipped out. Recently, Acme has experienced a high rate of loss on inventory. The company executives wish to implement an affordable asset tracking system to track the merchandise stored in the warehouse in real-time. They wish to see the merchandise on a map which resembles the floor plan of the warehouse.
The above use case isn’t new. In fact, organizations have been using other technologies to track their merchandise for years. However, with the power of IoT, more options than ever before are available to solve common business problems. These technologies also provide many great benefits which can be achieved by connecting to the internet.
Currently, there isn’t any available out of the box solutions involving beacons that are specifically tailored to solve this particular business problem. Certainly other technologies exist but the aim of this article is to explore a solution involving beacons.
The current beacons are designed to be affixed to a wall or ceiling and then when mobile devices with a custom application come into proximity, some kind of logic will fire and something special happens. This is certainly useful but for tracking assets it isn’t ideal. This is because tracking assets is the inverse of the current beacon implementation.
In order to understand why it is the inverse, think about how to implement this kind of solution using beacons. The mobile device is what receives the signals from the beacons and performs the desired logic. This requires the mobile device to have a connection to the internet to access a REST backend (as a simple example) for performing important logic. Performing the logic locally without connecting to another system wouldn’t be very useful in this situation which is why the example of a REST backend is mentioned.
Therefore, in order to properly detect assets as they move around a warehouse using beacons, a couple of static mobile devices would be needed. These would be set in strategic locations to detect the beacons and then respond accordingly. Conversely, the normal way of doing things involves static beacons which aren’t moving but mobile devices that are.
The common beacons mentioned are designed in such a way that they detect the signal strength of each beacon. Upon getting to a certain signal threshold, an event will fire. These are commonly referred to sightings, arrivals, and departures. However, what about trying to get an exact location for a beacon? This is harder than it seems because all that is available is a signal strength. In contrast, GPS works by using triangulation and this technology can even work with cell phone towers. By combining three points of reference a signal can be analyzed and a fairly accurate location can be determined.
The only way to get an accurate location (as known by the author) of an asset using a beacon is to use triangulation. Estimote has a technology called Estimote Indoor Location which aims to solve this problem. However, it isn’t suited for the example use case. This is because it works by strategically placing beacons indoors and then tracking a user via their mobile phone in real-time. The example use cases aims to track assets by their attached beacons which are moving and not tracking the mobile device itself.
With the limitations and issues described, there is a potential prototype available which might work. It is important to note that the author has not implemented the prototype but for the sake of discussion has listed it in hopes of stimulating innovation and a community discussion.
Since the Estimote and Gimbal SDKs are designed to run on a mobile device, this will affect the design of the prototype. Something else to consider is the mobile operating system used. It is recommended to use Android instead of iOS due to its open nature. Android can be installed on just about any device in contrast to iOS. This is important because the prototype will require multiple devices running Android to detect the beacons.
Triangulation will be necessary to get accurate location results. However, since this isn’t built into any of the SDKs, it will be up to the implementer of this prototype to properly engineer it. Using a combination of static devices running Android with Bluetooth adapters, these devices can be placed around a building for the sole purpose of detecting the moving beacons. The beacons will be detected by multiple Android devices and an algorithm involving triangulation will be needed. The location of a beacon can be discovered by using the various Android devices and the reported signal strengths in conjunction with triangulation. The number of Android devices deployed will depend upon the coverage needed so a site survey will be necessary.
This may be tricky to implement but this is an idea worth considering. It isn’t cost effective nor recommended to use Android tablets or phones as static devices to detect the beacons. Rather, the author recommends using a cheap PC with a Bluetooth adapter. The PC shown in the Asset Tracking Prototype diagram (upper-right) is an Intel Compute Stick and is highly recommended as it fills the requirements perfectly. Many options exist to fill this need and they are cost-effective as well. PCs can be purchased from various manufacturers with Android already installed but at the time of this writing they only came with Android 4.4.2 which doesn’t work with the beacons. This is due to that version of Android lacking BLE support, or Bluetooth Low Energy.
The version of Android recommended is Lollipop or Android 5.0. Using a cheap PC (x86) with a Bluetooth adapter, Android can be installed on it. The type of PC and hardware used could be an issue so it is recommended to research the Android x86 project by visiting the official project page. Once these PCs are placed around a building, custom software developed using triangulation, and a means of communicating among each device, the potential to establish an accurate location of a moving beacon is possible.
This article looked at an example use case involving beacons to track assets. The current solutions available were discussed as was a potential prototype to solve the problem. This prototype hasn’t been tested or officially developed but the purpose of this article is to provide ideas to promote collaboration and deep discussion on the example use case.
Please sound off in the comments section below. Is this prototype a possibility? If not, what is recommended? Has this problem using beacons been solved before? How should the location algorithm be implemented? Thanks for reading and your potential comments.