読者です 読者をやめる 読者になる 読者になる

Nullppo

メモ帳的なにか

node.jsでiBeaconを発信

さてさて、前回に引き続きnode.jsでiBeaconの発信をしてみましょう。
環境さえ整えれば、すご~く気軽に発信できちゃいます。

事前準備

  • node.jsを使える環境にしておく
  • 筆者はMacOSを使用しています

1. bleaconの準備

以下のコマンドを使ってbleaconというモジュールをインストールします。以上!w

$ npm install bleacon

2. スクリプトを書こう

ここが、今回のメイン作業です。が、、、6行しかありません!!
とりあえず「sample.js」という名前を付けると仮定して説明します。

var Bleacon = require('bleacon');
var uuid = '04137D10-42C4-41D1-8E23-FCEB7FDE5856'; // テキトウ
var major = 1; // テキトウ
var minor = 1; // テキトウ
var measuredPower = -59; // 私の環境はこの設定値でOKでした
Bleacon.startAdvertising(uuid, major, minor, measuredPower);

UUIDとは
128bitで表される識別子です。主に組織単位で使用される事を想定したものとなっています。
簡単になりすまし出来ますね!ww

MAJORおよびMINORとは
16bitで表される識別子です。同一UUID同士をグルーピング、カテゴライズする際に使用します。
UUIDとMAJORが同一の場合はMINORを設定するといいかもしれません。

MeasuredPower(参照受信信号強度)とは
発信機と受信機を1m離した際の受信信号強度を設定します。
受信機は、この参照受信信号強度と実際に受信した信号強度から発信機と受信機器の間の距離を推定します。

3. 発信!!

心の準備はよろしいでしょうか?準備が整った方は
「ビーコンシステムオールグリーン、遠心カタパルト展開、作戦目標に向けて射出します!」
とでも叫びながら以下のコマンドを打ち込みましょう!

$ node sample.js

ヤッタネ!飛びました!!!って分からないですよね。
AndroidアプリでiBeaconをスキャンするものがいくつか出ているので、
事前にGooglePlayとかでインストールしておくといいかもしれませんね!

次回は、AndroidでiBeaconを受信する(実装編Part1)です。
Part1では、リージョン管理を行います。

お楽しみに。。。

iBeaconを使ってみよう(勉強編)

はじめに
iBeaconとは、iPhoneのiOS7に標準搭載されたBluetooth Low Energy(BLE)を使った新技術のことです。
 
以下の動画も有名ですね。
 
なんだか、ワクワクしますね!
調べてみると以下のことが分かりました。
  1.  ビーコンはUUIDと呼ばれる識別情報をアドバタイズ(伝達)する。
  2. UUIDが同一のビーコンは、アドバタイズしている追加情報(MEJORおよびMINOR)によって区別可能である。
  3. 半径約10mをカバーしている。(壁面や床・天井・人体などの影響を受けて反射・吸収・回折が生じることで、複雑な電波強度分布となる)
  4. 電波が減衰する性質を利用してビーコンとの距離を求めることができる。
    →詳しくは、コチラに書かれていました。
  5. ビーコンはアプリがあって成り立つ。
  6. アプリ側はビーコンの受信をきっかけに、処理を行う。
これだけで、色々なアイデアが生まれそうですね。
実際に以下の様な使われ方をしています。
  • 博物館や美術館等の展示品紹介
    →展示品にビーコンを設置する。事前にアプリを仕込んだ端末を持ったユーザが、展示品に近づくと自動で紹介動画や文章が開く
  • 東京駅構内におけるナビゲーション
    →ビーコンを複数設置して、ビーコン対端末間の距離を使って場所を把握。地図にマッピングすることでナビゲーションを可能にしている
  • 勤怠管理(シュキーン)
    →説明がめんどいので公式を見てください
さて、、、、
ここまで書いといて残念なお知らせです。
私はiPhoneではなく、Androidユーザですw
 
ですが、心配はいりません。
Bluetooth LE に対応したAPI が追加された Android 4.3 以降の端末であれば、iBeaconは受信することが出来ます
とりあえず、BluetoothをScanして受信したbyte列をiBeacon のデータフォーマットに則って UUID や、maj・・・・・こんなの面倒ですね。(簡単にできますが。)
Radius Networks社が出しているAltBeaconを使えば、上記のような手間が省けます。
さらに、距離の計算も自前でしなくていいのです。
 
あー使いたい。あー使いたい。
ってことで、実装してみました。
iBeacon自体も自社の研究会で購入したのですが、今回はnode.jsを使って電波を飛ばしたいと思います。
 
と、、、、
ここまで書いたのですが、眠くなってきたので次回のお楽しみということで。
 
iBeacon関連記事の予定
  1. 本ページ
  2. node.jsで電波を発信
  3. altBeaconを使用してAndroidで受信(リージョン管理編)
  4. altBeaconを使用してAndroidで受信(レンジング編)