Essayez de saisir un concept de base sur la façon dont la distanciation avec ibeacon peut fonctionner. Existe-t-il une vraie documentation sur la mesure dans laquelle un ibeacon peut mesurer exactement? Disons que je suis à 300 pieds ... est-il possible pour un ibeacon de détecter cela?
Réponses
Trop de publicités?La distance estimation fournie par iOS est basé sur le rapport de l'iBeacon la force du signal (rssi) au cours de l'étalonnage de puissance de l'émetteur (txPower). Le txPower est connu que le signal mesuré de la force dans les rssi à 1 mètre de l'appareil. Chaque iBeacon doit être calibré avec cette txPower valeur pour permettre l'exactitude des estimations de distances.
Lorsque nous étions à la construction de l' Android iBeacon bibliothèque nous avons dû venir avec notre propre algorithme, car l'iOS CoreLocation code source n'est pas disponible. Nous avons mesuré un tas de rssi mesures à distance, puis a un meilleur ajustement de la courbe à la hauteur de nos points de données. L'algorithme nous avons trouvé est montré ci-dessous à titre de code Java.
Notez que le terme "exactitude", voici iOS parler de la distance en mètres. Cette formule n'est pas parfait, mais il est à peu près se rapproche de ce que l'iOS.
protected static double calculateAccuracy(int txPower, double rssi) {
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy, return -1.
}
double ratio = rssi*1.0/txPower;
if (ratio < 1.0) {
return Math.pow(ratio,10);
}
else {
double accuracy = (0.89976)*Math.pow(ratio,7.7095) + 0.111;
return accuracy;
}
}
L'iBeacon puissance de sortie est mesurée (calibré) à une distance de 1 mètre. Supposons que c'est -59 dBm (juste un exemple). L'iBeacon comprendra ce numéro dans le cadre de son CHIER de publicité.
L'appareil d'écoute (iPhone, etc), permettra de mesurer le RSSI de l'appareil. Supposons, par exemple, que c'est, disons, -72 dBm.
Étant donné que ces numéros sont en dBm, le rapport de la puissance est en fait la différence en dB. Donc:
ratio_dB = txCalibratedPower - RSSI
Afin de les convertir en un linéaire de rapport, nous utilisons la formule standard pour la dB:
ratio_linear = 10 ^ (ratio_dB / 10)
Si nous supposons que la conservation de l'énergie, puis la puissance du signal doit tomber comme 1/r^2. Donc:
power = power_at_1_meter / r^2
. La résolution de r, on obtient:
r = sqrt(ratio_linear)
En Javascript, le code ressemblera à ceci:
function getRange(txCalibratedPower, rssi) {
var ratio_db = txCalibratedPower - rssi;
var ratio_linear = Math.pow(10, ratio_db / 10);
var r = Math.sqrt(ratio_linear);
return r;
}
Notez que, si vous êtes à l'intérieur d'un bâtiment en acier, puis il y aura peut-être les réflexions internes qui font que le signal de décroissance plus lente que 1/r^2. Si le signal passe à travers un corps humain (de l'eau), puis le signal sera atténué. Il est très probable que l'antenne n'a pas de gain égal dans toutes les directions. Objets en métal dans la chambre peut créer d'étranges figures d'interférence. Etc, etc... YMMV.
iBeacon utilise Bluetooth Low Energy (LE) pour connaître les emplacements. La distance / portée de Bluetooth LE est de 160 ft ( http://en.wikipedia.org/wiki/Bluetooth_low_energy ).
Les Distances à la source de iBeacon format des paquets d'annonce sont estimés à partir du signal de chemin d'accès de l'atténuation calculée en comparant la valeur mesurée de la puissance du signal reçu à la prétendue puissance de transmission laquelle l'émetteur est censé encoder dans la publicité de données.
Une perte de régime comme cela est mentionné à titre indicatif et est sujet à des variations avec des choses comme les antennes angles, intervenant objets, et sans doute un bruyant environnement RF. En comparaison, les systèmes de vraiment conçu pour la mesure de la distance (GPS, Radar, etc) reposent sur la précision des mesures de temps de propagation, dans le même cas, même l'examen de la phase du signal.
Comme Jiaru points, 160 ft est probablement au-delà de la portée, mais cela ne veut pas nécessairement dire qu'un paquet ne sera jamais passer à travers, seulement que l'on ne doit pas s'attendre à travailler à distance.