【ラズパイ × AWS IoT Core】 (4)センサー情報をKibanaで視覚化

ラズパイのセンサー情報をKibanaを使って視覚化してみます。Kibanaは、Elasticsearchのデータを可視化するツールで、Elasticsearchに内臓されています。

Kibana

Kibanaを使うために、まずElasticsearch Serviceをセットアップします。

Elasticsearchのセットアップ

  1. Elasticsearch Serviceのドメインの作成 Elasticsearch1

  2. ドメイン名を指定します。その他はデフォルトのままにしました。 Elasticsearch2

  3. テスト用なのでひとまずアクセス権は一番弱くしました。(あとで見直す)  Elasticsearch3

  4. ドメインのステータスが「アクティブ」になるまで待ちます。画面は自動的にリフレッシュされないので、たまに更新ボタンを押して確認します。10分ほどかかりました。  Elasticsearch4

AWS IoTのルールを作成

  1. 作成ボタンをクリックします。 作成ボタン

  2. ルールの名前と、ルールクエリステートメントを指定します。 ルーム名 ルールクエリステートメント: SELECT * FROM 'myTopic' すべてのデータを取り込みたいので、WHERE句は省略し、* ですべてのカラムを取得します。

  3. アクションの一覧からElasticsearchを選択します。 アクション一覧

  4. アクションの設定 アクション設定 IoTのアクションを設定します。ID: ${newuuid()}、索引: timestamp、タイプ: timestamp をそれぞれ指定します。

  5. 新しいロールの作成 ロールの作成

  6. ポリシーがアタッチされます。 ポリシーのアタッチ

  7. これでルールが作成されました。 ルールの作成完了

  8. ラズパイからメッセージを送信します。ラズパイ側は前回作成したpublish.pyをそのまま使用します。

    bash python3 publish.py

Kibanaの設定

  1. KibanaのURLをクリックします。 Kibana URL

  2. index patternを指定します。 index pattern

  3. Timeフィルターフィールドを指定します。これがないと時系列のグラフを扱えないので、これが表示されない場合は、AWS IoTからのメッセージにdate型フィールドを含むようにします。 Timeフィルター

  4. 検索窓で「humid」を指定すると、センサーからの室温と天気サイトの気温が取得できているのがわかります。 検索窓

  5. Visualizeタブに切り替えて、visualizationを作成します。 Vsisualizeタブ

  6. Y軸とX軸を設定します。 Y-X軸 Y-Axis: Aggregation: Average Field: sensor.temp weather.temp

    X-Axis: Aggregation: Date Histogram Field: timestamp Interval: Hourly

  7. 「Save」で保存します。保存したビジュアライズは「dashbord」タブでダッシュボードを開いて、「Add」で追加することができます。 Save

  8. Kibanaのグラフが9時間ずれる場合は、Settingから「Timezon for date formating」を「Etc/UCT」に変更します。 Setting 参考: Kibanaで9時間ずれて表示される現象について - Discuss the Elastic Stack

気になるAWS料金は?

無料枠でどれくらい運用できるかをコスト管理ダッシュボードでみてみると、Elasticsearchがえらく消費していました。1秒間に1回、Pubulishするサイクルを4日ほど運用した結果がこれなので、年中使うのは厳しい感じです。Elasticsearch以外はほとんど消費していないので、視覚化は別の方法にすることで回避できそうです。 AWS料金

おわりに

AWS IoT Coreを使うと手軽にIoT機器を扱うことができました。今回はラズパイ1台で試しましたが、複数のIoT機器やたくさんセンサーを使用した場合に、AWS IoT Coreの真価を発揮しそうです。

AWSの無料枠が尽きたので、ひとまず今回のシリーズはここまでにしたいと思います。これからもIoTをハックしてきたいと思います!

ラズパイ × AWS IoT Core の記事一覧