やった事
今回、自宅にあるラズパイから環境データを飛ばし見える化するまでを、Google Cloud Platformのサーバレスサービスを使用して実装してみました。一通り出来たので、料金含めて振り返りたいと思います。
IoT Coreのアイコンは公式から提供がなかったので青い六角形で代用しています。
なお、当投稿は2017年12月時点の情報のものになります。
振り返り
ラズパイからIoT Coreまで
ラスパイにBosch社制BME280を繋ぎ、Pythonを使用してデータを取得しています。同じくPythonを使用してIoT Coreへデータを飛ばしています。
ほぼ公式のQuickStartと同じ手順で実装しました。
IoT Core自体は単なるデバイスの管理ができるサービスなのでデータが飛んできているか否かしか確認することができません。実際に使用するには他のサービスと連携する必要があります。
IoT CoreからPubsubまで
非常に簡単でした。IoT CoreでPubsubのトピックを指定するだけ。具体的にはIoT Coreの端末レジストリに指定するだけでした。そうすることでデバイスから飛んできたデータをPubsubへ飛ばしてくれます。
IoT CoreはPubsubが前提のサービス、Pubsubがハブの役割をして他のサービスへデータを流していきます。
PubsubからはGoogle Cloud Platformのサービスだけでなく、別のサービスへデータを流すことも可能です。
PubsubからDataflow経由でBigQueryまで
Google 提供のテンプレートを使用して実装しました。DataflowのコンソールにてPubsubのトピック名・BigQueryのテーブル名を入力するだけで実装可能です。送信するデータ形式はJSONで以下のように飛ばすと自動的にBigQueryのカラムに格納されます。
{"COLUMN_NAME":"DATA_VALUE"}
BigQueryからData Studioまで
データソースとしてBigqueryのテーブルを選択し、集計カラム、期間の入ったカラムを指定してレポートを作成するだけで実装可能です。一般的なグラフは既に機能として実装されているので簡単に見せる化することができました。BI系の経験がある方は割とすんなり使うことが可能かと思います。
料金
ラズパイからのデータ送信間隔は30秒に1度、約二日半くらい使い続けた
まとめ・考察
非常に簡単に見える化できました。IoT CoreとData Studioはベータ版ですが機能としては十分に感じました。
が、料金は結構高い印象です。特にDataflowが。
Google提供のテンプレートですとストリーミングの取り込みになるので結構なコンピューティングリソースを使ってしまいます。
今回のようにデバイスが少ないしリアルタイムなデータを必要としない場合は無駄にリソースを消費していることになります。
Pubsubにデータが飛んできた場合にDataflowを起動するような仕組みや、定期的に起動する仕組みを用意すれば的確にリソースを使用することができそうです。工夫の余地はあります。