Help us understand the problem. What is going on with this article?

Raspberry Pi Zero W を LINE Simple Beacon にしてしまう

More than 1 year has passed since last update.

はじめに

私ごとですが、今秋に新居に引っ越しました。
少しずつ新居で必要な家電を揃えていっているんですが、新居にBeaconがないことに気づきました。

これは問題です!

ということで、家にあったRaspberry Pi Zero W を LINE Simple Beacon にしてしまいたいと思います。

LINE Simple Beaconを選んだ理由は、なんとなく簡単そうだから。

ネット上を探しみても、Raspberry Pi Zero W をLINE Simple Beacon化した記事はまだなさそうだったので、できるかどうかの検証もかねてやってみます。

LINE Simple Beaconとは?

Raspberry Piを使って、自分で LINE Beacon 対応デバイスを製作することが出来る新しいオープンなビーコン仕様、それが「LINE Simple Beacon」です。
Bot開発者が、LINEプラットホームを通じて、Botと連携ずみのLINEユーザがビーコンデバイスに近づいたことをwebhookで受け取ることができます。(引用元:ラズベリーパイでLINE Beaconが作成可能に!「LINE Simple Beacon」仕様を公開しました

https://github.com/line/line-simple-beacon

開発

前提条件

・LINEのアカウントを持っていること
・初期セットアップが完了したRaspberry Pi Zero Wを持っていること

開発の流れ

  1. Botの準備
  2. ビーコンイベントを受信できるようにLINEアプリの設定
  3. LINE Simple Beacon用のHWIDを発行
  4. Raspberry Pi Zero W のセットアップ

1.Botの準備

まず最初に、LINE Botのアカウントが必要です。
もしまだお持ちでない場合は、この辺の記事とかいいと思いますので、見ながら作ってみてください。

LINE Botのアカウントを作成後、チャネル基本設定の画面に、

LINE_Developers.png (276.7 kB)

Webhook送信Webhook URL という項目がありますので、Webhook送信 にチェックを入れ、Webhook URLにWebhookの送信先を入力します。

LINE_Developers.png (201.1 kB)

今回、私は、Webhookの送信先をGoogle Apps Scriptにし、受信したイベント内容をSlackに飛ばすようにしました。

Google Apps ScriptとSlackの連携は、この辺の記事とかいいと思います。

2. ビーコンイベントを受信できるようにLINEアプリの設定

公式ドキュメントのMessaging APIに説明がありますが、

Messaging_API.png (219.0 kB)

ビーコンイベントを受信できるようにLINEアプリの設定を行う必要があります。

先ほど準備したBotを友だち追加した上で、以下の手順に従って、設定してみてください。
1. スマートフォンのBluetoothをオンにする。
2. LINEアプリで[設定]>[プライバシー管理]> [情報の提供]の順に選択し、[LINE Beacon]のチェックボックスをオンにする。

プライバシー管理画面の情報の提供をクリックし、

Screenshot_20180824-193728.png (216.2 kB)

LINE Beaconにチェックを入れます。

Screenshot_20180824-193737.png (178.0 kB)

このLINE Beaconのチェックボックスの位置が、公式ドキュメントと異なっており、若干探しました・・・

これで、LINEアプリ側の設定は完了です。

3. LINE Simple Beacon用のHWIDを発行

次に、ここにアクセスしてLINE Simple BeaconのハードウェアIDの払い出しボタンをクリックします。
LINE_OFFICIAL_ACCOUNT_MANAGER.png (180.7 kB)

さらに、ビーコンと連携させたいBotの選択ボタンをクリックし、
LINE_OFFICIAL_ACCOUNT_MANAGER.png (140.4 kB)

ハードウェアID発行ボタンをクリックすると、以下の画面の通り、IDが表示されるので、これをメモっておきます。
LINE_OFFICIAL_ACCOUNT_MANAGER.png (145.7 kB)

4. Raspberry Pi Zero Wのセットアップ

最後に、Raspberry Pi Zero Wをセットアップします。

Linux向けのBluetoothのプロトコルスタックであるbluezおよび関連するパッケージをインストールします。

sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev

次に、以下のコマンドを実行します。
以下は発行されたHWIDが0116b4370c の場合の例ですので、発行したHWIDに合わせて適宜修正してください。

# 発行されたHWIDを2桁ごとにスペースで区切ったものを指定
HWID='01 16 b4 37 0c'

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

これで、 Raspberry Pi からのビーコンイベントのwebhookが、先ほどWebhook URL に入力したエンドポイントに届くはずです。

動作確認

ビーコンの電源が入っていることを確認し、LINEアプリを起動したスマートフォンをビーコンに近づけます。

すると、WebhookがGoogle Apps Scriptに送信され、受信したイベント内容が、無事Slackに飛んできました。

こんな感じで。
Slack_-_kdl_iot.png (49.3 kB)

まとめ

これで、Botと連携ずみのLINEユーザがビーコンデバイスに近づいたことをwebhookで受け取ることができるようになりました!

帰宅時間でもロギングしてみようかな。

以上

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away