Thinking about if RSSI (on smartphone App) can be used in order to estimate the distance between WICEDSense and smartphone results in these thoughts:
Distance and RSSI
There is a formula to convert RSSI (a -dBm value) into a "rough" distance:
RSSI = - ( 10 * n * log10(d) + RSSIdo )
d = d0 * 10EXP ( ( RSSIdo - RSSI ) / ( 10 * n ) )
- Even without to know the Tx power (no need to get Tx level via ADV messages from BLE device) - you can calibrate the system:
If you can measure (with your App, e.g. in Android Java code as readRemoteRssi() ) the RSSIdo - which is the RSSI value in 1 m distance - you can try to estimate the distance.
- d = distance
do = calibration distance, e.g. 1 m away
RSSIdo = the RSSI level on do, RSSI with 1 m distance
RSSI = any RSSI value measured
n = "Pass Loss Index", "Signal Propagation Constant"
10EXP means here: the power to base 10 with this exponent
The problem is the "Propagation Model", the value of n.
Assuming a perfect line of sight, no echos, a Gaussian RF channel, n can be 2 ...3 (will never be the case).
But under real conditions: n is not constant and depends on situations (indoor, multi-path-reception, interference ...). I think n should be at least 3.5 and can go up to 6.
So, measuring distance with RSSI will not be very accurate. Especially the more far away the device is (and RSSI is very low), the noise, fading effects, echos and reflections become more effective. Therefore there are ideas for adaptive approaches. For instance:
You could increase n if you realize the RSSI level is small (weak). Or: you could measure and calibrate for the current situation, e.g. for using just in the same indoor location all the time. Or changing between outdoor and indoor and user has to "inform" on smartphone where we are so that we use different values for n.
And: RSSI has a huge variation (spatial effects), assuming to see +/-10 ... 20 dBm difference between two measurements can be common. So, a simple average might not be good enough, a bit more math seems to be needed ("find the best matching graph", build the median ...)
Attached some nice papers found dealing with this topic.