Azure Logic Apps を使用して、IoT Hub からの受信デバイス テレメトリを監視し、アラートがトリガーされたときに通知を送信します。
Azure Logic Apps は 、オンプレミスおよびクラウド サービス、複数の企業、さまざまなプロトコル間でワークフローを調整するのに役立ちます。 ロジック アプリはトリガーから始まり、その後に、条件や反復子などの組み込みコントロールを使用してシーケンス可能な 1 つ以上のアクションが続きます。 この柔軟性により、Logic Apps は IoT 監視シナリオに最適な IoT ソリューションになります。 たとえば、IoT Hub エンドポイントにデバイスからデータが到着すると、ロジック アプリ ワークフローを開始して Azure Storage BLOB 内のデータをウェアハウスしたり、データの異常を警告する電子メール アラートを送信したり、デバイスで障害が報告された場合に技術者の訪問をスケジュールしたりできます。
このチュートリアルでは、次のタスクを実行します。
Service Bus キューを作成します。 IoT ハブに、メッセージに異常な温度の読み取り値が含まれている場合に Service Bus キューにメッセージを送信するルートを作成します。 キューに到着したメッセージングを監視し、電子メール アラートを送信するロジック アプリを作成します。
デバイスで実行されているクライアント コードは、IoT ハブに送信するすべてのテレメトリ メッセージに対して、アプリケーション プロパティ ( temperatureAlert) を設定します。 クライアント コードは、特定のしきい値を超える温度を検出すると、このプロパティを true に設定します。それ以外の場合は、プロパティを false に設定します。
IoT ハブに到着するメッセージは次のようになります。本文に含まれるテレメトリ データと、アプリケーション のプロパティに含まれる temperatureAlert プロパティ (システム プロパティは表示されません)。
{
"body": {
"messageId": 18,
"deviceId": "Raspberry Pi Web Client",
"temperature": 27.796111770668457,
"humidity": 66.77637926438427
},
"applicationProperties": {
"temperatureAlert": "false"
}
}
Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。
[前提条件]
このチュートリアルを開始する前に、次の前提条件を準備します。
有効な Azure サブスクリプション。
サブスクリプション内の IoT ハブ。
Azure IoT ハブに温度データを送信するクライアント アプリ。 このチュートリアルでは、
temperatureAlertというメッセージ プロパティに基づいて、デバイスからクラウドへのメッセージをフィルター処理します。 このプロパティを使用してメッセージを生成するサンプルには、次のようなものがあります。- .NET SDK: SimulatedDevice
- Java SDK: send-event
- Node.js SDK: simple_sample_device
- C SDK: iothub_II_client_shared_sample
- コードレス: Raspberry Pi オンライン シミュレーター
Service Bus 名前空間とキューを作成する
Service Bus の名前空間とキューを作成します。 この記事の後半では、温度アラートを含むメッセージを Service Bus キューに送信するルーティング規則を IoT ハブに作成します。 ロジック アプリは、受信メッセージのキューを監視し、アラートごとに通知を送信します。
Service Bus 名前空間を作成する
Azure portal で、検索バーを使用して Service Bus を検索して選択します。
[ 作成] を選択して Service Bus 名前空間を作成します。
[ 名前空間の作成 ] ウィンドウで、次の情報を指定します。
パラメーター 価値 Subscription IoT ハブを含む同じサブスクリプションを選択します。 リソース グループ IoT ハブを含む同じリソース グループを選択します。 名前空間名 Service Bus 名前空間の名前を指定します。 名前空間は、Azure 全体で一意である必要があります。 場所 IoT ハブが使用するのと同じ場所を選択します。 価格レベル ドロップダウン リストから [ 基本 ] を選択します。 このチュートリアルでは、Basic レベルで十分です。 [Review + create](レビュー + 作成) を選択します。
を選択してを作成します。
デプロイが完了するまで待ってから、[リソースに移動] を選択してください。
Service Bus キューを名前空間に追加する
Service Bus 名前空間の [概要 ] ページで、[キュー] を選択 します。
[ 名前 ] フィールドに、キューの名前を指定します。 他のフィールドの既定値をそのまま使用し、[ 作成] を選択します。
Service Bus 名前空間で、リソース メニューの [設定] セクションから [共有アクセス ポリシー] を選択します。
RootManageSharedAccessKey ポリシーを選択して、その詳細を開きます。
プライマリ接続文字列の値をコピーし、このチュートリアルの後半でロジック アプリを構成するときに使用するために保存します。
カスタム エンドポイントとルーティング規則を IoT ハブに追加する
Service Bus キューのカスタム エンドポイントを IoT ハブに追加します。 次に、温度アラートを含むメッセージをそのエンドポイントに送信するメッセージ ルーティング規則を作成します。このエンドポイントは、ロジック アプリによって取得されます。 ルーティング規則では、ルーティング クエリ ( temperatureAlert = "true") を使用して、デバイスで実行されているクライアント コードによって設定された temperatureAlert アプリケーション プロパティの値に基づいてメッセージを転送します。 詳細については、「 メッセージのプロパティに基づくメッセージ ルーティング クエリ」を参照してください。
カスタム エンドポイントとルートを追加する
Azure portal で、IoT ハブに移動します。
[ ハブ設定] のリソース メニューで、[ メッセージ ルーティング ] を選択し、[ 追加] を選択します。
[ エンドポイント ] タブで、次の情報を指定して、Service Bus キューのエンドポイントを作成します。
パラメーター 価値 エンドポイントの種類 Service Bus キューを選択します。 エンドポイント名 Service Bus キューにマップされる新しいエンドポイントの名前を指定します。 Service Bus 名前空間 ドロップダウン メニューを使用して、前のセクションで作成した Service Bus 名前空間を選択します。 Service Bus キュー ドロップダウン メニューを使用して、名前空間に作成した Service Bus キューを選択します。
[ 作成 + 次へ] を選択します。
[ ルート ] タブで、次の情報を入力して、Service Bus キュー エンドポイントを指すルートを作成します。
パラメーター 価値 名前 ルートの一意の名前を指定します。 データ ソース 既定の デバイス テレメトリ メッセージ データ ソースをそのまま使用します。 ルーティング クエリ クエリ文字列として「 temperatureAlert = "true"」と入力します。
[ エンリッチメントの作成とスキップ] を選択します。
通知用に Logic Apps を構成する
前のセクションでは、温度アラートを含むメッセージを Service Bus キューにルーティングするように IoT ハブを設定しました。 次に、Service Bus キューを監視し、メッセージがキューに追加されるたびに電子メール通知を送信するようにロジック アプリを設定します。
ロジック アプリを作成します
Azure portal で、 Logic Apps を検索して選択します。
[ 追加] を選択して新しいロジック アプリを作成します。
ロジック アプリの作成の [基本] タブに次の情報を入力します。
パラメーター 価値 リソース グループ IoT ハブを含む同じリソース グループを選択します。 名前 ロジック アプリの名前を指定します。 リージョン 近くの [場所] を選択します。 プランの種類 コンシューマー を選択することで、このチュートリアルには十分です。
[Review + create](レビュー + 作成) を選択します。
を選択してを作成します。
デプロイが完了したら、[ リソースに移動 ] を選択してロジック アプリを開きます。
ロジック アプリのトリガーを構成する
Azure portal のロジック アプリ リソース ページで、リソース メニューの [開発ツール] セクションからロジック アプリ デザイナーを開きます。
デザイナーでテンプレートまでスクロールし、ブランク ロジック アプリを選択します。
[ すべて ] タブを選択してすべてのコネクタとトリガーを表示し、[ Service Bus] を選択します。
[ トリガー] で、 1 つ以上のメッセージがキューに到着したとき (オートコンプリート) を選択します。
Service Bus 接続を作成します。
接続名を指定し、Service Bus 名前空間からコピーした接続文字列を貼り付けます。
を選択してを作成します。
次の画面で、ドロップダウン メニューを使用して、Service Bus 名前空間で作成したキューを選択します。 次に、[
175] に「」と入力します。
ロジック アプリ デザイナー メニューの [保存] を選択して、変更を保存します。
ロジック アプリアクションを構成する
ロジック アプリ デザイナーで [新しいステップ ] を選択します。
SMTP サービス接続を作成します。
SMTP を検索して選択 します。
この手順のアクションとして [ 電子メールの送信 (V3)] を選択します。
接続名を指定し、残りのフィールドに、通知メッセージの送信に使用する電子メール アカウントの SMTP 情報を入力します。
メール プロバイダーに応じて、SMTP 情報を検索するには、次のリンクを使用します。
注
接続を確立するには、TLS/SSL を無効にする必要がある場合があります。 この場合、接続が確立された後に TLS を再度有効にする場合は、このセクションの最後にあるオプションの手順を参照してください。
を選択してを作成します。
[ 電子メールの送信] アクションを構成します。
[電子メールの送信] ステップの [新しいパラメーターの追加] ドロップダウンから、次のパラメーターを選択します。
- From
- から へ
- 件名
- 本文
画面上の任意の場所をクリックまたはタップして、選択ボックスを閉じます。
前の手順で選択した電子メール パラメーターに関する次の情報を入力します。
パラメーター 価値 From SMTP 接続用に構成した電子メール アドレス。 から へ 通知メールを送信するメール アドレスまたはアドレス群。 件名 High temperature detected。本文 High temperature detected。[ 動的コンテンツの追加 ] ダイアログが開いたら、[ 非表示] を選択して閉じます。 このチュートリアルでは、動的コンテンツを使用しません。
[ 保存] を 選択して SMTP 接続を保存します。
(省略可能)メール プロバイダーとの接続を確立するために TLS を無効にする必要があり、再度有効にする必要がある場合は、次の手順に従います。
[ロジック アプリ] ウィンドウの [開発ツール] で、[API 接続] を選択します。
API 接続の一覧から SMTP 接続を選択します。
[ SMTP API 接続 ] ウィンドウの [ 全般] で、[ API 接続の編集] を選択します。
[ API 接続の編集 ] ウィンドウで、[ SSL を有効にする] を選択し、メール アカウントのパスワードを再入力して、[ 保存] を選択します。
これで、ロジック アプリで Service Bus キューからの温度アラートを処理し、電子メール アカウントに通知を送信する準備ができました。
ロジック アプリをテストする
IoT デバイスから温度メッセージの送信を開始して、監視と通知パイプラインをテストします。
デバイスでクライアント アプリケーションを起動します。 クライアント コードはテレメトリ メッセージをランダムに出力し、温度が 30 C を超えたときに
temperatureAlertプロパティをtrueに設定します。ロジック アプリから送信された電子メール通知の受信を開始する必要があります。
注
メール サービス プロバイダーは、送信者 ID を確認して、電子メールを送信するユーザーであることを確認する必要がある場合があります。
リソースをクリーンアップする
このチュートリアルで作成したリソースが不要になった場合は、ポータルでそのリソースとリソース グループを削除します。 これを行うには、IoT ハブを含むリソース グループを選択し、[削除] を選択 します。
または、CLI を使用します。
# Delete your resource group and its contents
az group delete --name <RESOURCE_GROUP_NAME>
次のステップ
このチュートリアルでは、温度の監視と通知のために IoT ハブとメールボックスを接続するロジック アプリを作成しました。
引き続き Azure IoT Hub の使用を開始し、すべての拡張 IoT シナリオを調べるには、次を参照してください。