web-dev-qa-db-ja.com

iBeacon / Bluetooth Low Energy(BLEデバイス)-ビーコンの最大数

IPhone(5s)のアプリを介して、半径50〜100 m以内の多数のビーコン(〜500)を一度に追跡したいと思います。スペックとオンラインを確認しましたが、BLEを使用して一度に追跡できるビーコンの数に制限があるかどうかわかりません。追跡できるビーコンの数に制限があるかどうか、またはiPhone 5sがその数のビーコンを追跡するタスクを実行できるかどうかを誰かが知っていますか?

19
user1048175

Wordトラックを使用しましたが、iOSには監視と測距の2つの異なる方法があります。

監視するリージョンは最大20個まで設定できます。 (startMonitoringForRegion:メソッドのドキュメントにあります。)アプリがバックグラウンドにある場合、リージョン制限が主に機能します。監視しているリージョンに出入りすると、OSはアプリにアラートを送信します(数分かかるか、数分かかります)。 OSは、何が起こったのかを知らせるためだけにアプリを起動します(ただし、短時間ですが)。

もう1つの方法は、デバイスのBluetooth範囲内のすべてのビーコンを見つけることです(通常、約100フィートのギブまたはテイク)。ビーコンが100マイル以上に広がっている場合は、おそらくここで実際的な制限にぶつかることはありません。これに関するドキュメントは見つかりませんでした。テストしているビーコンは4つしかなく、一度に4つは機能します。

これがあなたの状況を処理する1つの方法です。 500個のビーコンすべてが同じUUIDを使用するようにし、initWithProximityUUID:identifier:メソッドを使用してビーコン領域を作成します。 (識別子はあなただけのものです-それは何にも影響しません)。そのビーコン領域の監視を開始します。そうすれば、500個のビーコンの1つが見つかるたびにアプリに通知されます(与えるか、数分かかります)。通知が届いたら、startRangingBeaconsInRegion:を使用してそのエリア周辺のすべてのビーコンを検索し、メジャー値とマイナー値を使用して、ユーザーが近くにいるビーコンを特定できます。

21
dwsolberg

適切なフレームワークを設定するTimTisdallの回答に追加します。 iPhone 5sやiOS全般の特定の機能について話すことはできませんが、受信したすべてのADV_INDパケット(つまりビーコン送信)を返さない理由はわかりません。

問題は、500個のビーコンが衝突することなくADV_INDパケットを送信できるかどうかです。

ADV_INDパケットの送信には約0.128msかかります。アドバタイズ送信間の時間は、20msから10240msの間(0.625msの間隔で)に構成可能であるため、衝突の確率はビーコンの構成によって異なります。

ポアソン分布に基づくと、任意のADV_INDパケットの衝突の確率は1-exp(-2 * N *(0.128/AI))です。ここで、Nは範囲内のビーコンの数、AIはミリ秒単位の時間です。アドバタイズ間隔(すべてのビーコンが同じように構成されていると仮定)。0.128は、ADV_INDパケットの送信にかかるミリ秒単位の時間です。 (説明が必要な場合は、 http://www3.cs.stonybrook.edu/~jgao/CSE590-fall09/aloha-analysis.pdf を参照してください。)

最大アドバタイズ間隔が約10秒の500個のビーコンの場合、81パケットごとに約1回(または500個中約6個)の衝突が発生します。数間隔(つまり30秒)待つことをいとわない場合は、500個のADV_INDパケットすべてを受信できる可能性が高くなります。

一方、広告間隔が短い場合、たとえば500ミリ秒の場合、衝突は約23%の確率で発生します(500のうち113)。すべてのビーコンからのブロードキャストが表示される可能性を高めるには、さらにいくつかの間隔を待つ必要があります。

別の見方をすれば、ビーコンの数が多いほど、すべてのパケットを確実に受信するまで待機する時間が長くなります。 (ビーコンの数とアドバタイズ間隔から一定の確率でパケットを受信するための遅延を計算する数学は、今日私には多すぎます。)

注意点:ADV_INDパケットを受信するだけでなく、これらのビーコンに接続する場合は、アドバタイズチャネルでさらに2つのパケットを交換する必要があり、アドバタイズチャネルでの衝突の可能性が少し高くなります。

5
b1tw153

私があなたの質問を正しく読んでいるなら、あなたは500個のiBeaconすべてを互いに100メートル以内に置きたいと思うでしょう。つまり、それらの送信は重複します。 iOS7または電話の制限に遭遇するずっと前に、おそらく無線輻輳の問題に遭遇するでしょう。

私は問題なく近接して20個のiBeaconsをテストすることに成功しましたが、500個のiBeaconsは極端な密度です。 このディスカッション ハードウェアの問題については、問題が発生する可能性があることを示しています。

少なくとも、500個のiBEaconの送信の衝突により、iOSデバイスが各iBeaconを認識するのに時間がかかります。通常、iOS7はiOSデバイスごとに1秒に1回レンジング更新を提供しますが、更新の頻度がはるかに少ない場合があります。更新の頻度が少ないことが許容できるかどうかは、すべてアプリケーションによって異なります。

遅延が許容できる場合でも、動作することを期待する前に、これを絶対にテストします。残念ながら、それはたくさんのiBeaconsを手に入れることを意味します。

4
davidgyoung

同意しません。 bleビーコンは広告データのみを送信するのは事実ですが、そのようなデータの送信は約3ミリ秒続きます(3つの広告チャネルを考慮)。 500個のビーコンがあり、衝突を考慮しない場合、スキャナーはそれらすべてを表示するのに1.5秒かかります。ただし、すべてのビーコンが同じ方法(同じアドバタイズ間隔)で構成されている場合、衝突が発生してビーコンが検出されないことが避けられません。ビーコン間でアドバタイズ間隔が異なっていても、衝突が発生します。衝突の可能性を回避するには、より長いアドバタイズ間隔を使用する必要がありますが、これにより、検出の待ち時間が長くなります。この推論は非常に生々しく、多くの影響を考慮していませんが、桁違いの計算にすぎません。

ちなみに、質問は簡単ではありません。役割を果たすパラメータはたくさんあります。既知のものもあれば、未知のものもあります。しかし、私は1年ほど前からbleを使用しており、私にとって500は膨大な数であり、衝突のためにノードの大部分が表示されない可能性があります。

3

私はこの質問のためにiBeaconの調査を行っていました(それが何であるかはわかりませんでした)。

物事の「ビーコン」側では、一般的な広告パケットが送信されるだけのようです。これは、デバイスに接続できることをデバイスがアドバタイズする方法と似ています。ただし、実際にはiBeaconに接続するのではなく、それらの広告パケットを読み取るだけです。デバイスが受信できるアドバタイズパケットの数に組み込みの制限はありません。

したがって、500台のiBeaconが問題なく動作するのであれば、私は驚かないでしょう。広告パケットは小さく、間隔が空けられています(時間的には、Xミリ秒ごとに繰り返されます)。電話からiBeaconへの通信はなく、電話は単に聞いたパケットを受信して​​いるだけです。 1つのパケットに干渉がある場合、次のパケットを取得できる可能性があります。

1
Tim Tisdall