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

  • 169
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

前回の続きです。
前回はこちら!
最も簡単に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が一致するものすべて


とても簡単!