MQTT は非同期 Pub/Sub メッセージングを使用するため、サーバーからデバイスへの同期通信には対応していません。IoT Platform は、MQTT 上で Revert-RPC (RRPC) を提供することで、サーバーがデバイスにリクエストを送信し、同期的なレスポンスを待機できるようにします。
用語
|
用語 |
説明 |
|
RRPC |
Revert-RPC。RPC (リモートプロシージャコール) は、クライアント/サーバーモデルを使用して、基盤となるプロトコルを理解することなくリモートでサービスをリクエストします。RRPC は、このモデルを拡張し、サーバーとデバイス間の同期的なリクエスト/レスポンス通信を可能にします。 |
|
RRPC サブスクリプショントピック |
デバイスが RRPC メッセージを受信するためにサブスクライブするトピックです。ワイルドカードを含みます。 |
|
RRPC リクエストメッセージ |
IoT Platform がデバイスに送信するメッセージです。 |
|
RRPC レスポンスメッセージ |
デバイスが IoT Platform に返信するメッセージです。 |
|
RRPC メッセージ ID |
RRPC メッセージの識別に使われる一意の ID で、IoT Platform が各 RRPC 呼び出しに対して生成します。 |
RRPC の仕組み

プロセスは次のとおりです:
-
デバイスは、対応する RRPC トピックをサブスクライブします。
IoT Platform は、MQTT ベースのカスタム RRPC リクエスト/レスポンスメカニズムを提供します。RRPC メッセージを受信するには、デバイスがトピックをサブスクライブし、デバイス側でデータ処理ロジックを実装する必要があります。
-
デバイスは、SUB 命令を送信してトピックをサブスクライブし、IoT Platform からのメッセージを受信します。Link SDK は、サブスクリプションのコード例を提供しています。
-
デバイス上で RRPC メッセージ処理を実装するには、RRPC 機能開発の例をご参照ください。
-
-
サーバーは、IoT Platform の RRpc API を呼び出します。
-
IoT Platform はリクエストを受信し、RRPC リクエストメッセージをデバイスに送信します。メッセージ本文にはサーバーのリクエストデータが含まれ、RRPC メッセージ ID を含む IoT Platform が定義したトピックに送信されます。
-
デバイスはダウンリンクメッセージを受信して処理した後、RRPC レスポンスを IoT Platform に送信します。レスポンスは、リクエストの RRPC メッセージ ID を含む指定形式のトピックに送信されます。
-
IoT Platform は RRPC メッセージ ID を抽出し、元のリクエストと照合します。
-
IoT Platform はレスポンスをサーバーに返します。
(オプション) デバイスは、サブスクライブしたトピックからのメッセージを処理します。
RRpc API を呼び出す際:
-
デバイスがオフラインの場合、IoT Platform はデバイスオフラインエラーを返します。
-
デバイスが 8 秒以内にレスポンスを返さない場合、IoT Platform はタイムアウトエラーを返します。
トピックタイプ
2 つのトピック形式が利用可能です:
-
カスタムトピックの呼び出し (推奨):RRPC とカスタムトピックを組み合わせることで、多様なシナリオに対応します。
-
RRPC 通信トピックの呼び出し:デフォルトの通信トピックを使用します。適用範囲が限定的であり、推奨されません。
Raspberry Pi サーバーのリモートコントロールトピックでは、実践的な RRPC 実装を紹介しています。