Raspberry Pi で iBeacon を発見するための調査メモ

近いうちに試してみることになるかもしれないのでメモ。

Raspberry PiBluetoothを使えるようにするために

Raspberry Pi を Bluetooth Low Energy (BLE) の Peripheral として動作させるで、BLE の Peripheral として動作させたことはあるので参考に。

RPi Bluetooth LE が詳しい。

あとはこのあたりを参考に。
https://github.com/sandeepmistry/noble#prerequisites

apt-getで BlueZ をインストールできるが、バージョンが 4.99 で BLE のサポートが完全ではないらしい。
BLE のスキャニングだけならおそらく問題はないと思うけど、使えない場合はビルドが必要。

Node.js でプログラミングするために

sandeepmistry/node-bleacon でいけるっぽい。
スキャニングは Central モジュールの noble に、発信は Peripheral 側の bleno に依存している。

UUID を指定しなくてもスキャニングは可能。…というか実装を見てみたら、全部取得してから通知するかどうかの判断をしている模様。
UUID は配列で複数渡すこともできるから、違う種類の iBeacon が混在していても大丈夫そう。

iBeacon と Raspberry Pi の距離の測定

node-bleacon では MeasuredPower や RSSI の値を取得可能。
ただし、それらの値だけでは距離の算出は難しい。

iBeaconのRSSIでiPhoneの二次元座標をとれたらいいな
屋内測位をやってみました

大雑把な距離なら proximity を使えばいいけど、具体的な距離を出したい場合はキャリブレーションが必要っぽい。
Raspberry Pi では収集だけして、フィンガープリンティングの値の設定と距離の算出をサーバ側でするようにしたら個別にソースをいじらなくてもいいかも。