Android Thingsを載せたRaspberry Pi3のカメラで撮影した画像をFirebaseのDatabaseへ送り、Androidスマフォからリアルタイムで閲覧するAndroid Thingsのdoorbellサンプルアプリを試してみました。撮影した画像にはCloud Vision APIを使ってアノテーションも表示しています。
前準備
Android Things搭載ボード
Raspberry Pi3を使用してます。
Raspberry Pi3によるAndroid Things入門をご参照。
- Raspberry Pi3
- Raspberry Pi Camera Module V2
- ブレッドボード
- プッシュボタン(タクトスイッチ)1個
- 抵抗 1KΩ 1個
- ジャンパーワイヤー オスーオス2本、オス-メス3本
※GPIOピンはBCM21を使用してます。
Google Cloud Platform
プロジェクトを作って、コンソールのAPI ManagerでCloud Vision APIを有効にし、API Keyを作成したら、ソースにコピペします。
private static final String CLOUD_VISION_API_KEY = "<ENTER VISION API KEY>";
Firebase
プロジェクトを作ったらAndroidアプリを追加し、設定ファイルのgoogle-services.jsonをダウンロードし、AndroidThingsアプリのappディレクトリ直下と、AndroidアプリのcompanionAppディレクトリ直下に置いてビルドします。
設定ファイル内のapi_keyが空っぽでビルドエラーになることがあるようです。
http://stackoverflow.com/questions/37317295/missing-api-key-current-key-with-google-services-3-0-0
"api_key": []
コンソールからSDK設定手順を表示し、再度ダウンロードして設定されていれば、ビルドが通ります。
"api_key": [
{
"current_key": "encrypted-string"
}
],
ちなみにこのapi_keyはCloud Vision APIのキーとは別ものです。
Databaseのルールは、認証なしで誰でも読み書きできるようにしておきます。
{
"rules": {
".read": true,
".write": true
}
}
実行
-
Raspberry Pi3に電源を入れてAndroidThingsを起動したらadb接続し、appアプリを実行します。
-
対向のcompanionAppアプリもスマフォで起動しておきます。
-
ブレッドボード上のプッシュボタンを押すと撮影され、画像とアノテーションがFirebaseのDatabaseに登録されます。
-
companionAppアプリでリアルタイムに表示されます。(タイムラグはあります。)
自分は手順を行きつ戻りつしていたので起きていたか不明ですが、Developer Preview 1の既知の不具合により、撮影できるようにするために、AndroidThingsのアプリを起動後に一旦ボードをリセットする必要があるようです。
おしまい
その名の通り、IoTはネットワークで(とりわけバックエンドと)つながると、いろいろな組み合わせと用途が広がる感じがしてワクワク感がありますね。