187
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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


とても簡単!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
187
Help us understand the problem. What are the problem?