MQTT (Message Queuing Telemetry Transport) プロトコルは、非同期パブリッシュ /サブスクライブモデルを使用します。 このモデルは、ユーザーサーバーがデバイスを同期的に制御して応答を取得する必要があるシナリオには適用できません。 IoT Platformは、MQTTに基づく同期通信メカニズムを提供します。 MQTTプロトコルを変更する必要はありません。 IoT Platformは、ユーザーサーバーがデバイスにリクエストを送信するためのRRpc操作を提供します。 デバイスは、指定されたトピックを使用して要求に応答するだけでよく、サーバーは同期して応答を取得できます。
用語
期間 | 説明 |
RRPC | RRPCはrevert-RPCの略です。 リモートプロシージャ呼び出し (RPC) は、クライアント-サーバーモデルを使用します。 このモデルでは、基になるプロトコルを理解する必要なく、リモートサービスを要求できます。 RRPCを使用すると、サーバーからデバイスに要求を送信し、デバイスから応答を受信できます。 |
RRPCサブスクリプション固有のトピック | デバイスがRRPCメッセージを受信するためにサブスクライブするトピック。 トピックにはワイルドカードが含まれています。 |
RRPCリクエストメッセージ | IoT Platformがデバイスに送信するメッセージ。 |
RRPC応答メッセージ | デバイスが応答としてIoT Platformに送信するメッセージ。 |
RRPCメッセージID | 各RRPCメッセージに対してIoT Platformによって生成されるID |
RRPCを介した通信の仕組み
プロセス:
- オプションです。 デバイスは、RRPCサブスクリプショントピックにサブスクライブします。
IoT Platformは、MQTTに基づいてRRPCリクエストメッセージのみを送信し、RRPCレスポンスメッセージを受信できます。 デバイスがIoT Platformから送信されるRRPCデータを取得して処理する必要がある場合、デバイスは上記のトピックをサブスクライブし、開発されたデータ処理ロジックを実装する必要があります。
- ユーザーサーバーは、IoT PlatformのRRpc操作を呼び出します。
- IoT Platformは、サーバー側RRPC要求を受信し、RRPC要求メッセージをデバイスに送信します。 メッセージ本文には、ユーザーサーバーから送信されるペイロードが含まれます。 デバイスがRRPCメッセージを受信するために使用するトピックは、IoT Platformで事前定義されています。 トピックには、メッセージのIDが含まれます。
- デバイスがメッセージを受信すると、デバイスは指定されたトピックを使用してRRPC応答メッセージをIoT Platformに送信します。 トピックには、リクエストメッセージのIDが含まれます。
- IoT Platformは、以前のRRPCリクエストメッセージと一致するレスポンスメッセージIDを抽出します。
- IoT Platformは、応答をユーザーサーバーに返します。
- オプションです。 デバイスは、デバイスがサブスクライブしているトピックからのメッセージを処理します。
説明 RRpc操作を呼び出すと、次のような場合があります。
- デバイスがオフラインです。 この場合、IoT Platformはユーザーサーバーにエラーメッセージを返します。
- デバイスは、タイムアウト期間 (8秒) 内にRRPC要求に応答しません。 この場合、IoT Platformはユーザーサーバーにエラーメッセージを返します。
RRPC固有のトピック
次のタイプのトピックに基づいてRRPCを実装できます。
- カスタムトピックの使用 (推奨): さまざまなシナリオの要件を満たすために、RRPCをカスタムトピックと一緒に使用します。
- RRPC固有のトピックの使用 (推奨なし): カスタムトピックを使用しない場合、IoT PlatformはRRPC固有のトピックを使用します。 この方法は限られた数のシナリオにのみ適用されるため、使用しないことをお勧めします。
RRPCの実装例については、「Raspberry Piサーバーのリモート制御」をご参照ください。