LoginSignup
2

More than 1 year has passed since last update.

Azure IoT Centralの時系列データをAzure Time Series Insightsでデータ分析

Posted at

image.png

既存の時系列データをAzure Time Series Insightsでデータ分析してみて、「これはすごいぞAzure Time Series Insights。かなりのポテンシャルを感じる。」となっているmatsujirushiです。

Azure Time Series Insightsを推していきたいところですが、、、これからAzure IoTやってみよう!という方には、デバイス -> Azure IoT Hub/Azure Event Hub -> Azure Time Series Insightsは少しハードルが高いのでは?と思うところもあります。パッと動かしてセンサーの測定値を表示したり、遠隔でデバイスを操作しようとするなら、やっぱりAzure IoT Centralですね。神サービス。

そこで、Azure IoT Centralのデータエクスポート機能を使って、Azure IoT CentralとAzure Time Series Insightsを併用できないか試してみました。

Azure IoT CentralとAzure Time Series Insightsを繋ぐ

Azure Time Series Insightsの入力はAzure IoT HubもしくはAzure Event Hubだけです。Azure IoT Centralは選べません。Azure IoT Centralの入口はAzure IoT Hubじゃん!それを選べば、、、と一瞬思いますが、残念ながらAzure IoT Centralが使っているAzure IoT Hubの情報は公開されていません。

ではどうするのか?
ここで、データエクスポート機能の出番です。

データエクスポートとは、Azure IoT CentralのデータをAzure IoT Cetnral外部へ出力する機能です。左メニューの「Data export」でゴニョゴニョと設定することで、Azure Blob StorageやAzure Event Hubs、Webhookなどへデータを出力することができます。公式ドキュメントはこちら。この機能、以前はContinous Data Exportsという名称で、操作した瞬間にデータをドカッと出力するものではなく、設定しておくと継続的にデータを出力してくれるものなんです。

というわけで、下図のように繋いでみました。

image.png

結果

Azure IoT CentralとAzure Time Series Insightsを併用できました!!
下図の左がAzure IoT Central、右がAzure Time Series Insightsです。赤枠で囲った部分が同一データです。
(Azure IoT Centralのほうがデータが多いのは、、、繋ぐのに手間取ったからです:sweat_smile:

image.png

Azure IoT CentralのAnalyticsと比べてみると、時間範囲指定やグラフ表示の雰囲気は似ていますが、Azure Time Series Insightsは、より多くの機能がありそうです。

image.png

まとめ

  • Azure IoT CentralとAzure Time Series Insightsを併用できた。
  • どちらか一方よりも、併用したほうが強力そう。(ダッシュボードはAzure IoT Centralが得意、時系列データ分析はAzure Time Series Insightsが得意)
  • デバイスの設定や操作は、Azure IoT Centralで。
  • データをAzure IoT CentralとAzure Time Series Insightsの二重持ちなのでもったいない感じ。(Azure IoT CentralでTelemetryの保存をストップできると気持ちいい。)

作り方

ちょっと雑に書きました。細かい部分を知りたいならば、こちらもあわせて読んでください。

Event Hub

Event Hubs NamespaceとEvent Hubを作ります。→参考

今回は既存のEvent Hubs Namespace「mjtsievent」に「iotc」というEvent Hubを作ることにしました。

  • Name ... 「iotc」(適切に)

image.png

メッセージ投入のために外部(IoT Central)からEvent Hubへ接続があるので、念のためにそれ用のポリシーを作ります。

  • Policy name ... 「iotc」(適切に)
  • Send ... チェック

image.png

Data Export

IoT Centralに、Event Hubへメッセージ投入するようData Exportを作ります。
実際は、投入先を指定したDestinationを作り、Data Exportを作る操作になります。

Destinationの作成は、IoT CentralのData export画面にある、Destinationsタブをクリックして、New destinationをクリックした先の画面を使います。

image.png

  • Name ... 「tsi」(適切に)
  • Destination type ... 「Azure Event Hubs」
  • Authorization ... 「Connection string」
  • Connection string ... 先に作成したポリシーの接続文字列

image.png

次はData Exportです。
IoT CentralのData export画面にある、Exportsタブをクリックして、New exportをクリックした先の画面を使います。

image.png

  • Name ... 「iotc」(適切に)
  • Data
    • Type of data to export ... 「Telemetry」
  • Destinations
    • Destination ... 「tsi」(作成したDestination)

image.png

確認

IoT CentralからEvent Hubに送られてくるメッセージがどのようなものかを、Azure Event Hub Explorerを使って確認します。

CO2モニターのプログラムが書き出しているJSONは、

プログラムが書いているJSON
{
  "co2": 588,
  "humi": 49,
  "temp": 29.33021,
  "wbgt": 25.62902
}

ですが、Event Hubに送られてきているJSONは、

EventHubのメッセージ(JSON)
{
  "telemetry": {
    "co2": 588,
    "humi": 49,
    "temp": 29.33021,
    "wbgt": 25.62902
  },
  "schema": "default@v1",
  "enqueuedTime": "2021-10-05T11:49:55.331Z",
  "messageProperties": {},
  "enrichments": {},
  "deviceId": "WioTerminal",
  "messageSource": "telemetry",
  "templateId": "urn:modelDefinition:x9ouhewzg2:rc5yyo8l0",
  "applicationId": "aa0d558e-41c5-441f-a3f4-0002669722ac"
}

でした。

ここ重要です!!

IoT CentralのRaw dataで表示されているJSONと、Event Hubに送られてきているJSONには違いがあります。

image.png

そして、

  • プログラムが書いたJSONオブジェクトはtelemetryプロパティに入ります(入れ子)
  • 日時はenqueuedTimeプロパティ
  • IoT CentralにあるDevice IDはdeviceIdプロパティ

です。

重要なので、もう一度!!!!!

  • データ --> telemetry
  • 日時 --> enqueuedTime
  • Device ID --> deviceId

Time Series Insights (+ Storage Account)

送られてくるメッセージが分かったところで、落ち着いてTime Series Insights EnvironmentとStorage Account、Event Sourceを作成します。

  • Instance details
    • Environment name ... 「mjtsi2」(適切に)
    • Location ... 「Southeast Asia」(作成したResource GroupのRegion)
  • Time series ID
    • Property name ... 「deviceId」(重要!!)
  • Cold store
    • Storage account name ... 「mjtsistorage」(適切に)

image.pngimage.png

  • Create an event source? ... 「Yes」
  • Source type ... 「Event Hub」
  • Name ... 「iotc」(適切に)
  • Event Hub namespace ... 「mjtsievent」(作成したEvent Hub名前空間)
  • Event Hub name ... 「iotc」(作成したEvent Hub)
  • Event Hub access policy value ... 「RootManageSharedAccessKey」
  • Event Hub consumer group ... 「$Default」
  • Timestamp
    • Property name ... 「enqueuedTime」(重要!!)

image.png

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
2