このブログは、N 高等学校と VRChat の世界からやってきた株式会社 Armoris アルバイトの Shadero が書いています。
あるもりすぶろぐの内容は個人の意見です。
こんなことがやりたい!
- 温度・湿度・気圧を計測する
- 計測した値を DB に保存する
- グラフ化して表示する
本記事は[その 2]の続きです。
[その 3]では いよいよ DB に保存された値を用いてグラフ化を行います!
環境
Type | Name |
---|---|
Machine | Raspberry Pi 3 Model B+ |
OS | Raspbian 10 buster |
Temperature, humidity & pressure sensor | BME280 |
使用ソフトウェア
Name | Version |
---|---|
InfluxDB | 1.8.3 |
Grafana | 7.3.7 |
グラフ化ツールとして Metabase や Chronograf などがありますが、今回は文献の多さを考慮して Grafana を選択しました。
Grafana をインストールしてみる
Grafana が入っていないと何も始まらないのでとりあえずインストールします。
Grafana は標準では登録されていないのでリポジトリを追加してインストールします。
$ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - $ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list $ sudo apt-get update && sudo apt-get install -y grafana
Grafana を起動及び自動起動させる
インストールしただけでは起動してくれないため起動させます。
また、ラズパイを再起動した際に自動で Grafana が起動してくれないと不便である事が多いので、自動起動の設定も行います。
$ sudo systemctl unmask grafana-server $ sudo systemctl start grafana-server $ sudo systemctl enable grafana-server
Grafana にログインしてみる
ラズパイと同じネットワーク内にあるデバイスのブラウザで http://raspberrypi.local:3000 に接続するとログインが求められるのでデフォルトの ID&PWD でログインします。
Username | Password |
---|---|
admin | admin |
このままログインすると新しいパスワードの設定を促されるので新しいパスワードを設定します。
デフォルトのパスワードを使い続けるのはとても脆弱なため、外部に公開する際などはパスワードを変更することを強く推奨します。
InfluxDB に Grafana 用のユーザーを作成する
このまま Grafana から[その 2]で作成したデータベース(iot01)に接続して値を読み取ってグラフ化…!と行きたいのですが、該当データベースの読み込み権限を持ったユーザーを使って接続しないと、データベースにある値を読み込む事が出来ないため、Grafana がデータベースから値を取得できるように InfluxDB に Grafana 用のユーザーを作成します。
Influx へ接続します。
$ influx
Grafana が DB に値を読み出すときに使う grafana という名前のユーザーを作成します。
CREATE USER grafana WITH PASSWORD 'ここにパスワードを書く'
grafana ユーザーに読み込み権限を与えます。
GRANT READ ON "iot01" TO "grafana"
データベースに接続する
Grafana で、先程作成したユーザーを使って[その 2]で作成したデータベースに接続します。
画面左側にある Configration にある Data Sources をクリックします。
Add data source をクリックして Influx DB を見つけ選択します。
下記の画像のように、InfluxDB の URL と、データベース名と 先程作成した Grafana が使うユーザーの名前とパスワードを書き込みます。
Save & Test をクリックし、テストに成功したら Back をクリックして戻ります。
DashBoard を作成する
画面左側にある Create にある Dashboard をクリックして作成します。
Dashboard を作成したら真っ先に Save をクリックして Dashboard を保存します。
Dashboard の名前尋ねられるので、適当な名前に設定し Save をクリックして保存します。
Panel を作成する
Panel と呼ばれるデータベースの値を視覚化するオブジェクトを作成していよいよ値のグラフ化を行います!
今回は例として温度をグラフ化します。
Panel には様々な設定があるのですが、今回はグラフ化するための最小限の設定を行います。
Add panel をクリックし Panel を作成します。
Add new panel をクリックし、Panel の設定をしていきます。
select measurement をクリックし、[その 2]で作成した Measurement を選択します。
value をクリックし、グラフ化したい値を選択します。
今回は温度をグラフ化したいので temperature を選択します。
Panel の名前を設定します。
本記事では名前を「temperatures」としました。
Save をクリックして適用と保存を行います。
変更内容などを書き込む欄があるため必要に応じて書き込み Save をクリックし保存したら完成です。
完成!!
保存を行ったら完成です!
下記の画像は湿度や気圧などの他の値も同様にグラフ化してみた画像です、とてもいい感じになったはず!
感想
やっと…グラフ化できた…()
振り返るとそれぞれやる事は単純ですが、センサーからの値を取得できるようにして、それをデータベースに書き込めるようにして、グラフ化する…などやる事がそれなりに多く、全て終えたあと謎の達成感がありました…!
今後は、ラズパイのストレージに使われている SD カードは書き込み耐性が低く、長期間運用するとデータベースが吹っ飛ぶ可能性があるのでデータベースを他のマシンに移行させたいのと、新しくセンサーを買って CO2 濃度を測ってグラフ化出来たりしたら良いなぁ~…なんて考えています。
今後も検証や工作など記事に出来る事を行ったらどんどん記事にする予定です…!お楽しみに!!