さっそくLINE Thingsを触ってみた（ESP32でリモートLチカ） #linedevday


[LINE Things](https://developers.line.biz/ja/docs/line-things/)、昨日の[LINE DevDay](https://linedevday.linecorp.com/jp/2018/)で発表されましたね。

たぶん一般のエンジニアが触れるようになったってところだと、一番大きな発表だったんじゃないですかね?

[LINE の IoT プラットフォーム LINE Things の Developer Trial を試してみる](https://engineering.linecorp.com/ja/blog/line-things-developer-trial/)が公式感のある記事なのでこちらも合わせて読んでみてください。

(取り急ぎって感じの記事なので認識間違ってたら誰かが指摘してくれるはず...)

## LINE Things

簡単にいうと、 **LINEから外部のBluetoothデバイスにアクセス出来るようになるAPI**です。

* LINE BOTのLIFFから制御する
* フロントエンドのJavaScriptで記述
* Web Bluetoothの仕様に近そう
* LINE Thingsっていう新しいIoT Hubデバイスが出た訳ではない（最初名前聞いた時そんな印象だった）

LINE Thingsを使うことでLINEアプリ（がインストールされてるスマホ）がBLE機器をインターネットに繋げてあげるハブになるっていうのが面白いですね。

```
BLE デバイス(LINE Things) <----> LINE BOT(messaging API, LIFF, LIFF BLE)
```

## LINE Things Starter

> https://github.com/line/line-things-starter

こちらのリポジトリです。

## ちゃんとやろうとすると必要となる準備

LINE TthingsはLI(LIFF BLEという言葉が

* LINE BOT (Messaging API)の作り方
* LIFFアプリケーションの作り方

を知ってることが前提になりそうです。

ただ、試すに当たりLINE BOTとLIFFアプリをあらかじめ作ってくれているのでこちらを使ってやっていきます。

## LINE Things StarterでLチカしてみた

本来はSTEP0として`LINE BOTの作成`と`LIFFアプリの作成`、`新規 LINE Things プロダクトの作成`などがあるらしい（まだ試せてないの）ですが、[LINE Things Starter](https://github.com/line/line-things-starter)ではその辺を用意してくれてます。

### STEP1: デバイス側の用意

ESP32 ESP32 DevkitCを利用します。

ESP32 DevkitCのArduinoサンプル実装があるので使います。

[esp32 devkit c向けのサンプルコード](https://github.com/line/line-things-starter/blob/master/esp32/arduino/sample/sample.ino)を書き込み、起動させておきます。

### STEP2: 配線

サンプル通りに接続してみましょう。

> ![](https://engineering.linecorp.com/wp-content/uploads/2018/11/LED_Connection-1024x893.png)

僕は、手持ちに抵抗器がなかったのとジャンパワイヤーが1本しかなかったのでこんな感じです苦笑 なくてもまぁなんとかなります。

![](https://i.gyazo.com/3ec2645e4173ac86384c70c341169c7b.png)

### STEP3: 規約同意とLINE Things StarterのBOTと友達になる

記事にあるQRコードにLINEからアクセスしてLINE Thingsの機能を有効にしましょう。

> ![](https://i.gyazo.com/3a29c9fa339f8dc59c52db3057e3fa0e.png)

こんな画面、デバイスと通信して色々なデータ取得したりできるので規約同意が必要になります。

<img src="https://qiita-image-store.s3.amazonaws.com/0/35387/57eef0ed-8603-db72-3c40-0cc7f9517e8c.png" width="200">

連携可能なデバイスって項目に `LINE Things Starter`が表示されます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/35387/f01dd31e-edd7-c657-7137-1ea0a0c2d27f.png" width="200">

この辺りのタイミングでデバイスとのペアリングを求められるのでペアリングしておきましょう。

<img src="https://qiita-image-store.s3.amazonaws.com/0/35387/6e2fb22f-9261-d829-a02a-bafc1c561a30.jpeg" width="200">


公式アカウントとも友達になってね、と言われるのでなっておきます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/35387/70a6b0fd-8591-2366-c8a0-9f83e806943e.png" width="200">


LINE Things Starterと
の接続が完了すると以下のポップアップが出ます。今すぐ利用を選択します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/35387/030cf1b8-6680-c541-4953-73d1f73d1574.png" width="200">

こんなLIFF画面が表示されてID情報などが表示されます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/35387/64fc272f-ca44-2f80-0a99-92e11d2dde6b.jpeg" width="200">

僕が試した際にはうまく接続できないときもあって、LINEアプリを立ち上げなおしたり、スマホのBLEペアリングリストを一回削除して再度試す、などやっていました。

### STEP4 試す

LIFF画面で情報を見たり、LIFF画面から情報を送ったり出来ます。
本来はこのLIFF画面も自分で作って触れるはずですが、とりあえずはLINE Tthings Starter側で用意してくれてるこの画面で試しましょう。

![](https://i.gyazo.com/4aacf9d2bb96fbd6b2b1cd5ee3e01ac9.gif)

* デバイス(ESP32) -> LIFF: `ESP32のBOOTボタンを押す`

ESP32のBOOTボタンを押すと画面のButton StateやClick Countが変化するのが分かると思います。

* LIFF -> デバイス(ESP32): `LIFFのSwitch LED ON/OFFボタンを押す`

LIFFのSwitch LED ON/OFFボタンを押すと、配線したLEDがついたり消えたりするのが分かると思います。

> Instaにもアゲタヨ https://www.instagram.com/p/BqegzIpDc42/

## 所感

LIFFから直接外部BLE機器を呼び出せることによって、これまで **BLEしか使えない機器がインターネット繋がらない問題**や **繋げるためにIoTハブ（BLE -> WiFiなど）が必要だよね〜問題**が一気に解消される可能性を感じました。

**LINEってみんなのスマホに入ってるので、LINEを経由して今までインターネットに繋がらなかったデバイスがインターネットに繋がるのはIoT化が加速する**だろうなぁと感じています。Web Bluetoothにめちゃ期待していた部分がまさにこれなので嬉しいですね。

個人的にはLINE ThingsをきっかけにWebやアプリエンジニアがIoT領域に興味持ってくれると嬉しいなぁと思ったりしたんですけど、ハードウェア初心者がはまりがちな、`どこがボトルネックになってるか分からない`ってのが良くある話なので、この辺は知見共有ちゃんとしていきたいですね。

次回のIoTLTでこの辺話しますね！ ( https://iotlt.connpass.com/event/109872/ )

ちなみに、今回急遽出先で試してみてたらLEDが壊れてて動かなかった...みたいな感じでした笑 こういうのもアルアルです。

## よもやま

昨日の[LINE DevDay](https://linedevday.linecorp.com/jp/2018/)に合わせて公開頑張ってたらしいので、関係者の皆さん取り急ぎお疲れ様でした＆おめでとうございます！