1. Qiita
  2. 投稿
  3. eddystone

たった2行!最も簡単にeddystoneでURLを送信する方法

  • 13
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

なんか新しいeddystoneってのが出たみたいだし試してみるか…
でもどうやってそもそも電波飛ばしたらいいんだ?

というわけで、Macを使って最も簡単にeddystoneのEddystone-URLを飛ばしてみたいと思います。

環境

  • Bluetooth Low Energy(BLE, Bluetooth4.0)が搭載されたMac製品
    • Macbook Pro, Macbook Pro Retina, Macbook Airなどなど
    • 最近の製品なら大抵OK
  • node.js v0.12.0 (筆者の動作確認環境)

準備

Macでnode.jsとnpmを使えるようにする必要があります。
http://nodejs.org/
から"INSTALL"をクリックしpkgファイルをダウンロードし、インストールします。

その後、無ければ適当にディレクトリを作成しましょう。
ここでは~/eddystoneを作成します。

mkdir ~/eddystone

これで準備は完了です!

Eddystone-URLを飛ばしてみる

この表現があっているのかわかりませんが…。

node-eddystone-beaconを使用します。
ちなみに、今回はEddystone-URLを飛ばそうとしていますが、Eddystone-UIDも飛ばすことが出来ます。
node-eddystone-beaconをnpm installしましょう

cd ~/eddystone
npm install eddystone-beacon

その後、適当にjsを書きます。下記をコピペでも構いません。

app.js
EB = require('eddystone-beacon');
EB.advertiseUrl('http://goo.gl/uagFfW');

これで準備は完了です。
実際に実行してみましょう。

node ~/eddystone/app.js

特にエラーがでなければ成功です。
iOS版Chrome(44以上)のToday Extensionで手軽に確認できます。

よくあるエラー

$ node app.js 
/.../eddystone/node_modules/eddystone-beacon/node_modules/eddystone-url-encoding/lib/encode.js:16
    throw new Error([
          ^
Error: Encoded URL (http://3.141592653589793238462643383279502884197169399375105820974944592.com/) is too long (max 18 bytes): 67 bytes
    at module.exports (/.../eddystone/node_modules/eddystone-beacon/node_modules/eddystone-url-encoding/lib/encode.js:16:11)
    at Object.makeUrlBuffer (/.../eddystone/node_modules/eddystone-beacon/lib/advertisement.js:31:19)
    at Object.advertiseUrl (/.../eddystone/node_modules/eddystone-beacon/lib/beacon.js:10:43)
    at Object.<anonymous> (/.../eddystone/app.js:2:4)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)

指定しているURLが長すぎます。
URL短縮サービスなどを使用してURLを短くしてみましょう。