LoginSignup
189
187

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-02-01

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


とても簡単!

189
187
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
189
187