GoogleSpreadSheet
GoogleCloudPlatform
IoT
IoTCore
Gravio

センサーデータのGoogle IoT Coreを利用した可視化方法

2018年9月にGoogle Cloud NEXTへ出展した際のデモ内容となります。

センサーデータのGoogle IoT Coreを利用した可視化方法を検討したので、書き残しておきます!

可視化までの流れは以下の案を検討しました。

案1 Cloud IoT Core→Cloud Pub/Sub→Cloud Dataflow→BigQuery→GAS→Spreadsheetで表示

案2 Cloud IoT Core→Cloud Pub/Sub→Cloud Dataflow→Logstash→Elasticsearch→Kibanaで表示

案3 Cloud IoT Core→Cloud Pub/Sub→Cloud Dataflow→BigQuery→Tableauで表示

3つの案から、Googleソリューションで完結させることを想定して、案1で作ってみました。

image.png

※IoT CoreヘはGravioからMQTTでデータを送りました。

GravioからGoogle IoT CoreにMQTTで接続(記事作成中)


Google Cloud Platformの各種サービスについて(備忘録)

作り込みに入る前に使ってみて気づいた事をまとめておきます。


Cloud IoT Core

IoTデバイスから受信するデータをGCPに流し込むことができるサービス。

MQTTにも対応している。

https://cloud.google.com/iot-core/


Cloud Pub/Sub

IoT Coreから接続するMQサービス。

複数のトピックを経由させることもできて、経由させることでフィルタリングも可能。

Pub/Subの先はDataFlowに接続する。

https://cloud.google.com/pubsub/


DataFlow

いくつかのサービス間連携がパッケージ化されたサービス

細かく編集するためには、Javaの知識が必要。

今回は、データを流すためだけに使用したので、細かな動作を編集するために必要なフォルダの構造などは把握できませんでした。

https://cloud.google.com/dataflow/


BigQuery

クエリ処理を高速にできるデータウェアハウス。

ただし、細かい設定は時間がかかりそう。

https://cloud.google.com/bigquery/

以上が、使ってみての各サービスの印象です。


Google IoT CoreでCloud Pub/Subに接続

Google IoT Core上の設定をすることで、Cloud Pub/Sub(MQTT Broker)に接続できます。

レジスタの設定で、トピックを指定するだけです。

Cloud Pub/Sub上の新しいトピックを IoT Core側で作成できるのは便利です。

Pubした結果を閲覧するときは、Functionを設定して、ログを見ることで確認できました。


Cloud Pub/SubからDataFlowを経由してBigQueryヘ

複数のサービスをそれぞれ設定するため、結構混乱しながら作業してました。

順序としては、

1.MQTTの出力データを確認

2.BigQueryのテーブル作成

3.DataFlowの設定

です。

DataFlowの設定は、トピックの指定、BigQueryのテーブルの指定、一時フォルダの指定が必要です。

一時フォルダはStorageにフォルダを作って、その配下にtmpフォルダを作ることで対応可能でした。(ここでStorageも設定していますので、更に触れるサービスが増えた)

トピックで流れているデータ形式と、BigQueryのデータ形式が一緒になるようにします。

もし一緒でない場合は、DataFlowが同じレコードを処理し続ける無限ループに入ります。

ここまで設定ができれば、あとはMQTTを受信したタイミングでDataFlowが動作します。

BigQuery上のデータベースにデータが蓄積されていきます。


データの可視化のために、スプレッドシートヘ

データ自体は、BigQueryでも閲覧可能ですが、可視化したいですよね。

また、クエリのコマンドを覚えるのも大変なので、簡単にデータも見えるようにしておきたい。。

そこで、スプレッドシートからBigQueryに定期的にデータを取りに来るようにしました。

方法は、こちらの記事を参考にしました。

【参考】BigQueryとスプレッドシートとGASと。

スプレッドシートにグラフをつけておくことで、常時可視化ができました。


あとがき

GCPをフルに使ってIoTデータの可視化までやってみました。

ただ、どれを使うにも使い方が違うので、時間がかかりました。(作り終えるまで1日程度)

また、初めて触れたサービスが多かったため、全体の費用想定がしにくく、気軽に始めるには少しハードルがあるかな、と思いました。

ただ、癖をすべて把握できれば、早い、安い、わかりやすいサービスなのは間違いないです!

初心者なので間違いなどがあればご指摘ください。


参考

モノのインターネットの概要

GAになったGCPのCloud IoT Coreでデータの受信から可視化まで一通りの流れを作るぞ!

BigQueryとスプレッドシートとGASと。