次の方法で共有


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

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

[前提条件]

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

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

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

環境変数を設定する

シェルで次の環境変数が設定されていることを確認します。

ヒント

リソース グループで作成したユーザー割り当てマネージド ID を表示するには、シェルで次のコマンドを実行します。 az identity list -g $RESOURCE_GROUP -o table

# 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>

# The name of the user-assigned managed identity that you created for cloud connections
USER_ASSIGNED_MI_NAME=<cloud-connection-uami>

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 true

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 identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query principalId --output tsv)

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

イベント ハブにメッセージを送信するデータ フローを作成する

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

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

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

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

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

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

  3. 認証方法としてユーザー割り当てマネージド ID を選択します。 クラウド接続に使用しているユーザー割り当てマネージド ID のクライアント ID とテナント ID の値を追加します。 次の CLI コマンドを使用して、リソース グループ内のユーザー割り当てマネージド ID のクライアント ID とテナント ID を一覧表示します。 az identity list -g $RESOURCE_GROUP -o table

  4. [適用] を選択します。

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

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

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

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

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

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

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

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

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

  11. 次の名前変更変換を追加します。

    データポイント 新しいデータポイント名
    温度。価値 サーモスタット温度F(華氏)
  12. メッセージ メタデータから資産 ID をコピーするには、次の名前変更変換を追加します:

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

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

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

    を選択してを適用します。

  13. データ フロー エディターは、次のスクリーンショットのように表示されます。

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

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

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

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

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

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

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

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

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

ヒント

メッセージを表示するには、Event Hubs 名前空間の Azure Event Hubs Data Receiver ロールに自分を割り当てる必要がある場合があります。

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

このチュートリアルでは、データ フローを使用して、Azure Event Hubs 名前空間内のイベント ハブに MQTT トピックを接続しました。 次のチュートリアルでは、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 を削除します。

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

次のステップ

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