Edited at

たった5行!最も簡単にiBeaconの電波を「受信」する方法

More than 5 years have passed since last update.

前回の続きです。

前回はこちら!

最も簡単にiBeaconの電波を発信する方法

さあiBeaconのアプリを作ってみよう!

となった時に、一番困るのがiBeaconを発信するアプリを作成しても、

電波はもちろん見えないため、本当に機能しているかどうかがわからないところです。

自分で実装?めんどいな…っていうかiPhone2台も持ってないしなぁ……

ここの周りにiBeacon形式のBluetooth飛んでないかなぁ……

というわけで、Macを使った最も簡単にiBeaconの電波を「受信」する方法をまとめたいと思います。

え?どこかで聞いたことがあるくだりだって?気にしない気にしない。


環境


  • Bluetooth Low Energy(BLE, Bluetooth4.0)が搭載されたMac製品


    • Macbook Pro, Macbook Pro Retina, Macbook Airなどなど

    • 最近の製品なら大抵OK



  • node.js v0.10.24


準備

Macでnode.jsとnpmを使えるようにする必要があります。

http://nodejs.org/

から"INSTALL"をクリックしpkgファイルをダウンロードし、インストールします。

その後、無ければ適当にディレクトリを作成しましょう。

ここでは~/ibeaconを作成します。

mkdir ~/ibeacon

これで準備は完了です!


iBeaconを受信してみる

今回はbleaconを使います。

まず、bleaconをnpm installしましょう。

cd ~/ibeacon

npm install bleacon

その後、適当にjsを書きます。下記をコピペでも構いません。


receive.js

Bleacon = require('bleacon');

Bleacon.startScanning();

Bleacon.on('discover', function(bleacon) {
console.dir(bleacon);
});


これで準備は完了です。

実際に実行してみましょう。

node ~/ibeacon/beacon.js

これで特にエラーがでなければ電波を待ち構えている状態です。

あなたが作成した発信アプリを起動してみましょう!するとこんな感じでずらずらでてくるはずです。

{ uuid: 'cce55e10ea7f472faa05102fd7aeced8',

major: 36,
minor: 5,
measuredPower: -57,
rssi: -34,
accuracy: 0.22223443385817412,
proximity: 'immediate' }
{ uuid: 'cce55e10ea7f472faa05102fd7aeced8',
major: 36,
minor: 5,
measuredPower: -57,
rssi: -32,
accuracy: 0.19498999948233425,
proximity: 'immediate' }
{ uuid: 'cce55e10ea7f472faa05102fd7aeced8',
major: 36,
minor: 5,
measuredPower: -57,
rssi: -33,
accuracy: 0.20816698139465403,
proximity: 'immediate' }
{ uuid: 'cce55e10ea7f472faa05102fd7aeced8',
major: 36,
minor: 5,
measuredPower: -57,
rssi: -31,
accuracy: 0.18264712128403449,
proximity: 'immediate' }

...

取れる情報は、


  • UUID: ビーコンに設定されているUUID

  • major: ビーコンに設定されているmajor

  • minor: ビーコンに設定されているminor

  • measuredPower: 1mでのRSSI強度

  • rssi: RSSI強度

  • accuracy: measuredPowerとrssiから計算したビーコンとの距離(あてにならない)

  • proximity: ビーコンとの近さ。


    • unknown(不明), immediate(すぐそこ), near(近い), far(遠い)で表現



とまあ、iOSで使用できる値はほぼ取得できます。

上記のままだと、iBeaconのフォーマットに従ってAdvertiseされているBluetoothすべてを表示します。

自分の発信アプリだけの挙動が見たい場合はUUID、major、minorを指定して、それだけを受信することもできます。

Bleacon.startScanning(uuid); //UUIDが一致するものすべて

Bleacon.startScanning(uuid, major); //UUIDとmajorが一致するものすべて

Bleacon.startScanning(uuid, major, minor); //UUIDとmajorとminorが一致するものすべて

とても簡単!