NatureRemoの温度、湿度、照度をAWSでグラフ化する
いろんな人がいろんなもので既に可視化するのをやっている大人気な題材ですが、僕も試しにやってみました。 とりあえずiPhoneでこんな感じで見える。
実際のコードはこれ。
全体のアーキテクチャ図は https://github.com/oranie/natureremo-create-graph/blob/master/architecture.png
多少自分の仕事の検証も兼ねているため少し冗長な構成になっているが解説すると
- Lambdaがスケジュール実行されNatureRemo APIを叩いて情報を取得
- 取得した情報をDynamoDBに保存
- 保存した情報をGlueで定期的にS3にparquet変換を行ってExport
- Exportされた情報を元にAthenaでクエリによる集計が出来るようにtableを作成
- 集計クエリを元にQuickSightで可視化
となる。QuickSightはiPhoneアプリもあるので、これで自宅の状況がグラフ化されモバイルアプリで自分や家族だけ見ることが出来るようになった。次回のブログではgithubに上がっていない部分の手順やもう少し細かい解説をしたいと思っている。また情報が整備出来たらaws-samplesでももっとわかりやすいハンズオンとして公開をしたいと考えているのでもし実際に試してみたい人は少しお待ち下さい。
他の事例同様サーバレス構成で完結しているので運用管理などはかなり楽が出来る事と、ある程度のコンポーネントが既にあることでここから別のトリガー処理(例えば湿度が一定以下ならLINE通知をするとか)なども比較的書きやすかったりQuickSightで予測をさせるなども出来るため色々個人の事情に応じてカスタマイズなどもしやすいと思う。
もちろん、Lamba -> S3 -> QuickSightというような流れで最小限の処理に書き換える事でよりコンパクトなアーキテクチャに出来るのでその辺も色々試しやすいと思う。