Node.js
bleacon

Node.js 学習帳-失敗事項 〜 iBeaconを使う何かを作ってみる〜

More than 3 years have passed since last update.

Node.js の環境を用意した後での学習メモ

環境構築の参考:macでNode.jsの環境設定

iBeaconを使う何かを作ってみる

iBeaconはiOS(7以降のデバイス)の位置情報サービスを拡張する新しいテクノロジー(iOS:iBeacon について参照)
Bluetooth LEを使用することで、「ビーコン」と呼ばれる発信器の、近接や距離を検知する事が出来るようになる機能だそうです。

たとえば、ビーコンを設置している場所にiphoneを持って近づくと、クーポンゲットしたり、位置情報取得できたりするので、アイディア次第で何かできそうな機能です。

とりあえずは、受診と発信のお勉強から。。

<MACをiBeacon電波発信するように設定したい>
Macを使った最も簡単にiBeaconの電波を発信する(Advertiseする)方法
たった6行!最も簡単にiBeaconの電波を「発信」する方法 を参考にする。

$ mkdir ibeacon
$ cd ibeacon

ここで問題、
bleacon をインストールすることで簡単にiBeacon発信できるようになるはずですが、nodeのバージョンによってインストール出来ないんです。

★nodeバージョンを変えてibeaconをインストールした方法

$ nvm install v0.10.40
######################################################################## 100.0%
Now using node v0.10.40 (npm v1.4.28)
$ node -v
v0.10.40
$ npm install bleacon
bleacon@0.4.0 node_modules/bleacon
$
・・・無事にインストールできた

これでたった6行!最も簡単にiBeaconの電波を「発信」する方法 の通りうまくいくかとおもいきや、

sender.js
var Bleacon = require('bleacon');

var uuid = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
var major = 0;
var minor = 0;
var measuredPower = -59;

Bleacon.startAdvertising(uuid, major, minor, measuredPower);

実行するとエラーになります。OS X El Capitan だからでしょうか・・・

$ node sender.js 

module.js:340
    throw err;
          ^
Error: Cannot find module './build/Release/binding.node'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/*****/NodeSampleTmp/ibeacon/node_modules/xpc-connection/index.js:3:15)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

★方法として失敗したけど勉強になった内容
node v0.12.8のとき、bleaconは使えない。
macで bleacon を使いたい場合はnodeバージョンを下げて行うしか今のところ無いのかもしれない。

$ npm install bleacon
> bignum@0.11.0 install /Users/****/NodeSampleTmp/ibeacon/node_modules/bignum
> node-gyp configure build

・・・・応答なし 強制終了させた・・・・

node 0.11以降だとネイティブ拡張の仕様で互換性のない変更が入ってるらしいので、bignumがそれに追従していないためbignumのコンパイルに失敗するとのこと。
bleacon のソースのことを詳しく知りたい方は
参考URLこちらがいいと思います。

ちなみに、OSがLinuxとかなら、nodeバージョンを落とさなくてもlibbluetooth-dev をインストールしてできるのかもしれないです。(未確認)

sudo aptitude install libbluetooth-dev
npm install bleacon