IoT Platformのルールエンジンのデータ転送機能を使用して、指定されたトピックから他のトピックまたは他のAlibaba Cloudサービスにデータを転送できます。 このトピックでは、データ転送ルールを設定する方法について説明します。 データ転送ルールを設定するには、次の手順を実行します。ルールを作成し、データ処理用のSQL文を記述し、データ転送先を指定してから、データ転送が失敗した場合のエラーメッセージの宛先を指定します。
手順
- IoT Platformコンソールにログインします。
[概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンスIDまたはインスタンス名をクリックします。
- 左側のナビゲーションウィンドウで、 を選択します。
[データ転送] ページで、[ルールの作成] をクリックします。
重要最新バージョンのデータ転送ページが表示されたら、ページの右上隅にある [前のバージョンに戻る] をクリックします。 以前のバージョンのデータ転送ページが表示されたら、[ルールの作成] をクリックします。
パラメーターを設定し、[OK] をクリックします。 下表に、各パラメーターを説明します。
パラメーター
説明
ルール名
データ転送ルールの名前。 名前は1 ~ 30文字で、英数字、アンダースコア (_) 、ハイフン (-) を使用できます。
データ型
ルールを使用して処理するデータの形式。 有効な値: JSONおよびBinary。
説明データ転送機能は、トピックに基づいてデータを処理します。 処理するトピックのデータの形式を選択する必要があります。
[バイナリ] を選択した場合、ルールを使用して、基本通信トピックまたはThing Specification Language (TSL) 通信トピックからのメッセージを処理することはできません。 このルールは、Tablestore (OTS) またはApsaraDB RDSにデータを転送するためにも使用できません。
ルールの説明
ルールの説明。
ルールの作成後、ルールの詳細ページが表示されます。 メッセージを処理するためのSQL文を記述し、データ転送先を指定してから、エラーメッセージの転送先を指定します。
[SQL文の書き込み] をクリックしてSQL文を書き込みます。 SQL文は、メッセージフィールドの処理に使用されます。
SQL文の記述方法の詳細については、「SQL文」および「関数」をご参照ください。
パラメーター
説明
ルールクエリ式
SQL文。 SQL文は、[フィールド] 、[トピック] 、および [条件 (オプション)] パラメーターに指定した値に基づいて自動的に生成されます。
フィールド
処理するメッセージのフィールド。 このパラメーターは、SQL文のSELECTキーワードの後に続きます。
たとえば、deviceName() as deviceNameと入力した場合、メッセージのdeviceNameフィールドが選択されます。 フィールドで使用できる関数の詳細については、「関数」をご参照ください。
トピック
処理するメッセージのソーストピック。 このパラメーターは、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} のトピックに対応しています。 このトピックは、更新の進行状況を送信するために使用されます。
モジュールのバージョン番号の送信
デバイスのOTAモジュールのバージョン番号が変更されたときにメッセージを転送するために使用されるトピック。 形式: /${productKey}/${deviceName}/ota/version/post
OTAモジュールのバージョンを送信する
上記のトピックは、/ota/device/inform/${productKey}/${deviceName} のトピックに対応しています。 このトピックは、OTAモジュールのバージョン番号を送信するために使用されます。
バッチステータス通知
OTA更新バッチのステータスが変更されたときにIoT Platformがメッセージを送信するトピック。 形式: /${productKey}/${packageId}/${jobId}/ota/job/status
Jobイベント
/sys/uid/${uid}/distribution/${jobId}/lifecycle
: デバイスジョブのステータスが変更されたときに通知を転送するために使用されるトピック。説明インスタンス移行タスクの名前は、データを移行する製品の名前と同じです。
[データ転送] セクションで、[操作の追加] をクリックしてデータ転送先を指定します。 データ転送機能の設定方法の詳細については、「データ転送例」ディレクトリの関連トピックをご参照ください。
説明ルールごとに最大10個のデータ転送操作を作成できます。
移行先クラウドサービスの例外によりデータ転送が失敗した場合、IoT Platformは次のいずれかの操作を実行します。
IoT PlatformがMessage Queue for Apache RocketMQ、ApsaraDB RDS、ApsaraDB for Lindormなどのクラウドサービスにデータを転送すると、リソースの変更によりクラウドサービスへのアクセスが失敗することがあります。 この場合、IoT Platformはデータの転送を停止し、関連ルールのステータスを異常に変更します。 データ転送の新しい宛先を指定する必要があります。
その他の例外については、IoT Platformは1秒、3秒、10秒の間隔で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
エラーメッセージを示します。
[データ転送] ページに移動します。 設定したルールを見つけ、[操作] 列の [開始] をクリックします。 ルールが有効になると、データはルールに基づいて転送されます。
ルールに対して特定の操作を実行することもできます。 次の表に操作を示します。
API 操作
説明
表示
[操作] 列の [表示] をクリックして、[データ転送ルール] ページに移動します。 次に、ルールの設定を変更します。 たとえば、データソーストピックまたはデータ転送先を変更または削除できます。
削除
[アクション] 列の [削除] をクリックしてルールを削除します。
重要実行中状態のルールは削除できません。
Stopped
[アクション] 列の [停止] をクリックして、ルールを無効にします。
警告ルールで転送されたデバイスデータを使用する必要があるアプリケーションの1つ以上で、ルールが削除または無効になっている場合、またはルールのデータ転送先が削除されている場合、サービスが利用できなくなることがあります。 その結果、あなたのビジネスは中断されるかもしれません。 作業は慎重に行ってください。
次のステップ
[ルールの詳細] ページで、ルールのステータスを確認したり、データ転送先が設定されているかどうかを確認したり、データ転送先にデータが期待どおりに転送されているかどうかを確認したりできます。