Raspberry scan iBeacon with(Node.js + bleacon)


環境

使用した環境は以下の通り。なお、インストールしているディストリビューションはRaspbianです。
pi$ uname -a
Linux raspberrypi 3.12.29+ #714 PREEMPT Wed Oct 1 23:11:38 BST 2014 armv6l GNU/Linux
pi$ cat /etc/debian_version
7.6

Node.jsをインストールする

Node.jsをインストールします。
『Raspberry PiにnodebrewでNode.jsをインストールする - Qiita』などを参考にインストールしてください。
今回使用した環境は以下の通りです。
pi$ node -v
v0.10.28
pi$ npm -v
1.4.9

bleaconをインストールする

Node.jsのbleaconパッケージをインストールします。予めlibbluetooth-devパッケージのインストールが必要です。
bleaconパッケージの執筆時点でのバージョンは0.2.0でした。
pi$ sudo apt-get update
pi$ sudo apt-get install libbluetooth-dev
pi$ npm install bleacon

iBeaconの信号を受信する

iBeaconの信号を受信し、コンソールに出力するためのスクリプトを準備します。
beacon_discover.js
var Bleacon = require("bleacon");
Bleacon.startScanning();
Bleacon.on("discover", function(bleacon) {
  console.dir(bleacon);
});
スクリプトを実行すると、コンソールに情報が出力されます。なお、root権限が必要です。
(UUIDはマスクしています)
root# node beacon_discover.js
{ uuid: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  major: 1,
  minor: 1,
  measuredPower: -76,
  rssi: -70,
  accuracy: 0.7450788247551209,
  proximity: 'near' }
...
Node.jsとbleaconパッケージを使うことで、とても簡単にiBeaconの信号を受信することができました。
--
ソースを以下のように実装する。
本プログラムはスキャンとアドバタイジングの両方を実行するものである。
beacon.js
Bleacon = require('bleacon');
const uuid = 'aaaaaaaabbbbccccddddeeeeeeeeeeee';
const major = 12;
const minor = 34;
const measuredPower = -59;

Bleacon.startScanning(uuid);
Bleacon.on('discover', function(bleacon) {
   console.log(bleacon);
});
Bleacon.startAdvertising(uuid, major, minor, measuredPower);
実行する
$ sudo node beacon.js

No comments

Powered by Blogger.