3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AndroidアプリでFirebase Realtime DBにセンサーデータを保存、閲覧する

Posted at
アプリ画面

前回の記事、冷蔵庫の温度湿度を2週間計測した結果で予告していたアプリです。
LinkingのSDKを使ってセンサーから温湿度を取得し、FirebaseのRealtime DBに保存することができます。
ソースコードはここに置きました。

準備

ソースコード

まずはGithubからソースコードをClone。

git clone https://github.com/kojira/firebaseposter.git

Android Studio

Android StudioでCloneしたプロジェクトを開きます。

google-services.jsonというファイルが足りないため、ビルドエラーが出ますが、ひとまず無視します。

スクリーンショット 2016-12-06 15.31.33.png

Firebaseと連携するため、メニューから「Tools」→「Firebase」を選びます。
Firebaseメニュー

右側の方にこんなのが出てきます。
Firebase Assistant

「Realtime Database」の三角をポチッとして、「Save and retrieve data」をクリック。
Realtime DB

「Connect to Firebase」をクリック。
Save and retrieve data

Create new Firebase projectを選択して、「Connect to Firebase」をクリック。(※Googleアカウントでサインインしていない場合は多分サインイン画面が出ると思います)
Connect to Firebase

しばらく待つと表示が「Connected」に変わります。
connected

そして「google-services.json」ファイルがプロジェクトに追加されているはずです。
google-services.json

これで準備完了!!
・・・いや、まだです。
このままでもアプリは起動しますが、DBの書き込み権限がないので実行時に「Permission denied」のエラーが出てしまいます。

Firebaseの設定

Firebaseのコンソールを開いてさっき作成したプロジェクトを選択して開き、左側のメニューの「Database」を選択。
Databaseメニュー

ルールのタブをクリック。
Realtime Database

デフォルトの設定だと認証が必要になっているので、
DBルール1

このように書き換えて「公開」ボタンをクリック。(※あくまで個人利用で公開しない目的での利用を想定しています。商用等で運用する場合はちゃんとしましょう。)
DBルール2

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

これで今度こそ準備OKです。

念のため

Linkingってなんぞや?っていう人は、Linkingの端末をもらったのでデモアプリを試してみたを参考に、Linkingのアプリを入れてデバイスと接続しておきましょう。

使い方

アプリ画面
  1. Realtime DBに保存するデータのキーとなる文字列を「root path」のところに入れます。
  2. デバイスのリストからセンサー情報を拾いたいデバイスを選択します。
  3. そのデバイスで取得できるセンサー情報(現在は加速度、湿度、温度の3種類のみ対応)にチェックを入れます。
  4. 「START」ボタンでデータ取得を開始します。
  5. 「GET」ボタンを押すと最新の10件を取得してリストに表示されます。データが更新される度にリストに情報が追加されていきます。

Firebaseコンソールで見ると、こんな感じにデータが格納されます。
データ

加速度のデータは量が多いので気をつけましょう。

疲れたので今回はひとまずここまで。

追伸

冷蔵庫の温度湿度を2週間計測した結果の記事で計測を始めた冷蔵庫の温湿度計測は以下のサイトでリアルタイム公開していましたが、現在新規のデータ取得は停止中です。
kojira家の冷蔵庫のおんどしつど

理由は計測に使用していたNexus 4のバッテリーが膨らんできたからです。
約2ヶ月間給電し続けたせいでバッテリーがイカれてしまったようです。。
哀れなNexus 4

常時給電しても問題ないNexus Playerで同様のことができないか試行錯誤中です。
(※自宅の環境だと何故か2m以内くらいしか電波受信しないのでどうしようか悩み中。)

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?