I will start with this question, What is a Beacon? a Beacon is a Bluetooth Low Energy (BLE) device that transmit continuous data/signal over short distances. It uses low energy (from what you can tell from the name) but has similar range as the regular bluetooth. Beacons can be used for different purposes, mostly nowadays they use them in retail stores, hardware store, and museums. Think about it like a lighthouse, where it always broadcast its signal no matter what!
The Beacons are very small devices, some of them are the size of a coin. It can be placed around without people noticing them, and they will transmit their signal continuously across few feet. This signal can be detected by a smartphone or any devices that supports BLE, then device can perform certain things based on the signal detected. For example, lets say that a shoe store implemented those Beacons, and they also created an app that can read and react to them, then if a customer walks into the store, and have the app installed on his device, he can get notifications directly to his phone informing him about certain deals or products directly on his phone without opening the app or doing any other thing. Pretty sweet, huh?
Lets get more technical here, Each Beacons broadcasts their ID’s, which is divided into three values: the UUID, Major, and Minor. Those values can be customized based on your needs. For example, Lets go back to the shoe store example, you can consider the UUID as your store branch number, the Major is the section (men, women, kids) and the Minor can be the isle number. So if you customize the beacon to be (3030, 2, 2) this could be that store # 3030, 2 for women, and isle #2. Then if a customer walks by isle 2 in the women’s section and their device picks up that beacon, they will get a notification! If you want to read more about the physics behind the beacons click here.
Would any one with a device capable of receiving that signal will get the notification? The answer is No. Only those devices who have the store app installed on their devices will be able to pick up that signal and display the notification. Which leads us to talk about the app itself. Any store who would like to benefit from this must have an app that implements the Beacons SDK within.
I have tested beacons from 2 different vendors, Estimote and Gimbal. Both are very similar as far as range and proximity, but the major difference was the SDK and the tools. Estimote provide its users with a wide range of tools and apps to test and play with your beacons before you actually start coding your app. Also, I noticed that the online support and adoption for Estimote is wider than the rest of its competitors. They look prettier as well. In both, Estimote and Gibmal, the user interface will allow you to customize the beacon the way you want, as far as setting the UUID, Major and Minor values, then it syncs automatically with the beacon and you can see the results right away.
I wrote a sample iOS app that reads the proximity of the beacons, and i found out that you can get 4 different values, which are unknown, immediate, near, and far. Unknown means that the app can not read the bacon, which could be because the beacon is off, the app is checking for the wrong UUID, or the beacon simply is very far away from the device. Immediate means a strong signal, usually within couple inches. Near is a medium signal and within few feet. Far is a weak signal and more than few feet distance from the device. One of the major issues I found while testing the beacons where proximity and incorrect readings. I have tested them in different spaces, small rooms, large open areas, museums, and i found the same issue across; if the room is crowded with people you will always get a false reading, and the proximity will be off by few meters. For example, if you stand across from the beacon you should read either Immediate or Near, but if someone stands between you and the beacon the signal drops drastically and you can read Far or even sometimes Unknown. That could be a problem if you want to write an app that uses Beacons for navigation or some sort of a map way finding, you might have to rely on a combination of GPS, WiFi and beacons to achieve that. Keep in mind also that the ranging works only when the app is active, and you can’t get those values if your app goes to background or become inactive. But you will still be able to receive the notifications once your app senses the Beacon around.
Below is a very nice infographic by Kontak.io that shows how do Beacons work in a hypothetical store.
This was just an introduction to Beacons and my experience and test results that i got while playing with them for about couple of months, If you have any questions feel free to comment below!