48

I've been playing around with using iOS devices as both broadcasters and receivers using the new iBeacon API's in iOS 7.

The docs don't go into detail at which distances the receiving device should see each proximity indicator, and specifically calls them out as "relative". When experimenting a with a demo app, I observed these distances (iPhone == receiver, iPad == broadcaster):

Far - 50 feet?

Near - 2-3 feet

Immediate - 2 inches

These seemed really small to me, and there is perhaps a hint in the CLBeaconRegion class reference, which allows you to specify the signal strength of your device from 1m away.

peripheralDataWithMeasuredPower:

Retrieves data that can be used to advertise the current device as a beacon.

Parameters

measuredPower

The received signal strength indicator (RSSI) value (measured in decibels) for the device. This value represents the measured strength of the beacon from one meter away and is used during ranging. Specify nil to use the default value for the device.

My amateur calibration yielded -60, which I set and re-tested:

Far - hundreds(ish) feet

Near - ~50 feet

Immediate - 1 meter (slightly less)

Are the results from my second test the "ideal" ranges according to Apple? They are really far away from the "default" setting I experienced in the first test.

Or should I perhaps consider these ranges "calibratable" depending on my needs?

Community
  • 1
  • 1
Erik Kerber
  • 5,646
  • 7
  • 38
  • 56
  • Apologies in advance to mixing metric and imperial units. – Erik Kerber Oct 02 '13 at 01:45
  • You should definitely go with calibration before putting it in a production. Even in an "immediate" mode you can put your hand between two devices and the status changes to nearby! I guess you can play around by monitoring RSSI of each beacons and do the right thing each time you getting "didRangeBeacons". – Maziyar Dec 24 '13 at 12:51
  • Did you try Gimbal? http://gigaom.com/2013/12/09/step-aside-ibeacon-qualcomm-has-low-cost-gimbal-proximity-beacons/ – CC. Feb 21 '14 at 03:38

1 Answers1

35

From what I understood of the API is that there is never a guarantee on actual distance, you should not use the readings to be considered an accurate measurement. The proximity is rather used to determine the relative distance between different beacons so that you can respond accordingly based on your applications requirements.

With that said, Apple definitely draws a gray area in their documentation. The description of measuredPower is intriguing and easily instils the thought that you can use this value to get an accurate distance reading (once calibrated of course). I just don't think that is the case however, with the likelihood of signal attenuation in these significantly low powered devices, I don't expect you'd get consistently accurate readings of an actual distance.

From the CLBeacon reference the description of accuracy reads

Indicates the one sigma horizontal accuracy in meters. Use this property to differentiate between beacons with the same proximity value. Do not use it to identify a precise location for the beacon. Accuracy values may fluctuate due to RF interference.

I feel that this inexplicably resonates throughout the entire usage of the iBeacon feature.

This is all my interpretation, I've not gone as fas as testing this in multiple environments over time to see if consistent readings are given. I am not sure if this helps at all.

Chris Wagner
  • 20,773
  • 8
  • 74
  • 95
  • 4
    I tend to agree with you. What I really want to know is what they intend with "immediate", as in "the user should pull out their phone and place it next to the beacon" or "the user should be close enough to the beacon to high-five it". Important for planning possible use cases. – Erik Kerber Oct 01 '13 at 19:58
  • 2
    I would guess that is the case, look at the new AppleTV feature where you touch your iPhone to the AppleTV to configure it (http://support.apple.com/kb/HT5900). I would wager they are using iBeacons with the Immediate proximity to trigger this. – Chris Wagner Oct 01 '13 at 20:04
  • I guess one use case for "immediate" would be the payment when you place your phone next to the cashier just like NFC. So if you have an app for paying and you know that it only works when you're in the store and close as NFC, that would be more secure rather than knowing you can pay while you are passing by on the other side of the street. – Maziyar Dec 24 '13 at 12:49
  • 1
    Hmmm. Might it be theoretically possible to use multiple iBeacons and triangulate the user's exact position that way? I'm thinking of creating a marker-less Augmented Reality-app and was thinking of using iBeacons as a way to more accurately get the user's position in 3D space. – gillesv Jan 12 '14 at 16:10
  • 1
    Absolutely I would say it is possibly to use triangulation techniques to get a more accurate location. Another possibility is to have a database of geo-coordinates for specific beacon UUIDs. Then when the device encounters a UUID it knows were on the globe it is by looking up the geo coordinates in the database. – Chris Wagner Jan 12 '14 at 20:09
  • 1
    @ErikKerber I think there's a misunderstanding in this post of what exactly the 'measured power' is. It is an estimate that the beacon sends with its announcement that says 'I estimate that my signal strength is X dBm at 1m'. The exact value depends on the antenna characteristics and various other things and needs to be calibrated. The receiver then compares the actual signal strength (the RSSI) to the measured power to estimate the distance. This is what the distance estimates that Core Location gives are based on. – Michael Melanson Mar 23 '15 at 20:06
  • @gillesv Yes, you could triangulate with beacons to get position estimates. With no error you need three distances to figure out a position unambiguously, so adding a fourth (or more) beacon would let you do error correction which *may* improve your estimates. But there are several ways to do the error correction. For example, one way would be to produce a position estimate from each trio of beacons (ABC, BCD, ACD, ABD) and find the centroid/geometric mean of those points. But you'd need a dense arrangement of beacons for this to work, and it still might fail with some kinds of interference. – Michael Melanson Mar 23 '15 at 20:22
  • @ChrisWagner just get a cell tower! :) – koconder Aug 07 '15 at 04:48