すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:データ転送ルールの設定

最終更新日:Feb 06, 2024

IoT Platformのルールエンジンのデータ転送機能を使用して、指定されたトピックから他のトピックまたは他のAlibaba Cloudサービスにデータを転送できます。 このトピックでは、データ転送ルールを設定する方法について説明します。 データ転送ルールを設定するには、次の手順を実行します。ルールを作成し、データ処理用のSQL文を記述し、データ転送先を指定してから、データ転送が失敗した場合のエラーメッセージの宛先を指定します。

手順

  1. IoT Platformコンソールにログインします。
  2. [概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンスIDまたはインスタンス名をクリックします。

  3. 左側のナビゲーションウィンドウで、[メッセージ転送] > [データ転送] を選択します。
  4. [データ転送] ページで、[ルールの作成] をクリックします。

    重要

    最新バージョンのデータ転送ページが表示されたら、ページの右上隅にある [前のバージョンに戻る] をクリックします。 以前のバージョンのデータ転送ページが表示されたら、[ルールの作成] をクリックします。

  5. パラメーターを設定し、[OK] をクリックします。 下表に、各パラメーターを説明します。

    パラメーター

    説明

    ルール名

    データ転送ルールの名前。 名前は1 ~ 30文字で、英数字、アンダースコア (_) 、ハイフン (-) を使用できます。

    データ型

    ルールを使用して処理するデータの形式。 有効な値: JSONおよびBinary

    説明
    • データ転送機能は、トピックに基づいてデータを処理します。 処理するトピックのデータの形式を選択する必要があります。

    • [バイナリ] を選択した場合、ルールを使用して、基本通信トピックまたはThing Specification Language (TSL) 通信トピックからのメッセージを処理することはできません。 このルールは、Tablestore (OTS) またはApsaraDB RDSにデータを転送するためにも使用できません。

    ルールの説明

    ルールの説明。

  6. ルールの作成後、ルールの詳細ページが表示されます。 メッセージを処理するためのSQL文を記述し、データ転送先を指定してから、エラーメッセージの転送先を指定します。

    1. [SQL文の書き込み] をクリックしてSQL文を書き込みます。 SQL文は、メッセージフィールドの処理に使用されます。

      SQL文の記述方法の詳細については、「SQL文」および「関数」をご参照ください。

      パラメーター

      説明

      ルールクエリ式

      SQL文。 SQL文は、[フィールド][トピック] 、および [条件 (オプション)] パラメーターに指定した値に基づいて自動的に生成されます。

      フィールド

      処理するメッセージのフィールド。 このパラメーターは、SQL文のSELECTキーワードの後に続きます。

      たとえば、deviceName() as deviceNameと入力した場合、メッセージのdeviceNameフィールドが選択されます。 フィールドで使用できる関数の詳細については、「関数」をご参照ください。

      説明

      基本通信トピックとTSL通信トピックのデータはAlink JSON形式です。 データがルールエンジンに転送される前に、データは、対応するTSLモデルに基づいて解析される。 データ解析の詳細については、「データ転送手順」をご参照ください。 解析されたデータの形式の詳細については、「データ形式」をご参照ください。 SQL文を記述するときは、解析されたデータの形式に基づいてフィールドを指定します。

      トピック

      処理するメッセージのソーストピック。 このパラメーターは、SQL文のFROMキーワードの後に続きます。 オプションのトピックの詳細については、次のトピック表を参照してください。

      重要

      ルールの [データ型] パラメーターを [バイナリ] に設定した場合、このパラメーターを [カスタム] に設定します。

      Condition

      ルールのトリガー条件。 このパラメーターは、SQL文のWHEREキーワードの後に続きます。

      表 1 トピック

      トピック

      説明

      参考資料

      カスタム

      カスタム形式でデータを転送するために使用されるトピック。 このトピックの形式は、カスタムトピックの形式と同じです。 形式: /${productKey}/${deviceName}/user/${TopicShortName}

      ${TopicShortName} は、カスタムトピックのサフィックスであるカスタムトピックカテゴリを指定します。

      値には、プラス記号 (+) や数値記号 (#) などのワイルドカード文字を含めることができます。

      • すべての機器 (+ ): 指定された製品のすべてのデバイスを示します。

      • /user/#: 指定されたデバイスのすべてのトピックを示します。

      カスタムトピックを使用した通信

      デバイスステータス変更通知

      デバイスのステータスがオンラインとオフラインの間で変化したときに通知を転送するために使用されるトピック。 形式: /as/mqtt/status/${productKey}/${deviceName}

      デバイスステータスの送信

      TSLデータレポート

      以下のトピックを提供します。

      • /${productKey}/${deviceName}/thing/event/property/post: このトピックはデバイスプロパティを転送するために使用されます。

      • /${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post: このトピックは、デバイスイベントを転送するために使用されます。

      • /${productKey}/${deviceName}/thing/property/batch/post: このトピックは、デバイスプロパティをバッチで転送するために使用されます。

      • /${productKey}/${deviceName}/thing/event/batch/post: このトピックは、デバイスイベントをバッチで転送するために使用されます。

      • /${productKey}/${deviceName}/thing/downlink/reply/message: このトピックは、デバイスがIoT Platformコマンドへの応答として返すメッセージを転送するために使用されます。

      デバイスデータの送信には、次のトピックを使用します。

      • /sys/${productKey}/${deviceName}/thing/event/property/post: このトピックはデバイスプロパティの送信に使用されます。

      • /sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/postおよび /sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId }:{ tsl.event.identifier}/post: これらのトピックはデバイスイベントの送信に使用されます。

      • /sys/${productKey}/${deviceName}/thing/event/property/batch/post: このトピックでは、デバイスプロパティとイベントをバッチで送信します。

      ライフサイクル全体のデバイス変更

      デバイスが作成、削除、無効、または有効になったときにメッセージを転送するために使用されるトピック。 形式: /${productKey}/${deviceName}/thing/lifecycle

      ライフサイクル変更の送信

      ゲートウェイで検出されたサブデバイスデータレポート

      ゲートウェイがサブデバイスを検出したときに、新しいサブデバイスに関する情報を送信および転送するために使用されるトピック。 このトピックはゲートウェイに固有です。 形式: /${productKey}/${deviceName}/thing/list/found

      検出されたサブデバイスに関する情報の送信

      デバイスのトポロジ関係の変更

      サブデバイスとゲートウェイ間のトポロジ関係が作成または削除されたときに通知を転送するために使用されるトピック。 このトピックはゲートウェイに固有です。 形式: /${productKey}/${deviceName}/thing/topo/lifecycle

      デバイスのトポロジ関係の変更

      /sys/${productKey}/${deviceName}/thing/topo/change: このトピックは、デバイスデータの送信に使用されます。

      ゲートウェイにトポロジ関係の変更を通知

      デバイスタグの変更

      デバイスタグが変更されたときにメッセージを転送するために使用されるトピック。 形式: /${productKey}/${deviceName}/thing/deviceinfo/update

      デバイスタグ変更の送信

      /sys/${productKey}/${deviceName}/thing/deviceinfo/update: このトピックは、デバイスデータの送信に使用されます。

      タグの送信

      TSL履歴データレポート

      以下のトピックを提供します。

      • /${productKey}/${deviceName}/thing/event/property/history/post: このトピックは、履歴プロパティを転送するために使用されます。

      • /${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/history/post: このトピックは、履歴イベントを転送するために使用されます。

      /sys/${productKey}/${deviceName}/thing/event/property/history/post: このトピックは、過去のTSLデータの送信に使用されます。

      デバイスのプロパティ、イベント、およびサービス

      デバイスステータス通知

      以下のトピックを提供します。

      • /${productKey}/${deviceName}/ota/upgrade: このトピックは、無線 (OTA) 更新結果を転送するために使用されます。

      • /${productKey}/${deviceName}/ota/progress/post: このトピックは、更新の進行状況を転送するために使用されます。

      上記のトピックは、/ota/device/progress/${productKey}/${deviceName} のトピックに対応しています。 このトピックは、更新の進行状況を送信するために使用されます。

      更新の進行状況をIoT Platformに送信

      モジュールのバージョン番号の送信

      デバイスのOTAモジュールのバージョン番号が変更されたときにメッセージを転送するために使用されるトピック。 形式: /${productKey}/${deviceName}/ota/version/post

      OTAモジュールのバージョンを送信する

      上記のトピックは、/ota/device/inform/${productKey}/${deviceName} のトピックに対応しています。 このトピックは、OTAモジュールのバージョン番号を送信するために使用されます。

      OTAモジュールのバージョンをIoT Platformに送信

      バッチステータス通知

      OTA更新バッチのステータスが変更されたときにIoT Platformがメッセージを送信するトピック。 形式: /${productKey}/${packageId}/${jobId}/ota/job/status

      OTA更新バッチのステータスデータの送信

      Jobイベント

      /sys/uid/${uid}/distribution/${jobId}/lifecycle: デバイスジョブのステータスが変更されたときに通知を転送するために使用されるトピック。

      説明

      インスタンス移行タスクの名前は、データを移行する製品の名前と同じです。

      インスタンスのデータ移行タスクのステータスデータの送信

    2. [データ転送] セクションで、[操作の追加] をクリックしてデータ転送先を指定します。 データ転送機能の設定方法の詳細については、「データ転送例」ディレクトリの関連トピックをご参照ください。

      説明

      ルールごとに最大10個のデータ転送操作を作成できます。

      移行先クラウドサービスの例外によりデータ転送が失敗した場合、IoT Platformは次のいずれかの操作を実行します。

      • IoT PlatformがMessage Queue for Apache RocketMQ、ApsaraDB RDS、ApsaraDB for Lindormなどのクラウドサービスにデータを転送すると、リソースの変更によりクラウドサービスへのアクセスが失敗することがあります。 この場合、IoT Platformはデータの転送を停止し、関連ルールのステータスを異常に変更します。 データ転送の新しい宛先を指定する必要があります。

      • その他の例外については、IoT Platformは1秒、3秒、10秒の間隔で3回再試行します。 再試行ポリシーは、シナリオに基づいて異なり得る。 すべての再試行が失敗した場合、メッセージは破棄されます。 ビジネスでメッセージの信頼性に対する要件が高い場合は、エラー操作を追加して、エラーメッセージを他のクラウドサービスに転送できます。

    3. [エラーデータの転送] セクションで、[エラー操作の追加] をクリックします。 次に、すべての再試行が失敗した後、指定された宛先にエラーメッセージを転送するようにパラメーターを設定します。

      重要
      • ルールごとに追加できるエラー処理操作は1つだけです。

      • 通常の操作とエラー処理操作では、メッセージを同じ宛先に転送できません。 たとえば、正常なデータとエラーデータを同時にOTSに転送することはできません。

      • エラーメッセージの転送に失敗した場合、再試行は実行されません。

      • エラーメッセージは、他のクラウドサービスの問題が原因でルールエンジンがデータの転送に失敗した場合にのみ生成されます。

      メッセージのクラウドサービスへの転送に失敗した場合、IoT Platformはメッセージの転送を再試行します。 再試行が失敗した場合、データ転送に指定したエラー操作に基づいてエラーメッセージが転送されます。

      サンプルエラーメッセージ:

      {
         "ruleName":"",
         "topic":"",
         "productKey":"",
         "deviceName":"",
         "messageId":"",
         "base64OriginalPayload":"",
         "failures":[
          {
           "actionType":"OTS",
           "actionRegion":"cn-shanghai",
           "actionResource":"table1",
           "errorMessage":""
          },
          {
           "actionType":"RDS",
           "actionRegion":"cn-shanghai",
           "actionResource":"instance1/table1",
           "errorMessage":""
          }
         ]
      }

      エラーメッセージのパラメーターを次の表に示します。

      パラメーター

      説明

      ruleName

      監視ルールの名前。

      topic

      メッセージのソーストピック

      productKey

      プロダクトの ProductKey。

      deviceName

      デバイスのDeviceName。

      messageId

      IoT Platformから送信されるメッセージのID。

      base64OriginalPayload

      Base64-encodedの生データ。

      failures

      エラーの詳細。 複数のエラーが発生する可能性があります。

      actionType

      失敗した操作のタイプ。

      actionRegion

      エラーが発生したリージョン。

      actionResource

      エラーが発生した宛先サービス。

      errorMessage

      エラーメッセージを示します。

  7. [データ転送] ページに移動します。 設定したルールを見つけ、[操作] 列の [開始] をクリックします。 ルールが有効になると、データはルールに基づいて転送されます。

    ルールに対して特定の操作を実行することもできます。 次の表に操作を示します。

    API 操作

    説明

    表示

    [操作] 列の [表示] をクリックして、[データ転送ルール] ページに移動します。 次に、ルールの設定を変更します。 たとえば、データソーストピックまたはデータ転送先を変更または削除できます。

    削除

    [アクション] 列の [削除] をクリックしてルールを削除します。

    重要

    実行中状態のルールは削除できません。

    Stopped

    [アクション] 列の [停止] をクリックして、ルールを無効にします。

    警告

    ルールで転送されたデバイスデータを使用する必要があるアプリケーションの1つ以上で、ルールが削除または無効になっている場合、またはルールのデータ転送先が削除されている場合、サービスが利用できなくなることがあります。 その結果、あなたのビジネスは中断されるかもしれません。 作業は慎重に行ってください。

次のステップ

[ルールの詳細] ページで、ルールのステータスを確認したり、データ転送先が設定されているかどうかを確認したり、データ転送先にデータが期待どおりに転送されているかどうかを確認したりできます。Data forwarding destination