前回の記事、冷蔵庫の温度湿度を2週間計測した結果で予告していたアプリです。
LinkingのSDKを使ってセンサーから温湿度を取得し、FirebaseのRealtime DBに保存することができます。
ソースコードはここに置きました。
準備
ソースコード
まずはGithubからソースコードをClone。
git clone https://github.com/kojira/firebaseposter.git
Android Studio
Android StudioでCloneしたプロジェクトを開きます。
google-services.jsonというファイルが足りないため、ビルドエラーが出ますが、ひとまず無視します。
Firebaseと連携するため、メニューから「Tools」→「Firebase」を選びます。
「Realtime Database」の三角をポチッとして、「Save and retrieve data」をクリック。
Create new Firebase projectを選択して、「Connect to Firebase」をクリック。(※Googleアカウントでサインインしていない場合は多分サインイン画面が出ると思います)
そして「google-services.json」ファイルがプロジェクトに追加されているはずです。
これで準備完了!!
・・・いや、まだです。
このままでもアプリは起動しますが、DBの書き込み権限がないので実行時に「Permission denied」のエラーが出てしまいます。
Firebaseの設定
Firebaseのコンソールを開いてさっき作成したプロジェクトを選択して開き、左側のメニューの「Database」を選択。
このように書き換えて「公開」ボタンをクリック。(※あくまで個人利用で公開しない目的での利用を想定しています。商用等で運用する場合はちゃんとしましょう。)
{
"rules": {
".read": true,
".write": true
}
}
これで今度こそ準備OKです。
念のため
Linkingってなんぞや?っていう人は、Linkingの端末をもらったのでデモアプリを試してみたを参考に、Linkingのアプリを入れてデバイスと接続しておきましょう。
使い方
- Realtime DBに保存するデータのキーとなる文字列を「root path」のところに入れます。
- デバイスのリストからセンサー情報を拾いたいデバイスを選択します。
- そのデバイスで取得できるセンサー情報(現在は加速度、湿度、温度の3種類のみ対応)にチェックを入れます。
- 「START」ボタンでデータ取得を開始します。
- 「GET」ボタンを押すと最新の10件を取得してリストに表示されます。データが更新される度にリストに情報が追加されていきます。
Firebaseコンソールで見ると、こんな感じにデータが格納されます。
加速度のデータは量が多いので気をつけましょう。
疲れたので今回はひとまずここまで。
追伸
冷蔵庫の温度湿度を2週間計測した結果の記事で計測を始めた冷蔵庫の温湿度計測は以下のサイトでリアルタイム公開していましたが、現在新規のデータ取得は停止中です。
kojira家の冷蔵庫のおんどしつど
理由は計測に使用していたNexus 4のバッテリーが膨らんできたからです。
約2ヶ月間給電し続けたせいでバッテリーがイカれてしまったようです。。
常時給電しても問題ないNexus Playerで同様のことができないか試行錯誤中です。
(※自宅の環境だと何故か2m以内くらいしか電波受信しないのでどうしようか悩み中。)