1
1

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 1 year has passed since last update.

M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.5(可視化編)

Posted at

これまで4回にわたってプランター菜園のモニタリングを綴ってきました。
M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.1(電源編)

M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.2(土壌センサー取り付け編)

M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.3(AWS IoT 編)

M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.4(データ蓄積編)

最後にAmazon Managed Grafana を利用した可視化をしてみましたので、書いていきたいと思います。

Amazon Managed Grafana (AMG) とは

各種ログやメトリクスなどのモニタリングを行うための人気のOSSであるGrafanaを、サーバーのメンテナンスなどに煩わされることなく手軽に使うためのマネージドサービスとしてAWSが提供しているサービスです。

構築には

  1. SAMLまたはAWS IAM Identity Center (旧AWS SSO) の準備
  2. ワークスペースの作成
  3. データソースの設定
  4. グラフなどの作成

ワークスペースの作成

今回の本筋ではないため割愛しますが、認証にはIAM Identity Center を利用しました。

AWS のマネジメントコンソールでワークスペースを作成をクリックします。

grafana01.jpg

ワークスペース名を適当に入力します。Grafana バージョンはこのブログの執筆時点では8.49.4が選べましたが、特に8.4を選ぶ理由もないため9.4で進めました。

grafana02.jpg

設定を構成の画面で認証アクセスにて AWS IAM ID センター(AWS SSO の後継) を選択します。この時、有効となることを確認します。ただし、AWS Organizations配下のアカウントで子アカウントを利用している場合は権限不足でそのままでは有効化することが出来ません。その為、その下のアクセス許可タイプカスタマーマネージドを選択した上で他のAWSアカウントのデータを取り込むための権限を個別に設定する必要があります。これに関してはまた別途纏めようと思います。今回はサービスマネージドで構成していきます。それ以外はデフォルトのまま次へをクリックします。

grafana03.jpg

サービスマネージド型のアクセス許可設定データソースにてAmazon TimeStreamを選択し、次へをクリックします。

grafana04.jpg

確認画面でワークスペースを作成をクリックします。

grafana05.jpg

完了するまで3分ほど待ちます。

grafana06.jpg

完了したらAmazon Managed Grafanaを利用できるユーザーまたはグループを設定するため、新しいユーザーまたはグループの割り当てをクリックします。その後、ユーザーまたはグループからAWS IAM Identity Centerで設定されているユーザーから選択してユーザーとグループを割り当てをクリックします。

grafana07.jpg

追加したユーザーを選択し、アクションのプルダウンから "管理者を作成する"、"エディタを作成する"、"閲覧者を作成する"のいずれかを選択して権限を変更します。

grafana08.jpg

権限毎の動作の違いは下記に記載があるので参照してください。

以上で、Amazon Managed Grafana のワークスペースの作成は完了です。

ログイン

ワークスペースの画面にて、Grafana ワークスペースURLに記載されているURLにアクセスします。

grafana09.jpg

Sign in with AWS IAM Identity Center をクリックします

grafana10.jpg

IAM Identity Center で作成したユーザー名とパスワードでログインします。

データソースの設定

左上の「三」の形のアイコンをクリックし、Apps - AWS Data Sources をクリックします

grafana11.jpg

AWS services タブ内の Timestream をクリックします。

grafana12.jpg

Default region のプルダウンから作成した Timestream のデータベースが存在するリージョンを選択し、Add data source をクリックします。ここでは US East (N. Virginia) を選択しています。!

grafana13.jpg

"Add data source" クリック後に表示されるデータソース横の Go to settings をクリックします。

grafana14.jpg

Settings タブの各値を下記のように設定していきます。設定が終わったら、 Save & test をクリックします。

Connection Details

設定項目 設定値
Authentication Provider Workspace IAM Role
Assume Role ARN 設定無し
External ID 設定無し
Endpoint 設定無し
Default Region us-east-1

Timestream Details

設定項目 設定値
Database "demo-db"
Table "demo-table"
Measure 設定無し

grafana15.jpg

Connection success と表示されれば成功です。失敗する場合は、上表の設定やIAM Role の権限に不足が無いか確認してみてください。

grafana16.jpg

ダッシュボードの設定

ダッシュボードの画面に移り、New のプルダウンから New Dashboard をクリックします。

grafana17.jpg

時系列折れ線グラフの表示

Add a new panel をクリックします。
画面右上で Time series を選択します。

dashboard01.jpg

Query の項目で下記のように設定していきます

設定項目 設定値 内容
Data source m5t_demo_data_source 上記で作成した取り込み対象の Grafana のデータソース
Database "demo-db" Timestream のデータベース
Table "demo-table" センサーデータが格納されている Timestream のテーブル
Measure 任意 本来は $__measure というマクロ文字列でMeasureで指定したカラムが読み取られるようです

また、クエリの文字列は下記のように設定します。

SELECT time, measure_value::double as "地中温度" FROM $__database.$__table WHERE measure_name = 'temperature' AND deviceid = 'm5t01'

dashboard02.jpg

+Query をクリックすることで、1つのグラフ内に複数種類のデータを追加することが出来ます。上で温度を設定したので、ここでは水分量を追加で描画することにします。

dashboard03.jpg

クエリ文字列は下記のように設定します

SELECT time, measure_value::bigint as "水分量" FROM $__database.$__table WHERE measure_name = 'moisture' AND deviceid = 'm5t01'

そうすることで、下図のようにグラフが表示されます

dashboard04.jpg

パネル設定

温度と水分量は次元が異なるため、例えば下のように温度と水分量を別々の軸で表現してあげるとよさそうです。また、見やすくするため色を変えたりなどしていこうと思います。

dashboard05.jpg

パネル設定の最下部の Add field override をクリックします

dashboard06.jpg

プルダウンから Fields with name を選択します。

dashboard07.jpg

地中温度と水分量を分けたいので、ここでは水分量を別軸で表すことにします。Fields with name のプルダウンから水分量 を選択します。

dashboard08.jpg

Add override property をクリックし、Axis > Placement を選択します

dashboard09.jpg

Right を選択します。

dashboard10.jpg

すると、水分量の軸が右側に移り、温度と水分量の変動がそれぞれ明確にわかるようになりました。

dashboard11.jpg

あとは、同様にグラフを見やすくするため、グラフの色を変えたり、単位をつけたりしていきます。

水分量

設定項目 設定値
Axis > Placement Right
Standard options > Unit Number
Standard options > Color scheme Single color

最後に設定が終わったら右上の Apply をクリックしてパネルを保存します。

これで1つ目のパネルが出来上がりました。

dashboard12.jpg

同様にもう一つのセンサーのデータについても設定していきますが、設定が面倒なのでパネルごとコピーします。パネル右上のアイコンをクリックして More... > Duplicate をクリックします。

dashboard13.jpg

パネル右上をクリックして Edit で編集します。
クエリ文字列の deviceid をもう一つのセンサーのデバイスIDに書き換えます。パネル名も忘れずに変えましょう。

dashboard14.jpg

最後にダッシュボードを保存します。ダッシュボード右上のフロッピーディスクのアイコンをクリックして保存します。

dashboard15.jpg

ダッシュボード名の入力画面が出るので、適当な名前を付けて Save をクリックします。

dashboard16.jpg

その他

観測期間を変更したり、グラフを変えてみたり等データのいろいろな表現方法を試しながら、好みの表現に改良していくと良いかと思います。私は24時間表示でこの折れ線グラフがしっくりきました。

dashboard17.jpg

最後に

ここまで電源設置から最後の可視化まで長い道のりでようやくプランター菜園のモニタリングが出来るようになりました。無事作物が育つかどうかはこれからですが、まずはデータを貯めてみて、何かわかることが無いか調べてみようと思います。

IMG_4599.jpg

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?