『LINE Simple Beacon』を試してみた!

『LINE Simple Beacon』を試してみた!

最近、もっぱらBluetooth Low Energy(BLE)を用いたアプリケーションサービスを考えておりますricemanです。

なかでもLINE Beaconは私が一番期待を寄せているBLE/IOT機器なのですが、残念ながら手元にございません。

でも諦めきれない。そこでLINEの開発者サイトを調べてみると……
「2016年9月現在、一部の企業と一部の個人開発者向けのみに限定的に機能を開放しています。今後機能をオープン化していく予定です。」
<参照:LINE『API Reference』

むむ、残念…。だけど、試してみたい……。
そんなガジェット好きエンジニアのために、Raspberry PiやMac等で稼働させることができる『LINE Simple Beacon』が今年2月に公開されました。
<参照:LINE Engineering Blog『ラズベリーパイでLINE Beaconが作成可能に!「LINE Simple Beacon」仕様を公開しました』>

さぁ、実験だ!
Raspberry Pi、Raspberry Pi……。私のラズパイちゃ~ん、どこでちゅか~?
どうやら私のRaspberry Piは長い旅に出てしまった模様。
ということで、今回はMac版で試してみることにしました。

Mac版『LINE Simple Beacon』を試してみる

ほとんど上記のブログ内にていねいに説明してくれています。
念のため手順を説明すると……

<アカウント開設&モジュールのインストールを行う>
①:下記のサイトから [Messaging APIを始める] ボタンを押してください。
<参照:LINE BISINESS CENTER『Messaging API』>
 ↓
②:ログイン画面でログインおよび認証を済ませ、アカウント名と業種項目を入力し、[申し込む] ボタンをクリックしてください。
 ↓
③:Beaconのイベントを受けるためのWebhook URLを入力してください。
(※https環境が必要)
 ↓
④:Server IP WhitelistでWebhook URLのIPアドレスを入力してください。
 ↓
⑤:③で指定したURLで起動できるプログラムファイルを設置してください。
 ↓
⑥:ここからBeaconの登録を行って、HWIDを入手してください。
<参照:LINE BISINESS CENTER『LINE OFFICIAL ACCOUNT MANAGER』>
 ↓
⑦:Macに『LINE Simple Beacon』モジュールをインストールして完了です。

<プログラムを行う>
詳しくはかつて本bitWaveでご紹介した記事を参照ください。大きく変わることはありません。
<bitWave関連記事『LINE BOT APIで「こわい猫」返信ボットを作ってみた』>

LINEで契約するグレードに応じて「返信のみ」か「返信も(時間をおいての)送信」もできるという感じになりました。
そこで現れるのが「reply token」です。一定期間で返信しないと無効になってしまうTokenなので、送信には使えないってことですね!
<参照:LINE『API Reference』>

<LINEアプリで受け取る(iOS版アプリの場合)>
さぁ、ここからが本番です。さっそくLINEアプリを起動させておいてくださいね!!

①:まずは作成したLINE botアカウントと友達になってください。
 ↓
②:アプリ内の設定画面「プライバシー管理」にて、[LINE Beaconを利用] を「許可」にしてください。トグルスイッチが緑色の状態が「許可」を意味しています。

 ↓
③:デバイス自体のBluetoothを許可にしてください。iPhoneの設定画面からでもできますが、画面を下から上にスワイプさせて表示されるコントロールセンターで設定するのがカンタンですね。下記画面のように中央のBluetoothアイコンが青色になっていれば大丈夫です。

 ↓
④:『LINE Simple Beacon』を起動させましょう。
「./simplebeacon.js –hwid=取得したHWID」のような形で実行すると、Line Beaconが起動されます。

今回の場合、起動したMacに近づくと①で登録したURLにイベントが送られます。
ちなみにjson形式になっていて、以下のような感じになっています。

サーバ側では受け取った「replyToken」から返信を行うことで、下記画像のように近づいたユーザにメッセージを送りつけることができますね。“おせっかいおじさん” さながらの声がけっぷりです。。。

『LINE Simple Beacon』を試してみての所感

設定および実証実験は成功しました。
ただし、実運用に取り入れるには少しばかり気になる点もあったのでご紹介します。

<『LINE Beacon』を2回目以降に受け取る時、それなりのタイムラグが発生する>

初めて起動させた場合であれば、割とすぐにWeb Hookにイベントが送られてきます。しかし、2回目以降に受け取ることを想定し、コマンド上で「ストップ/停止」を実行した後に再スタートをすると、イベントの受け取りまで少し時間がかかっているような気がします。
おそらく仕様だと思うので、詳しく聞いてみたいところです。

<フラグが発動させるための距離感がイマイチ分からない>

離れた場所からMacに近づいていても、なかなかイベントが届かないことがあります。幽霊屋敷のようなアトラクションで活用させるためにも、ここは仕様が明確であって欲しいところですね。。。

<設定 [LINE Beaconを利用] はデフォルトでオンにしておいてほしい>

上記2つはLINEの会話履歴に通知情報が残っているので、さほど気になるものではありませんが、LINEアプリの『LINE Beacon』設定がデフォルトでオフになっていたような気がします。私の気のせいかもしれませんが、できればユーザがBluetoothをオンにするだけで使うことができるようにしてほしいなぁ。
ただし、この要望は多くあるでしょうし、おそらく今は実験段階なので、今後は変更されることになるのではないでしょうか。

『LINE Beacon』が自作アプリと連動できないか

せっかくの『LINE Beacon』ですから、オフラインもしくは自作アプリでも使えるようにしたいですよね。

しかし、『LINE Beacon』はWeb Hookを経由して、ユーザのLINE上にメッセージを送るというものなので、オフラインの環境では通知を受け取ることができません。

これをどうにか自作アプリでも受け取れないものか……。
まずはiOSアプリで近くのBluetooth電波を受信してみます。

詳しいコードは省きますが、上記のように辺り一面の電波を受信してみると、以下のような関数が呼び出されます。
引数のいくつかの中で、「advertisementData」に注目してみましょう。

すると以下のような感じです。

もう疲れたので(※編集部注:おいっ!)説明は省略しますが、
<>中に『LINE Beacon』を起動した時に表示されるデータと同じデータが入っているようですね。
例:
<Buffer ~~>

先ほど「simplebeacon.js」を起動した時に、「./simplebeacon.js –hwid=取得したHWID」と記載しましたが、hwidの他にも「–device-message=ffffff」といった形で情報を埋め込むことができます。

そうすると先ほどの「advertisementData」は以下のような形で、末尾に任意のメッセージを埋めてアドバタイズできることが分かりました。

これなら『LINE Beacon』でLINEと自作アプリの相互連携とかいけるかもしれませんね。一気に夢が広がりましたっ!!

ニーズがあれば次回はもう少し深掘りしてみたいと思います。
ただし、やろうとしていることはとてもニッチですので、そもそもニーズがあるのかどうか……。

コメント