About a month ago I had an opportunity to play with an iBeacon on the Android platform. My first task was to implement a proximity trigger to Android client for one of our apps at work (MylogFleet). As we played with it, we wanted a more precise data such as a heat map.
I googled some familiar projects around, bud didn't find a precise app in the Play Store that generates a heat map from actual distances from iBeacons. After visualization the raw accuracies in a graph (picture below) I found this interesting page that nevertheless confirm my results. These are my observations.
- raw data is not as accurate as I first thought
- accuracy depends on rotation of iBeacon to the smartphone
- at some distance, the error is rising rapidly
- to get more precise data, you have to set a transmit interval and transmit power to the maximum, but that also leads to more battery consumption
What I did
I created an Android app with the purpose to generate a real-time heat map. As I mentioned before, the accuracy from iBeacons is not very precise so I should call it iBeacon heat map beta demo. Anyway the app allows you to assign colors to iBeacons, set room sizes and choose one of the few approximate methods. The results are still not very satisfactory. For now, the most acceptable results are from the most simple method (make an average of the last 30 values).
I used IBKS 105 iBeacons from Spanish vendor accent-systems with the tx-Power and transmit interval set to maximum available value. I use the bluetooth address as an unique identifier so you don't have to set UUID, major or minor values.
Google Play: https://play.google.com/store/apps/details?id=sk.svb.ibeacon.heatmap