次の方法で共有


チュートリアル: データフローを使用して資産テレメトリをクラウドに送信する

このチュートリアルでは、データフローを使用して、MQTT ブローカーから Azure Event Hubs サービスのイベント ハブにメッセージを転送します。 イベント ハブは、ストレージと分析のためにデータを他のクラウド サービスに配信できます。 次のチュートリアルでは、リアルタイム ダッシュボードを使用してデータを視覚化します。

前提条件

このチュートリアルを始める前に、「チュートリアル: OPC UA 資産を Azure IoT Operations クラスターに追加する」を完了する必要があります。

どのような問題が解決されますか?

リアルタイム ダッシュボードなどのツールを使用して OPC UA データを分析するには、データを Azure Event Hubs などのクラウド サービスに送信する必要があります。 データフローでは MQTT トピックをサブスクライブし、Azure Event Hubs 名前空間内のイベント ハブにメッセージを転送できます。 次のチュートリアルでは、リアルタイム ダッシュボードを使用して、データの視覚化と分析を行う方法について説明します。

環境変数を設定する

Codespaces 環境を使用している場合は、必要な環境変数は既に設定されているため、この手順をスキップできます。 それ以外の場合、シェルで次の環境変数を設定します。

# The name of the resource group where your Kubernetes cluster is deployed
RESOURCE_GROUP=<resource-group-name>

# The name of your Kubernetes cluster
CLUSTER_NAME=<kubernetes-cluster-name>

Event Hubs 名前空間を作成します

Event Hubs 名前空間とイベント ハブを作成するには、シェルで次の Azure CLI コマンドを実行します。 次のコマンドは、Kubernetes クラスターと同じリソース グループに Event Hubs 名前空間を作成します。

az eventhubs namespace create --name ${CLUSTER_NAME:0:24} --resource-group $RESOURCE_GROUP --disable-local-auth false

az eventhubs eventhub create --name destinationeh --resource-group $RESOURCE_GROUP --namespace-name ${CLUSTER_NAME:0:24} --retention-time 1 --partition-count 1 --cleanup-policy Delete

クラスター内の Azure IoT Operations 拡張機能に Event Hubs 名前空間へのアクセス権を付与するには、次の Azure CLI コマンドを実行します。

EVENTHUBRESOURCE=$(az eventhubs namespace show --resource-group $RESOURCE_GROUP --namespace-name ${CLUSTER_NAME:0:24} --query id -o tsv)

PRINCIPAL=$(az k8s-extension list --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --cluster-type connectedClusters -o tsv --query "[?extensionType=='microsoft.iotoperations'].identity.principalId")

az role assignment create --role "Azure Event Hubs Data Sender" --assignee $PRINCIPAL --scope $EVENTHUBRESOURCE

テレメトリをイベント ハブに送信するデータフローを作成する

操作エクスペリエンス UI を使用して、クラスター内に次のデータフローを作成して構成します。

  • 受信メッセージの Tag 10 フィールドの名前を Humidity に変更します。
  • 受信メッセージの temperature フィールドの名前を Temperature に変更します。
  • AssetId という名前のフィールドを追加します。このフィールドには、資産の名前が含まれます。
  • 変換されたメッセージを MQTT トピックから、作成したイベント ハブに転送します。

データフローを作成するには、次の手順を行います。

  1. 操作エクスペリエンス UI を参照して、インスタンスを見つけます。 次に、[データ フロー エンドポイント] を選択し、[Azure Event Hubs] タイルで [+ 新規] を選択します。

    [データ フロー エンドポイント] ページのスクリーンショット。

  2. [新しいデータフロー エンドポイントの作成: Azure Event Hubs] で、名前として 「event-hubs-target」と入力し、作成した Event Hubs 名前空間のアドレスで [ホスト] フィールドを更新します。 [適用] を選択します。

    [新しいデータフロー エンドポイントの作成: Azure Event Hubs] ページのスクリーンショット。

    新しいデータフロー エンドポイントが作成され、[データフロー エンドポイント] ページの一覧に表示されます。

  3. [データフロー][+ データフローの作成] の順に選択します。 [<新しいデータフロー名>] ページが表示されます。

    [データフロー] ページのスクリーンショット。

  4. データ フロー エディターで、[ソースの選択] を選択します。 次に、前に作成したサーモスタット資産を選び、[適用] を選択します。

  5. データフロー エディターで、[データフロー エンドポイントの選択] を選択します。 次に、前に作成した [event-hubs-target] エンドポイントを選択し、[適用] を選択します。

  6. 次のページで、トピックとして「destinationeh」を入力します。 このトピックは、Event Hubs 名前空間に作成したハブを参照します。 適用を選択します。 以上で、データフローに、ソースとしてサーモスタット資産が含まれ、宛先として Event Hubs 内のハブが含まれるようになりました。

  7. 変換を追加するには、[変換の追加 (省略可能)] を選択します。

  8. 受信メッセージの Tag 10 および temperature フィールドの名前を変更するには、[名前の変更] タイルで [+ 追加] を選択します。

  9. 次の 2 つの名前変更変換を追加します。

    データポイント 新しいデータポイント名
    Tag 10.Value ThermostatHumidity
    temperature.Value ThermostatTemperature
  10. メッセージ メタデータから資産 ID をコピーするには、次の名前変更変換を追加します:

    データポイント 新しいデータポイント名
    $metadata.user_property.externalAssetId AssetId

    名前変更変換は、次のスクリーンショットのようになります。

    名前変更変換のスクリーンショット。

    適用を選択します。

  11. データフロー エディターは、次のスクリーンショットのようになります。

    完了したデータ フローのスクリーンショット。

  12. データフローの実行を開始するには、データフローの名前として「tutorial-dataflow」を入力し、[保存] を選択します。 数分後、[プロビジョニングの状態][成功] に代わります。 これで、データフローがクラスターで実行されるようになりました。

データフローは MQTT トピックをサブスクライブして、サーモスタット資産からメッセージを受信します。 メッセージ内の一部のフィールドの名前が変更され、変換されたメッセージは、作成したイベント ハブに転送されます。

データが流れていることを確認する

データがクラウドに流れていることを確認するには、Azure portal で Event Hubs インスタンスを表示できます。 データフローが開始され、メッセージがイベント ハブに送信されるまで数分待つことが必要な場合があります。

メッセージがインスタンスに流れている場合、インスタンスの [概要] ページで受信メッセージの数を確認できます。

受信メッセージ数が表示された Event Hubs インスタンスの [概要] ページを示すスクリーンショット。

メッセージが流れている場合、[データ エクスプローラー] を使用してメッセージを表示できます。

Event Hubs インスタンスの [データ エクスプローラー] ページのスクリーンショット。

ヒント

メッセージを表示するには、Event Hubs 名前空間の Azure Event Hubs データ受信者ロールを自分に割り当てる必要があります。

問題をどのように解決したか。

このチュートリアルでは、データフローを使用して、MQTT トピックを Azure Event Hubs 名前空間内のイベント ハブに接続しました。 次のチュートリアルでは、Microsoft Fabric リアルタイム インテリジェンスを使用してデータを視覚化します。

リソースをクリーンアップする

次のチュートリアルに進む場合は、すべてのリソースを保持してください。

Azure IoT Operations デプロイは削除するが、クラスターは保持する場合は、az iot ops delete コマンドを使用します。

az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP

このクイックスタート用に作成したすべてのリソースを削除する場合は、Azure IoT Operations をデプロイした Kubernetes クラスターを削除した後、そのクラスターを含んでいた Azure リソース グループを削除します。

これらのクイックスタートで Codespaces を使った場合は、GitHub から Codespace を削除します。

Note

このリソース グループには、このチュートリアルで作成した Event Hubs 名前空間が含まれています。

次のステップ

チュートリアル: 資産テレメトリから分析情報を取得する