Stack Overflowでは、 MQTTを介した要求/応答の相互作用の実装についての質問があります。1つの回答として、1つのトピックでリクエストを発行し、リクエストに含まれていた別のトークンでレスポンスをリッスンすることでそれを行うことができます。少し厄介ですが、機能します。
MQTTはIoT全体で広く使用されているので、相互運用性のためにこのRPCタイプの相互作用を標準化する試みはあったのでしょうか。
Stack Overflowでは、 MQTTを介した要求/応答の相互作用の実装についての質問があります。1つの回答として、1つのトピックでリクエストを発行し、リクエストに含まれていた別のトークンでレスポンスをリッスンすることでそれを行うことができます。少し厄介ですが、機能します。
MQTTはIoT全体で広く使用されているので、相互運用性のためにこのRPCタイプの相互作用を標準化する試みはあったのでしょうか。
回答:
MQTTを介した標準化されたRPC通信方式の要件が何であるかはわかりませんが、まだ少し調べてみて、いくつかのポイントが見つかりました。
まず、標準的な方法について。上の1つのGitHubそれは、RPCプロジェクト釘の説明種類:
このモジュールは、mqtt接続用のrpcインターフェースを提供します。これは、本質的に、MQTTトピック構造をトランスポートとして使用する要求および応答戦略です。
ポイントは、スタックモデル(OSIモデルは標準)を使用し、MQTTをスタックのレイヤーの1つとして使用することです。
mqttを介したjson-rpcに関するこのプロジェクトは、MQTT を介して標準化された、または少なくともよく知られているプロトコルを使用します。
ぎこちなさについては、MQTTとRPCを最初から構築する必要はありません。代わりに、リンクされたライブラリのいずれか、またはGithubにある他のライブラリを使用します。
OK、すべての言語でGithubに基づいた準備ができていませんが、その場合、コンプライアンスは計画基準になり、残念ながら他のプロジェクト全体に影響を与える可能性があります。
Azure IoT Hubには、ダイレクトメソッドの概念があります。
IoT Hubを使用すると、デバイスからクラウドから直接メソッドを呼び出すことができます。
これはMQTTを介して実装されます(AMQPはサポートされません)。
デバイスはMQTTトピックで直接メソッド要求を受信します。
$iothub/methods/POST/{method name}/?$rid={request id}.
これはSDKにラップされているので、開発者はトピックを具体的に監視することを心配する必要はありません。同様のアプローチを実装できます。
他の回答と同様に、pub-subはRPCには適しておらず、私が知る限り、標準はありません。
詳細なドキュメントはこちらです。