Android ThingsとFirebaseを使ってLチカの点滅速度をリアルタイムに制御する

#この記事は何？
[Android Things をインストールしてLチカさせてみた！](http://qiita.com/ryoyakawai/items/687e10d8d0f72afd9175)の次に挑戦してみた、AndroidThingsとFirebaseをつなぎ、Lチカの点滅速度をリアルタイムに制御したときの方法を記録しています。2017年5月22日現在のトライの記録です。

#用意するものとか
詳しくは[こちら](http://qiita.com/ryoyakawai/items/687e10d8d0f72afd9175#android-things%E3%81%A8%E3%81%AF)を参照してください。

#Firebaseとは
モバイルとウェブアプリの開発プラットフォームです。[wikipedia](https://en.wikipedia.org/wiki/Firebase)。プラットフォームを超えクライアントにデータをリアルタイムに同期して届けるリアルタイムデータベースが最初の製品ですが、拡張されて現在のプロダクトになっています。2014年にGoogleさんに買収されています。

#回路を作る
LEDと抵抗をRaspberry Pi3と以下の用に接続します。
<img width="400" src="https://qiita-image-store.s3.amazonaws.com/0/61221/7d9d9738-dcb8-3db1-3148-63c20c9d4f1c.png">
[ピン配置図](https://developer.android.com/things/hardware/raspberrypi-io.html)で指定すると7番ピンの`BM4`と9番ピンの`Ground`を使用しています。

#AndroidアプリをCloneする
適当なディレクトリにCloneします。

```shell-session
$ cd hoge;
$ git clone https://github.com/ryoyakawai/AndroidThingsFirebase00.git;
```
#Android Studioの準備
Firebaseに接続する為にはAndroid StudioにFirebaseのSDKをインストールする必要があります。英語で申し訳ありませんが[こちら](https://developer.android.com/studio/write/firebase.html)に従ってインストールをお願いします。

#Firebaseの設定
[Firebase](https://firebase.google.com)のアカウントがない場合は作成してください。

##プロジェクトの作成
プロジェクト名は `androidthingsLchika` にしました。
<img width="400" alt="Screen Shot 2017-05-23 at 10.28.36 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/61221/85e751ec-082c-4ee1-6750-d049609de2a8.png">

##Databaseの設定
###RULESの設定
`Database`メニューから、`RULES`を選び以下のように書込みます。(この設定だと誰でも、どこからでも更新できるので注意してください)

```json
{
  "rules": {
    ".read": true,
    ".write": true
  }
}
```

<img width="400" alt="Screen Shot 2017-05-23 at 10.43.11 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/61221/fa7f5577-8817-c0f7-7aa1-e5d5209bdd09.png">

###DATAの設定
以下の項目を追加します。

> Name: `interval`
> Value: `1000`

<img width="400" alt="Screen Shot 2017-05-23 at 10.32.47 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/61221/6f99ea8b-5aeb-2e88-9d62-37044b2eaf0b.png">

###google-service.jsonをダウンロードしてコピー
`Overview`の行にある「レンチマーク」をクリックして`Project settings`をクリックし、青色の`ADD APPS`をクリックすると以下の画面が表示されるので、`Add Firebase to your Android app`をクリックします。
<img width="400" alt="Screen Shot 2017-05-23 at 10.55.30 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/61221/39a1a3b4-04da-a7f6-74bb-0d97e8a33cec.png">

表示された画面の`Android project name`にプロジェクト名を入力します。ここでは`com.ryoyakawai.androidthingsfirebase00`を入力しています。[ここ](https://github.com/ryoyakawai/AndroidThingsFirebase00)からダウンロードしたコードのAndroid Project nameです。
<img width="400" alt="Screen Shot 2017-05-23 at 10.33.39 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/61221/f2de7adb-f0f6-ada8-8084-0dc1e9bf8417.png">

あとは、説明に従って`google-service.json`をダウンロードして、「AndroidアプリをCloneする」でCloneしたコードの中に移動します。

```shell-session
$ mv [pathToYourGoogle-Service.json]/google-service.json hoge/app/;
```
# Androidアプリをコンパイルしてインストール
`Android Studio`から「AndroidアプリをCloneする」でCloneしたコードを開き、コンパイルをして完了です。

`Databaseの設定` > `DATAの設定`
のValueを変更すると点感覚を制御することが可能です。

#終わりに
「Firebaseを使うことに意味はあるのか？」と聞こえてきそうですが、連携を試したかっただけで、Firebaseを使うこと深い意味はありませんのでご了承くださいw

#おまけ
Raspberry PI 3とディスプレイのケースを作ってみました。裸で使うよりもなんだか雰囲気が出るな〜、と感心してしまいました。
<img width="400" src="https://qiita-image-store.s3.amazonaws.com/0/61221/1d911162-fc69-107e-6aff-15f34149e89a.jpeg">