はじめてのLINE Things
少し前に、LINE Things development boardを頂く機会がございました。 興味がありましたし、せっかくですので、まずはセットアップをしてみました。
LINE Thingsとは?
LINE Developersに分かりやすい文章がございましたので、引用します。
LINE Thingsは、LINEを介して、チャネルとBluetooth® Low Energy対応デバイスを連携し、操作を可能にするIoTプラットフォームです。
ここでいうチャネル
とは、ボットを作成するために使用するLINE Messaging API
のチャネルのことです。
この図にあるように、LINEアプリがデバイスと連携し、LINEのプラットフォームを通じて、LINE BotやLIFF(LINE Front-end Framework)のインタフェース上に情報を表示したり、操作を行えるようになるというものです。LINEだけあって、LINEがユーザーインタフェースになるわけです。
※画像はLINE Developersより引用
セットアップの流れ
LINE Things development boardのおかげで、デバイスそのものを用意する必要はございませんでしたが、他にも色々とやることがあります。
こちらの流れに沿ってやっていきます。
Messaging APIのチャネルの作成
LINE Developersにログインします。アカウントをお持ちでない場合は、アカウントの作成をしてください。
ログインしたら、新規プロバイダー作成
を押します。
任意のプロバイダー名を入力し、確認する
ボタンを押します。
確認したら、作成する
ボタンを押します。
作成されると下記の画面が表示されます。Messaging APIのチャネル作成する
ボタンを押します。
画面上の必須項目を入力していき、下にある入力内容を確認する
ボタンを押します。
下記のような同意画面が出ますので、同意します。
確認画面が出ますので、下にある規約への同意チェックをつけて作成
ボタンを押します。
チャネルが作成されたので、選択します。
チャネル基本設定
タブを表示します。
そこにあるChannel Secret
の値を控えておきます。
あと、アクセストークンを発行するため、再発行
ボタンを押します。
とりあえずロングタームなものを取得しておきたいので、24時間を選択しておきます。(任意)
発行されたアクセストークンの値を控えておきます。
システムの準備
LIFFアプリを作成する
イチからLIFF(LINE Front-end Framework)アプリを作る方法もありますが、まずは簡単に済ませたいと思います。そこで、LINE社が公開しているLINE Things development boardのサンプルLIFFのソースを使用します。
サンプルLIFFのソースコードは、HTMLファイル、CSSファイル、JSファイルで構成されているので、ウェブサーバー環境などに配備してください。
LIFFアプリを先ほど作成したチャネルに追加する
チャネルの設定画面のLIFF
タブを選択し、LIFFアプリを作成
ボタンを押します。
LIFFの追加フォーム上の項目を入力していきます。サイズ
というのはLIFFアプリの表示サイズのことです。
※画像はLINE Developersより引用
入力したら保存する
ボタンを押します。
こんな風に登録されます。
LIFF URL
のline://app/
の右側の文字列はLIFF ID
というものです。あとで使うので控えておきます。
ボットアプリを作成する
ボットアプリは、デバイス連携・連携解除のイベントを受け取ったり、LINE Thingsのシナリオ実行イベントを受け取ったりします。今回は、とりあえずデバイス連携、連携解除のイベントを受け取ったら、メッセージ通知するものを用意しておきます。
ボットの作成は下記の記事を参考にしてみてください。
補足
メッセージイベントと同様に、下記のようにLINE Thingsのイベントが通知されるようになります。
$eventData = json_decode($httpRequestBody); (・・・省略・・・) foreach ($eventData->events as $event) { (・・・省略・・・) // Line Thingsイベント elseif($event->type === "things"){ // デバイス連携の場合 if($event->things->type === "link"){ $message = "deviceid=" . $event->things->deviceId . "が連携されました!"; } // デバイス連携解除の場合 else{ // 念の為typeがunlinkになっているか確認しておく if($event->things->type === "unlink"){ $message = "deviceid=" . $event->things->deviceId . "が連携解除されました!"; }else{ //エラー $message = "デバイス連携or連携解除イベントでエラー!!!"; } }; // LINE Botからメッセージを返す $response = $bot->replyText($event->replyToken,$message); } }
デバイスの作成
本来ですと、Bluetooth® Low Energy対応デバイスを用意する必要があるのですが、今回はLINE Things development boardがあるので、それを利用させていただきます。本当にありがたいボードです。
ただし、このLINE Things development boardを先ほど作成したチャネルを通じて連携できるように、下記の操作を行います。
トライアルプロダクト情報を作成する
これは自前でデバイスを用意した場合も行いますが、LINE Things development boardの場合も、サービス探索用service UUID
を取得するために行います。
下記のAPIを投げて登録します。
curl -X POST https://api.line.me/things/v1/trial/products \ -H "Authorization: Bearer {channel access token}" \ ←控えておいたチャネルのアクセストークン -H "Content-Type: application/json" \ -d '{ "name": "{trial product name}", ←任意の名前 "liffId": "{LIFF APP ID}" ←控えておいたLIFF ID }'
こんなようなレスポンスが返ってきたら成功です。
psdiServiceUuid
とpsdiCharacteristicUuid
はLINE Thingsのトライアル版では共通の値になります。
{ "id":6******************, "name":"linethingsdemo", "type":"BLE", "channelId":1**********, "actionUri":"line://app/1********-*********", "serviceUuid":"8******-****-****-****-***********", "psdiServiceUuid":"e625601e-9e55-4597-a598-76018a0d293d", "psdiCharacteristicUuid":"26e2b12b-85f0-4f3f-9fdd-91d114270e6e" }
LINE Things development boardに設定されているAdvertising UUIDの値を取得したserviceUuidの値で上書きする
本来ですと、ファームウェアを書き換えないといけないのですが、LINE Things development boardのありがたいのはLIFFアプリから値の変更ができることです。 まず、LINEアプリとLINE Things development boardを接続します。
このページにあるQRコードをLINEアプリで読みます。
LINE Thingsの利用規約が出てくるので、同意します。
同意すると、LINEアプリのメニューにLINE Thingsが出てきます。
まだ何もデバイスが連携されていない状態です。
LINE Things development boardの電源を入れ、スマホのBluetoothをONにしますと、連携可能なデバイスとして出てくるので、選択します。
友達追加します。
今すぐ利用を選択します。
同意画面が出るので、同意します。
自動的に下記のような画面(LIFF)が表示されますので、表示されているデバイスを選択します。
write advertising packet
タブを選択し、UUID
欄に先ほど取得したserviceUuid
の値を入力します。入力したらWrite UUID
ボタンを押します。
LINE Things development boardのディスプレイ上にUUID書き換えのメッセージが出たら、ボード上のリセットボタンを押します。そうすることで反映されます。
反映されたら、LINEアプリのLINE Thingsメニューからデバイス連携を解除します。(選択してタップするとメニューが出ます)
解除した後、しばらく待っていると、トライアルプロダクト情報を作成する
の手順で登録したデバイスとして連携可能なデバイスが表示されるようになります。再度連携します。
同意画面が出るので、同意します。
LIFFアプリを完成させる
liff-starter.jsの先頭の下記の値をserviceUuid
の値に変更します。
const USER_SERVICE_UUID = "*********************";
変更したら、当ファイルをサーバー環境などに配備し、反映させます。
※Android端末の場合はLIFFのファイルがローカルにキャッシュされるそうなので、キャッシュをクリアしてください。
LINE Thingsを試してみる
まず、LINE Botとの連携ですが、デバイス連携を解除したり、連携したりすると、そのタイミングでボットの方から通知されるようになりました。
あと、LINE Thingsのメニュー上のマイデバイス
をタップすると、LIFFが起動します。このLIFFは自分がチャネルに登録したLIFFになります。
一覧からデバイスを選択してタップします。
今現在はデバイスに接続するだけなので、サンプリにあるデバイス上から値を取得するには至ってないですが、LIFFの画面上で情報を参照したり、デバイスを制御することが可能になります。
さいごに
これをどう活用するかはアイデア次第だと思いますので、どう使っていくか、いけるかについては漠然としております。
次回はLINE Thingsシナリオ実行イベントを取得する、といったことを試してみたいと思います。