[micro:bit と LINE Beacon と Botを組み合わせたハンズオン]
(https://linedevkyushu.connpass.com/event/157340/?utm_campaign=event_message_to_selected_participant&utm_source=notifications&utm_medium=email&utm_content=title_link)に参加してきました。興味深かったのでラズベリーパイとenebularを利用して再現してみました。
enebularやラズベリーパイは自由に使える前提で話していきます。
<使用機器>
ラズベリーパイ3B+
MacBook Pro
Android携帯
Google Chrome
<方法>
LinMessagingAPI登録
enebularを利用してLINE Bot作成
ラズベリーパイをLINE Beacon化
動作確認
LinMessagingAPI登録
こちらのサイトで今すぐ始めようをクリックして、LINEアカウントでログインします。
MessagingAPIのチャネルを作成します、
プロバイダーを新規に作成する前提で説明していきます。
providerでcreate a new providerを選択して、名前をつけていきます。
Channel name, Channel descriptionも任意に名前をつけてください。
このときlineという単語は使用できませんので注意してください。
カテゴリーとサブカテゴリーはプルダウンで任意に設定してください。
Email addressは使用しているアドレスを入力してください。
利用規約に同意して「作成」ボタンを押します
MessagingAPIの設定をしていきます
MessagingAPI設定タブに移動して、QRコードを利用して友達を追加します。
そこから下にスクロールしていくと
webhookの
設定がありますが、一旦おいておきます。
ここからenebularの設定にうつります
http inノードと http responseノード debugノードをつなげてデプロイします。
このときhttp inノードのメソッドはPOSTを選択して、URLには/lineをつけます。
右上のデプロイボタンの横のiボタンを押すとURLが表示されますのでメモしておいてください。
LinMessagingAPIの設定に戻ります。
MessagingAPIの設定のwebhookに先程メモしたurlの最後に/lineをつけて入力します
(例)htps://example/line
updateボタンを押してかくていして、Verifyボタンを押してwebhookが動いているかチェックします。
webhookを有効にするのを忘れないようにしてください
(自分は有効にするのを忘れていて、少しだけハマりました)
ここからはLINE Beaconの設定をしていきます
https://manager.line.biz/beacon/register
に接続して、LINE Simple BeaconのハードウェアIDを発行をクリックします。
アカウントリストの中から先ほど作成したMessagingAPIのアカウントを選択します。
ハードウェアIDの発行をクリックして発行されたIDはメモしておいてください。
ここからラズベリーパイの操作になります。
まずはパッケージをアップデートします
$sudo apt update
それからLinux向けのBluetoothに関連するパッケージをインストールします。
$sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
インストールが終了したらコマンドを入力していきます。
基本的には公式サイトからコピペします。
//発行されたHWIDを2桁ごとにスペースで区切ったものを指定
//ここは先程メモしたハードウェアIDを入力していきます
HWID='01 DE AD BE EF'
//ここから下はそのままコピペで大丈夫です
ADVERTISE_DATA="13 02 01 06 03 03 6F FE 0B 16 6F FE 02 ${HWID} 7F 00"
//Bluetooth HCIを有効にし、初期化します
sudo hciconfig hci0 up
//LE Controller Commands(OGF: 0x08), HCI_LE_Set_Advertising_Data(OCF: 0x0008) を実行し、
//出力データを設定します
sudo hcitool -i hci0 cmd 0x08 0x0008 ${ADVERTISE_DATA}
//Non connectable undirected advertising(3)で、Bluetooth LEのアドバタイズを有効にします
sudo hciconfig hci0 leadv 3
もしも
LE set advertise enable on hci0 returned status 12
が表示されたときはラズベリーパイを再起動してください
これで設定完了です。
スマートホンのLINEでビーコンの利用と位置情報の利用を許可をして
BLEをオンにすれば、ビーコンとして使用できるようになります。
自分の場合はenebularのフローにレスポンスを足して、ラズベリーパイに近づくと
botにメッセージが送信されるようにしました。
<まとめ>
ラズベリーパイとenebularを使用することで、LINE Beaconのプロトタイプが高速で作れます。
更にenebularのフローを利用することで、botの連携やデータベースとの連携も簡単に利用できるので、近づいた回数に応じてメッセージを変更したり、時間に応じたメッセージを送信したりと、使い方は広がりそうです。
<参考情報>
https://qiita.com/yuukikawasaki/items/bf78d96e298bb947cba6
https://engineering.linecorp.com/ja/blog/detail/117/
https://qiita.com/torisankanasan/items/e258ee0ecfc10fb442a7