チュートリアル: Azure Logic Apps を使用して IoT デバイスを監視し、通知を送信する

Azure Logic Apps を使用して、IoT Hub からの受信デバイス テレメトリを監視し、アラートがトリガーされたときに通知を送信します。

End-to-end diagram

Azure Logic Apps は、ワークフローをオンプレミスとクラウド サービス、複数のエンタープライズとさまざまなプロトコルを調整するのに役立ちます。 ロジック アプリはトリガーで始まり、その後に、条件や反復子などの組み込みのコントロールを使用して順序付けることができる 1 つ以上のアクションが実行されます。 この柔軟性により、Logic Apps は IoT の監視シナリオのための理想的な IoT ソリューションになります。 たとえば、デバイスからのデータが IoT Hub エンドポイントに到着したら、そのデータを Azure Storage BLOB に格納するためにロジック アプリ ワークフローを開始したり、データの異常を警告するためにメール アラートを送信したり、デバイスから障害が報告された場合は技術者の訪問をスケジュールしたりすることができます。

このチュートリアルでは、以下のタスクを実行します。

Service Bus キューを作成します。 メッセージに異常な温度の読み取り値が含まれている場合に、Service Bus キューにメッセージを送信するルートを IoT ハブに作成します。 キューに到着するメッセージングを監視し、メール アラートを送信するロジック アプリを作成します。

デバイス上で実行されているクライアント コードは、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 Hub に温度データを送信するクライアント アプリ。 このチュートリアルでは、device-to-cloud のメッセージを、temperatureAlert というメッセージ プロパティに基づいてフィルター処理します。 このプロパティを使用してメッセージを生成するサンプルには、次のようなものがあります。

Service Bus の名前空間とキューを作成する

Service Bus の名前空間とキューを作成します。 この記事の後半では、温度アラートを含むメッセージを Service Bus キューに送信するルーティング規則を IoT ハブに作成します。 ロジック アプリは、受信メッセージのキューを監視し、アラートごとに通知を送信します。

Service Bus 名前空間の作成

  1. Azure portal で、検索バーを使用して Service Bus を検索して選択してください。

  2. [作成] を選択して、Service Bus 名前空間を作成してください。

  3. [名前空間の作成] ウィンドウで、次の情報を指定します。

    パラメーター
    サブスクリプション IoT ハブが含まれているのと同じサブスクリプションを選択します。
    リソース グループ IoT Hub が含まれているのと同じリソース グループを選択します。
    名前空間名 Service Bus 名前空間の名前を指定します。 この名前空間は Azure 全体で一意である必要があります。
    場所 IoT ハブで使用するものと同じ場所を使用します。
    価格レベル ドロップダウン リストから [Basic] を選択します。 このチュートリアルでは、[基本] レベルで十分です。
  4. [Review + create](レビュー + 作成) を選択します。

  5. [作成] を選択します

  6. デプロイが完了するまで待ってから、[リソースに移動] を選択してください。

名前空間に Service Bus キューを追加する

  1. Service Bus 名前空間の [概要] ページで、[キュー] を選択してください。

    Screenshot of the namespace overview page to add a queue.

  2. [名前] フィールドに、キューの名前を指定してください。 他のフィールドは既定値のままにして、[作成] を選択してください。

  3. Service Bus 名前空間で、リソース メニューの [設定] セクションから [共有アクセス ポリシー] を選択してください。

  4. RootManageSharedAccessKey ポリシーを選択して、その詳細を開いてください。

  5. [プライマリ接続文字列] の値をコピーし、このチュートリアルの後半でロジック アプリを構成するときに使用するために保存してください。

IoT ハブにカスタム エンドポイントとルーティング規則を追加する

Service Bus キューのカスタム エンドポイントを IoT ハブに追加してください。 次に、メッセージ ルーティング規則を作成して、温度アラートを含むメッセージをそのエンドポイントに誘導し、そこでロジック アプリに取得されるようにします。 このルーティング規則では、ルーティング クエリ temperatureAlert = "true" を使用して、デバイス上で実行されているクライアント コードによって設定された temperatureAlert アプリケーション プロパティの値に基づいてメッセージを転送します。 詳細については、「メッセージ プロパティに基づいたメッセージ ルーティング クエリ」を参照してください。

カスタム エンドポイントとルートを追加する

  1. Azure portal で IoT Hub に移動します。

  2. リソース メニューの [ハブ設定] で、[メッセージ ルーティング] を選択し、[追加] を選択します。

    Screenshot that shows location of the Add button, to add a new route in your IoT hub.

  3. [エンドポイント] タブで、次の情報を指定して Service Bus キューのエンドポイントを作成します。

    パラメーター
    [エンドポイントの種類] [Service Bus キュー] を選択します。
    [エンドポイント名] Service Bus キューにマップされる新しいエンドポイントの名前を指定します。
    Service Bus 名前空間 ドロップダウン メニューを使用して、前のセクションで作成した Service Bus 名前空間を選択します。
    Service Bus キュー ドロップダウン メニューを使用して、名前空間に作成した Service Bus キューを選択します。

    Screenshot that shows how to create a service bus queue endpoint for your route.

  4. [Create + next] (作成 + 次へ) を選択します。

  5. [ルート] タブで、次の情報を入力して、Service Bus キュー エンドポイントを指すルートを作成します。

    パラメーター
    名前 ルートの一意の名前を指定します。
    データ ソース 既定のデバイス テレメトリ メッセージ データ ソースをそのまま使用します。
    ルーティング クエリ クエリ文字列として、「temperatureAlert = "true"」と入力します。

    Screenshot that shows adding a route with a query.

  6. [Create + skip enrichments] (エンリッチメントの作成 + スキップ) を選択します。

通知用に Logic Apps を構成する

前のセクションでは、温度アラートを含むメッセージを Service Bus キューにルーティングするように IoT ハブを設定しました。 ここでは、Service Bus キューを監視し、そのキューにメッセージが追加された場合は常に電子メール通知を送信するロジック アプリを設定します。

ロジック アプリを作成します

  1. Azure portal で、Logic Apps を検索して選択してください。

  2. [追加] を選択して新しいロジック アプリを作成してください。

  3. [ロジック アプリの作成][基本] タブに次の情報を入力してください。

    パラメーター
    リソース グループ IoT Hub を含む同じリソース グループを選択します。
    名前 ロジック アプリの名前を指定します。
    リージョン 近くの [場所] を選択します。
    プランの種類 [従量課金] を選択してください。このチュートリアルにはこれで十分です。

    Screenshot that shows creating a logic app in the Azure portal.

  4. [Review + create](レビュー + 作成) を選択します。

  5. [作成] を選択します

  6. デプロイが完了したら、[リソースに移動] を選択してロジック アプリを開いてください。

ロジック アプリのトリガーを構成する

  1. Azure portal のロジック アプリ リソース ページで、リソース メニューの [開発ツール] セクションから [ロジック アプリ デザイナー] を開いてください。

  2. デザイナーで、[テンプレート] まで下へスクロールし、[空のロジック アプリ] を選択してください。

    Screenshot that shows selecting the Blank Logic App template.

  3. [すべて] タブを選択してすべてのコネクタとトリガーを表示し、[Service Bus] を選択してください。

    Select Service Bus to start creating your logic app in the Azure portal.

  4. [トリガー] で、 [キューで 1 つ以上のメッセージを受信したとき (オート コンプリート)] を選択します。

    Select the trigger for your logic app in the Azure portal.

  5. Service Bus の接続を作成します。

    1. 接続名を指定し、Service Bus 名前空間からコピーした接続文字列を貼り付けてください。

    2. [作成] を選択します

    3. 次の画面で、ドロップダウン メニューを使用して、Service Bus 名前空間で作成したキューを選択してください。 [最大メッセージ数] に「175」と入力してください。

      Screenshot that shows configuring queue settings in the Logic app designer.

  6. ロジック アプリ デザイナー メニューの [保存] を選択して、変更を保存してください。

ロジック アプリのアクションを構成する

  1. ロジック アプリ デザイナーで [新しいステップ] を選択してください。

  2. SMTP サービス接続を作成します。

    1. [SMTP] を検索して選択してください。

      Screenshot that shows selecting an SMTP connection in the logic app designer.

    2. この手順のアクションとして [メールの送信 (V3)] を選択してください。

    3. [接続名] を指定し、残りのフィールドに、通知メッセージの送信に使用するメール アカウントの SMTP 情報を入力してください。

      次のリンクを使用して、メール プロバイダーに応じた SMTP 情報を検索してください。

      Note

      接続を確立するために TLS/SSL を無効にすることが必要になる場合があります。 このとき、接続が確立された後に TLS を再び有効にする場合は、このセクションの最後にある省略可能な手順を参照してください。

      Screenshot that shows configuring the SMTP connection settings in the logic app designer.

    4. [作成] を選択します

  3. メールの送信アクションを追加してください。

    1. [メールの送信] ステップの [新しいパラメーターの追加] ドロップダウンから、次のパラメーターを選択してください。

      • 送信元
      • 目的
      • 情報カテゴリ
      • 本文​​

      画面上の任意の場所をクリックまたはタップして選択ボックスを閉じます。

      Choose SMTP connection email fields to include in email.

    2. 前の手順で選択したメール パラメーターに関する次の情報を入力してください。

      パラメーター
      送信元 SMTP 接続用に構成したメール アドレス。
      目的 通知メールを送信するメール アドレス。
      情報カテゴリ High temperature detected
      本文​​ High temperature detected

      [動的コンテンツの追加] ダイアログが開いたら、[非表示] を選択して閉じてください。 このチュートリアルでは、動的コンテンツを使用しません。

      Provide details for SMTP connection email fields.

  4. [保存] を選択して SMTP 接続を保存します。

  5. (省略可能) 電子メール プロバイダーとの接続を確立するために TLS を無効にする必要があり、ここで再び有効にする場合は、次の手順に従います。

    1. [ロジック アプリ] ウィンドウの [開発ツール] で、 [API 接続] を選択します。

    2. API 接続の一覧から、SMTP 接続を選択します。

    3. [smtp API Connection] (SMTP API 接続) ウィンドウの [全般] で、 [API 接続の編集] を選択します。

    4. [API 接続の編集] ウィンドウで、[SSL を有効にしますか?] を選択し、メール アカウントのパスワードを再入力して [保存] を選択してください。

      Edit SMTP API connection in your logic app in the Azure portal.

これで、ロジック アプリは Service Bus キューからの温度アラートを処理し、電子メール アカウントに通知を送信する準備ができました。

ロジック アプリをテストする

IoT デバイスから温度メッセージの送信を開始して、監視と通知パイプラインをテストします。

  1. デバイス上でクライアント アプリケーションを起動します。 クライアント コードによりテレメトリ メッセージがランダムに出力され、温度が 30 C を超えたときにtemperatureAlert プロパティを true に設定します。

  2. これにより、ロジック アプリによって送信された電子メール通知を受信し始めます。

    注意

    メール サービス プロバイダーは、メールの送信者を送信者 ID で確認する必要が生じる場合があります。

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

このチュートリアルで作成したリソースが不要になった場合は、ポータルでそのリソースとリソース グループを削除してください。 これを行うには、IoT ハブを含むリソース グループを選択し、[削除] をクリックします。

または、次の CLI を使用します。

# Delete your resource group and its contents
az group delete --name <RESOURCE_GROUP_NAME>

次のステップ

このチュートリアルでは、温度の監視と通知のメールボックスと IoT Hub を接続するロジック アプリを作成しました。

引き続き Azure IoT Hub の使用方法を確認すると共に、すべての拡張された IoT のシナリオについて調べるには、次のページを参照してください。