Cloud IoT Core では、デバイス接続と通信(MQTT と HTTP)の 2 つのプロトコルがサポートされています。デバイスは「ブリッジ」(MQTT ブリッジまたは HTTP ブリッジのいずれか)を介して Cloud IoT Core と通信します。コンポーネントの概要に示すように、MQTT/HTTP ブリッジは Cloud IoT Core の中心的なコンポーネントです。
デバイス レジストリを作成する際に、MQTT、HTTP、またはそれらの両方を有効にするプロトコルを選択します。
MQTT は、組み込みデバイスで頻繁に使用され、サポートされる標準のパブリッシュ / サブスクライブ プロトコルであり、マシン間のやり取りでも広く使用されています。
HTTP は「接続レス」プロトコルです。HTTP ブリッジでは、デバイスは Cloud IoT Core への接続を維持しません。代わりに、リクエストを送信してレスポンスを受け取ります。Cloud IoT Core は HTTP 1.1(2.0 ではありません)のみをサポートします。
次の表は、Cloud IoT Core での 2 つのプロトコルの仕組みを比較したものです。
MQTT ブリッジ | HTTP ブリッジ |
---|---|
デバイスの接続が維持される | 接続なし(リクエスト / レスポンス) |
全二重 TCP 接続 | 半二重 TCP 接続 |
JWT は、CONNECT メッセージのパスワード フィールドで送信されます。 |
JWT は、HTTP リクエストの Authorization ヘッダーで送信されます。 |
テレメトリー イベントが Cloud Pub/Sub に push される | テレメトリー イベントが Cloud Pub/Sub に push される |
デバイスの接続ステータスが報告されます | デバイスの接続ステータスは報告されません |
デバイス構成はサブスクリプションを通じて伝播される | デバイス構成は(ポーリングを介して)明示的にリクエストする必要がある |
最新の構成(新しいかどうかに関係なく)は、サブスクリプションでは常にデバイスによって受信される | デバイスは、新しい構成のみを受け取るように指定できます |
QoS 1 使用時のデバイス構成の確認応答(ACK) | デバイス構成の場合は明示的な ACK はありません |
前回のデバイスのハートビート時間は保持されます | デバイスのハートビート データはありません |
各プロトコルの次の一般的な機能を検討することもできます。
MQTT | HTTP |
---|---|
|
|
両方のブリッジで公開鍵(非対称)デバイス認証と JSON Web Token(JWT)が使用されます。詳細については、デバイスのセキュリティのセクションをご覧ください。
ヒント: ユースケースに最適なプロトコルが不明な場合は、HTTP から開始して Cloud IoT Core に習熟してから、必要に応じて MQTT に切り替えます。