複数のデバイスにカスタム Topic メッセージを同時に送信するには、IoT Platform のバッチメッセージ配信ジョブを使用します。このトピックでは、ジョブの作成、操作の Topic とそのデータ形式、およびジョブステータスを監視する手順の概要について説明します。
前提条件
IoT Platform で、デバイスの [サブスクライブ] または [サブスクライブとパブリッシュ] 権限を持つカスタム Topic を追加しました。詳細については、「カスタム Topic 通信の使用」をご参照ください。
デバイスでカスタム Topic を正常にサブスクライブし、サブスクライブ解除していません。詳細については、「Link SDK の Topic のサブスクライブ」をご参照ください。
タスク管理プロセス
Pub サービス タスクを作成します。
- IoT Platform コンソール で、管理するインスタンスを見つけ、インスタンス名をクリックします。[インスタンスの詳細] ページの左側のナビゲーションウィンドウで、 を選択します。[タスク] ページで、[タスクの作成] をクリックします。
[タスクの作成] ページに移動し、パラメーター名の横にあるヘルプアイコン
をクリックし、指示に従ってタスクとジョブを構成し、[完了] を選択します。タスク構成
パラメーター
説明
タスク名
有効なタスク名を入力します。
タスクタイプ
タイプを選択します: [pub バッチメッセージプッシュタスク]。
タスクの説明
識別を容易にするために、タスクの目的などの詳細を記入します。
宛先デバイス、プロダクト、またはグループ
タスクを実行するデバイスを選択します。個別のデバイス、プロダクト別のデバイス、またはグループ別のデバイスを選択できます。重要 グループ別にデバイスを選択する場合、動的グループは選択できません。デバイスのタスク実行ルール
.json形式のルールファイルをアップロードします。ファイルサイズは 64 KB を超えないようにしてください。[テンプレートのダウンロード] をクリックしてルールテンプレートを取得できます。
たとえば、複数のデバイスの場合、カスタム Topic は
/${productKey}/${deviceName}/user/getです。コード スニペットの例を次に示します。{ "topicShortName": "get", // topicShortName "messageContent": "eyJ0ZXN0IjoidGFzayBiYXRjaHB1YiBicm9hZGNhc3QifQ==" // 送信するメッセージ本文。バイナリデータに変換し、Base64 でエンコードする必要があります。 }topicShortName: 完全なカスタム Topic
/${productKey}/${deviceName}/user/${topicShortName}を定義します。たとえば、Topic/${productKey}/${deviceName}/user/getの topicShortName の値はgetです。messageContent: 送信するメッセージ本文。バイナリデータに変換し、Base64 でエンコードする必要があります。
ジョブ構成
パラメーター
説明
ジョブ実行プッシュ構成
1 分あたりにプッシュされるジョブ数をビジネス要件に合わせて調整します。
[1 分あたりのジョブ実行数] を運用ニーズに合わせて設定します。
カスタムタスクと Pub バッチメッセージプッシュタスクの [プッシュメッセージタイプ] を選択します。
オプションは次のとおりです。
QoS0: メッセージを最大 1 回配信します。
QoS1: 少なくとも 1 回の配信を保証します。 QoS 1 メッセージの送信後に PUBACK 応答が受信されない場合、IoT Platform への再接続時にメッセージがデバイスに再送信されます。
ジョブ実行タイムアウト設定
このオプションのパラメーターを使用すると、デバイス タスクのタイムアウトを設定できます。設定しない場合、タスクはタイムアウトしません。これはカスタム タスクにのみ適用されます。
タイマーは、デバイス タスクが IN_PROGRESS 状態になったときに開始されます。タスクが完了せずに設定されたタイムアウトを超えた場合、ジョブ ステータスは TIMED_OUT に変更され、ジョブの実行は停止します。
タスク作成時、IoT プラットフォームは Pub API を使用して複数のデバイスにメッセージを送信します。これにより、デバイスは IoT プラットフォームに応答結果を返すように促されます。
カスタム メッセージ Topic は、
/${productKey}/${deviceName}/user/${TopicShortName}のパターンに従い、ユーザー定義のデータ形式を使用します。- IoT Platform コンソールで、タスクが属するインスタンスを見つけ、インスタンス名をクリックします。 [インスタンスの詳細] ページで、 を選択します。 [タスク] ページで、作成したタスクのステータスなど、関連する詳細を表示できます。 重要 [タイムアウト] 状態のタスクは、指定されたスケジュールに基づいて実行できなくなります。
タスクの作成後 7 日以内にサブタスクが実行に失敗した場合、タスクは [タイムアウト] 状態になります。
ビジネス要件に基づいて、次の操作のいずれかを実行できます。
- [タスク] ページで、[処理中] 状態のタスクをキャンセルします。
- 管理するタスクを見つけ、[アクション] 列の [表示] をクリックします。 タスク詳細ページで、タスク情報とタスク統計を表示します。
タブ 説明 [タスク情報] タスク情報を表示し、タスクの説明とタスク構成を変更し、ルールファイルをダウンロードできます。 [タスク概要] ステータス別にサブタスクの統計を表示できます。 - 管理するデバイスを見つけ、[表示] をクリックして、[デバイスの詳細] ページに移動します。
- [タスク] タブで、デバイスのすべてのタスクを表示できます。
- [デバイスログ] タブで、[表示] をクリックします。 [デバイスログ] ページで、[クラウド実行ログ] をクリックします。 [クラウド実行ログ] タブで、検索バーのワークロードタイプドロップダウンリストから [クラウドツーデバイスメッセージ] を選択して、タスク関連のログを表示します。
- サブタスクの実行に失敗した場合は、[アクション] 列の [実行の詳細] をクリックして、失敗の原因を表示します。
- サブタスクがタイムアウトしたか、実行に失敗した場合は、[ステータス] 列の [タイムアウト] または [失敗] をクリックして、対応する状態のサブタスクを表示します。
[タスク] ページの上部にある [再実行] をクリックして、現在のタスクのタイムアウト状態と失敗状態にあるサブタスクを再実行します。
- 管理するデバイスを見つけ、[表示] をクリックして、[デバイスの詳細] ページに移動します。
- タスクの [アクション] 列の [削除] をクリックします。 表示されるメッセージで、[OK] をクリックします。 警告 タスクを削除すると、タスクに関連するすべてのデータが削除されます。 ビジネスアプリケーションがタスクに基づいて実行されている場合、アプリケーションが使用できなくなり、ビジネスに影響を与える可能性があります。 慎重に行ってください。