IoT機器で温湿度を測定してクラウドでグラフ化 kibana編(その6) | そう備忘録

IoT機器で温湿度を測定してクラウドでグラフ化 kibana編(その6)

温湿度をグラフ化

RaspberryPi Zeroと温湿度モジュール(DHT22)を使用して温湿度を指定した間隔(分)で測定してクラウド(AWS IoT Core)にデータをアップロードしてグラフ化するまでの6回目。

過去記事は以下の通り。

今回の記事の範囲はkibanaでのグラフ化とする。

システム概要図

システム概要図と今回の記事の範囲は以下の通り。

第6回今回の記事の範囲

主な実現したい機能は以下の通り。

  • 指定した間隔(分)で温湿度を測定する
  • 指定した間隔(分)でデータをサーバーにアップロードする
  • アップロードしたデータは集計、グラフ表示する
  • 温湿度のしきい値(上限、下限)を超えた場合はアラートを発信する
  • しきい値は場所毎に異なる値を指定出来るようにする
  • 設定情報はGoogle Sheetで一括指定して設定値を変更したら各端末に速やかに反映させる
  • それぞれの端末は遠隔で再起動等の操作が出来るようにする
  • 測定端末は複数台設置するが基本的に室内とする(屋外には設置しない)
  • 100V電源を確保できる場所とする(バッテリー駆動も一応試してみる)
  • 初期コスト、ランニングコストともに出来るだけローコストで実現する

kibanaの設定

プログラムを動かす

kibanaでの設定の前にラズパイゼロ上でPythonのプログラムを実行する。

プログラムが正しく動作すればAWS IoT Core経由で正常データはAWS Elasticsearch ServiceとDynamoDBへ連携される。

Elasticsearch Serviceに何件かデータが蓄積された状態でkibanaの設定を行う。

kibanaを起動する

以前の記事のAWS Elasticsearch Serviceの設定の際のkibanaのURLをクリックして設定画面を立ち上げる。

アクティブになった

kibanaの初期画面が表示されるのでExplore on my ownをクリックする。

Kibanaの初期画面

インデックスとは

kibanaではデータの単位の事をインデックスと呼んでいる。

いわゆるRDBMSのインデックスとは名称は同じだが内容は異なるので注意が必要だ。

以前の記事にてインデックスは日付単位で作成する設定をしている。

AWS Elasticssearch Service上でのデータの削除はインデックス単位で行うので、データが蓄積されてきた時に過去データを削除する際に日付単位でインデックスが作成されていると扱いやすいのがその理由だ。

そして数日分の温湿度をまとめて一つのグラフで表示させたいので複数のインデックスをまとめて扱うインデックスパターンの設定を行う。

インデックスパターンの作成

メニューからManagement(歯車アイコン)をクリックする。

歯車アイコン

メニューで”Index Patterns”を選択して「Create index pattern」ボタンをクリックする。

Create Index Pattern

index Pattern欄に”temp-app-*”を指定して(*はワイルドカード)「Next step」ボタンをクリックする。

temp-app-*を指定する

プルダウンメニューから”tempdatetime”を選択してTimeフィールドを指定したら「Create index pattern」ボタンをクリックする。

Timeフィールドを指定する

インデックスパターンが作成された。

インデックスパターンが作成された

データの確認

左のメニューから”Discover”アイコンをクリックしてプルダウンメニューから先程作成した”temp-app-*”インデックスパターンを選択すると対象データが表示される。

データを表示する

日付時刻の表示フォーマット

デフォルトだと日付の表示フォーマットが”MM/DD/YYYY”で日本人には分かりづらいので変更する。

メニューからManagement(歯車アイコン)、”Advanced Settings”をクリックしてDate Formatを”YYYY-MM-DD HH:mm:ss”に変更した。

日付時刻の表示フォーマットの変更

Visualizations

作成

温湿度をグラフ表示する為の視覚化部品を作成する。

kibanaでは最初に幾つか視覚化の為の部品を作成した後、その部品をダッシュボードに貼り付けて画面を作成する。

メニューから”Visualize”アイコンをクリックした後、「Create new visualization」ボタンをクリックする。

Create New Visualization

Lineを選択

温湿度はグラフ表示をしたいので”Line”を選択する。

lineの選択

インデックスパターンを選択

インデックスパターン(temp-app-*)を選択する。

インデックスパターンを選択する

Y軸(縦軸)

最初にY軸(縦軸)に表示する項目を設定する。

Y軸に温度と湿度の値、X軸に日付時刻のグラフを作成したい。

“Y-axis count”をクリックする。

Y軸設定

温度の表示設定

温度と湿度を同一グラフに表示する。

まずは温度の表示設定を行う。

  • aggregation:Top Hit(先頭)
  • Field:temperature
  • Aggregate with:Max
  • Size:1
  • Sort on:tempurature
  • Order:Descending(降順)
  • Custom label:温度

を設定する。

温度(temperature)を降順でソートした際の先頭の最大値(1件目)を取得している。

温度の表示設定

Y軸を追加

湿度を追加表示したいのでAddをクリックして”Y-axis”をクリックする。

Y軸を追加する

湿度の表示設定

湿度の表示設定を行う。

  • aggregation:Top Hit(先頭)
  • Field:humidity
  • Aggregate with:Max
  • Size:1
  • Sort on:humility
  • Order:Descending(降順)
  • Custom label:温度

を設定する。

湿度の表示設定

保存

途中で保存したい時は左上のメニューで”Save”をクリックしてTitleに名前を入れて「Confirm Save」ボタンをクリックする。

途中保存

X軸の追加

続いてX軸を追加する。

BucketsのAddから”X-axis”をクリックする。

X軸の追加

X軸の設定

X軸には日付時刻を表示する。

  • Aggregation:Date Histogram
  • Field:tempdatetime
  • Minimum interval:Auto
  • Custom label:日付時刻

を設定する。

尚、設定途中でも項目右上の▶をクリックすると右側にプレビューが表示されるので都度設定状態を確かめることが出来る。

X軸の設定

Metrics & Axes

“Metrics & Axes”タブに移って、Metrics欄は特に変更なし。

Y-axesのTitleを”温湿度”に変更するとグラフY軸の説明欄が変更される。(画面ショットは間違い)

また凡例の色をクリックすれば温度、湿度のグラフの色を変更できる。

Metrics & Axesタブ

X-AxisのLabelsのRotateを”angle”に設定すると日付時刻が斜めに傾いて表示される。

量が多い時はこちらの方が見やすい。

X軸の表示設定

Panel Settingsタブ

Panel SettingsタブのGridでShow x-axis linesを”ON”、Y-axis linesで”LeftAxis-1″を選択するとグラフ上にグリッドが表示される。

グリッドの表示

Dashboard

新しいDashboardの作成

Visualizationsを作成したらダッシュボードに貼り付ける。

メニューからDashboardアイコンをクリックして「Create new Dashboard」ボタンをクリックする。

Create Dashboard

Visualizationの追加

新しいダッシュボードが作成されたので”Add”でvisualizationを追加する。

Visualizationの追加

Add panelsで先程作成したVisualizationを名前で検索する。

名前で検索する

先程作成したがグラフ(visualization)がダッシュボードに配置されるので適当にサイズを調整する。

グラフがダッシュボード配置される

Panel Title

パネルのタイトルが邪魔なので歯車アイコン、Cutomize panelをクリックする。

パネルの設定

“Show panel title”をオフにして「Save」ボタンをクリックする。

パネルタイトルを非表示

ダッシュボードの保存

左上のSaveを押してTitleに名前をセットして「Confirm Save」ボタンをクリックしてダッシュボードを必要なタイミングで保存する。

ダッシュボードの保存

表示範囲の変更

右側のカレンダーアイコンで表示範囲を変更することができる。

Today、This week等を選択すると温湿度の表示範囲が変わる。

表示範囲の変更

Indexの削除

蓄積されたインデクスはkibanaのコンソールから削除することができる。

メニューから”Console”を選択する。

コンソール

以下のコマンドを入力して▶で実行する。

DELETE /temp-app-*

インデックスの削除

続く

今回の記事はこれで終了とする。

次回はラズパイのCLI化やプログラムの自動起動についての記事とする。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

2件のフィードバック

  1. 匿名 より:

    私もこれやってみたいので、続きをとても楽しみにしています。

souichirou へ返信する コメントをキャンセル

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。