IoT Hub データ プレーン MQTT 5 API リファレンス (非推奨)
このドキュメントでは、IoT Hub データ プレーン API のバージョン 2.0 (api-version: 2020-10-01-preview
) で使用できる操作を定義します。
Note
IoT Hub の MQTT 5 のサポートは非推奨となり、IoT Hub では MQTT の機能サポートが制限されます。 ソリューションに MQTT v3.1.1 または v5 のサポートが必要な場合は、Azure Event Grid での MQTT サポートをお勧めします。 詳細については、IoT Hub と Event Grid での MQTT サポートの比較に関するページを参照してください。
操作
Get Twin
ツインの取得の状態
要求
トピック名: $iothub/twin/get
プロパティ: なし
ペイロード: 空
成功時の応答
プロパティ: なし
ペイロード:ツイン
代替応答
Status | 名前 | 説明 |
---|---|---|
0100 | 正しくない要求 | 操作メッセージの形式が正しくないため、処理できません。 |
0101 | 権限なし | クライアントにはこの操作を実行する権限がありません。 |
0102 | 禁止 | 操作は許可されていません。 |
0501 | Throttled | SKU あたりの要求レートが高すぎます |
0502 | クォータ超過 | 現在の SKU ごとの 1 日あたりのクォータを超えています |
0601 | サーバー エラー | 内部サーバー エラー |
0602 | タイムアウト | 操作が完了する前にタイムアウトになりました |
0603 | サーバー ビジー | サーバーがビジー状態です |
擬似コードのサンプル
-> PUBLISH
QoS: 0
Topic: $iothub/twin/get
<- PUBLISH
QoS: 0
Topic: $iothub/responses
パッチ ツインの報告
パッチ ツインの報告の状態
要求
トピック名: $iothub/twin/patch/reported
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
if-version | u64 | no |
ペイロード:TwinState
成功時の応答
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
version | u64 | はい | パッチが適用された後に報告された状態のバージョン |
ペイロード: 空
代替応答
Status | 名前 | 説明 |
---|---|---|
0104 | 前提条件の失敗 | 前提条件が満たされなかったため、要求が取り消されました |
0100 | 正しくない要求 | 操作メッセージの形式が正しくないため、処理できません。 |
0101 | 権限なし | クライアントにはこの操作を実行する権限がありません。 |
0102 | 禁止 | 操作は許可されていません。 |
0501 | Throttled | SKU あたりの要求レートが高すぎます |
0502 | クォータ超過 | 現在の SKU ごとの 1 日あたりのクォータを超えています |
0601 | サーバー エラー | 内部サーバー エラー |
0602 | タイムアウト | 操作が完了する前にタイムアウトになりました |
0603 | サーバー ビジー | サーバーがビジー状態です |
擬似コードのサンプル
-> PUBLISH
QoS: 0
Topic: $iothub/twin/patch/reported
[if-version: <u64>]
<- PUBLISH
QoS: 0
Topic: $iothub/responses
コマンドを受信する
コマンドを受信して処理する
メッセージ
トピック名: $iothub/commands
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
sequence-no | u64 | はい | メッセージのシーケンス番号 |
enqueued-time | time | はい | メッセージがシステムで受信されたときのタイムスタンプ |
delivery-count | u32 | はい | メッセージ配信が試行された回数 |
creation-time | time | no | メッセージが作成されたときのタイムスタンプ (送信者によって提供) |
message-id | string | no | メッセージ ID (送信者によって提供) |
user-id | string | no | ユーザー ID (送信者によって提供) |
correlation-id | string | no | 相関 ID (送信者によって提供) |
コンテンツ タイプ | string | no | ペイロードのコンテンツ タイプを決定します |
content-encoding | string | no | ペイロードのコンテンツのエンコードを決定します |
ペイロード: 任意のバイト シーケンス
成功の受信確認
クライアントによる処理のためにコマンドが受け入れられたことを示します
プロパティ: なし
ペイロード: 空
代替受信確認
理由コード | Status | 名前 | 説明 |
---|---|---|---|
131 | 0603 | Abandon | 現時点ではコマンドは処理されず、後に再配信される必要があることを示します。 |
131 | 0100 | Reject | クライアントがコマンドを拒否し、再試行は行うべきでないことを示します。 |
擬似コードのサンプル
-> SUBSCRIBE
- Topic: $iothub/commands
QoS: 1
<- PUBLISH
QoS: 1
Topic: $iothub/commands
sequence-no: <u64>enqueued-time: <time>delivery-count: <u32>[creation-time: <time>][message-id: <string>][user-id: <string>][correlation-id: <string>][Content Type: <string>][content-encoding: <string>]
Payload: ...
-> PUBACK
ダイレクト メソッドを受信する
ダイレクト メソッドの呼び出しを受信して処理する
要求
トピック名: $iothub/methods/{name}
プロパティ: なし
ペイロード: 任意のバイト シーケンス
成功時の応答
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
response-code | u32 | はい |
ペイロード: 任意のバイト シーケンス
代替応答
Status | 名前 | 説明 |
---|---|---|
06A0 | 利用不可 | この接続を介してクライアントには到達できないことを示します。 |
擬似コードのサンプル
-> SUBSCRIBE
- Topic: methods/{name}
QoS: 0
<- SUBACK
<- PUBLISH
QoS: 0
Topic: $iothub/methods/{name}
-> PUBLISH
QoS: 0
Topic: $iothub/responses
ツインの望ましい状態の変更を受信する
ツインの望ましい状態の更新プログラムを受信する
メッセージ
トピック名: $iothub/twin/patch/desired
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
version | u64 | はい | この更新プログラムに一致する望ましい状態のバージョン |
ペイロード:TwinState
擬似コードのサンプル
-> SUBSCRIBE
- Topic: $iothub/twin/patch/desired
QoS: 0
<- PUBLISH
QoS: 0
Topic: $iothub/twin/patch/desired
version: <u64>
Payload: ...
テレメトリを送信する
テレメトリ チャネル (既定では Event Hubs、ルーティング構成を使用する場合はその他のエンドポイント) にメッセージを投稿します。
メッセージ
トピック名: $iothub/telemetry
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
コンテンツの種類 | string | no | 投稿されたメッセージの content-type システム プロパティに変換します |
content-encoding | string | no | 投稿されたメッセージの content-encoding システム プロパティに変換します |
message-id | string | no | 投稿されたメッセージの message-id システム プロパティに変換します |
user-id | string | no | 投稿されたメッセージの user-id システム プロパティに変換します |
correlation-id | string | no | 投稿されたメッセージの correlation-id システム プロパティに変換します |
creation-time | time | no | 投稿されたメッセージの iothub-creation-time-utc プロパティに変換します |
ヒント
creation-time
の形式は、タイムゾーン情報が含まれない UTC である必要があります。 たとえば、2021-04-21T11:30:16Z
は有効で、2021-04-21T11:30:16-07:00
は無効です。
ペイロード: 任意のバイト シーケンス
成功の受信確認
メッセージがテレメトリ チャネルに正常に投稿されました
プロパティ: なし
ペイロード: 空
代替受信確認
理由コード | Status | 名前 | 説明 |
---|---|---|---|
131 | 0100 | 正しくない要求 | 操作メッセージの形式が正しくないため、処理できません。 |
135 | 0101 | 権限なし | クライアントにはこの操作を実行する権限がありません。 |
131 | 0102 | 禁止 | 操作は許可されていません。 |
131 | 0601 | サーバー エラー | 内部サーバー エラー |
151 | 0501 | Throttled | SKU あたりの要求レートが高すぎます |
151 | 0502 | クォータ超過 | 現在の SKU ごとの 1 日あたりのクォータを超えています |
131 | 0602 | タイムアウト | 操作が完了する前にタイムアウトになりました |
131 | 0603 | サーバー ビジー | サーバーがビジー状態です |
擬似コードのサンプル
-> PUBLISH
QoS: 1
Topic: $iothub/telemetry
[Content Type: <string>]
[content-encoding: <string>]
[message-id: <string>]
[user-id: <string>]
[correlation-id: <string>]
[creation-time: <time>]
<- PUBACK
Responses
正しくない要求
操作メッセージの形式が正しくないため、処理できません。
理由コード: 131
状態: 0100
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
reason | string | いいえ | メッセージに関して具体的に何が有効でないかについての情報が含まれます |
ペイロード: 空
Conflict
操作は、実行中の別の操作と競合しています。
理由コード: 131
状態: 0103
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
trace-id | string | いいえ | エラーに対するその他の診断との相関関係について ID を追跡します |
reason | string | いいえ | メッセージに関して具体的に何が有効でないかについての情報が含まれます |
ペイロード: 空
禁止
操作は許可されていません。
理由コード: 131
状態: 0102
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
reason | string | いいえ | メッセージに関して具体的に何が有効でないかについての情報が含まれます |
ペイロード: 空
権限なし
クライアントにはこの操作を実行する権限がありません。
理由コード: 135
状態: 0101
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
trace-id | string | いいえ | エラーに対するその他の診断との相関関係について ID を追跡します |
ペイロード: 空
見つかりません
要求されたリソースが存在しません
理由コード: 131
状態: 0504
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
reason | string | いいえ | メッセージに関して具体的に何が有効でないかについての情報が含まれます |
ペイロード: 空
変更されていません
指定された前提条件に基づくリソース変更が行われませんでした。
理由コード: 0
状態: 0001
プロパティ: なし
ペイロード: 空
前提条件の失敗
前提条件が満たされなかったため、要求が取り消されました
理由コード: 131
状態: 0104
プロパティ: なし
ペイロード: 空
クォータ超過
現在の SKU ごとの 1 日あたりのクォータを超えています
理由コード: 151
状態: 0502
プロパティ: なし
ペイロード: 空
リソースを使い果たしました
リソースには操作を完了するための容量がありません
理由コード: 131
状態: 0503
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
reason | string | いいえ | メッセージに関して具体的に何が有効でないかについての情報が含まれます |
ペイロード: 空
サーバー ビジー
サーバーがビジー状態です
理由コード: 131
状態: 0603
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
trace-id | string | いいえ | エラーに対するその他の診断との相関関係について ID を追跡します |
ペイロード: 空
サーバー エラー
内部サーバー エラー
理由コード: 131
状態: 0601
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
trace-id | string | いいえ | エラーに対するその他の診断との相関関係について ID を追跡します |
ペイロード: 空
ターゲットが失敗しました
ターゲットは応答しましたが、その応答が無効であるか、形式が正しくありませんでした
理由コード: 131
状態: 06A2
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
reason | string | いいえ | メッセージに関して具体的に何が有効でないかについての情報が含まれます |
ペイロード: 空
ターゲットのタイムアウト
ターゲットで要求が完了するまで待機している間にタイムアウトになりました
理由コード: 131
状態: 06A1
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
trace-id | string | いいえ | エラーに対するその他の診断との相関関係について ID を追跡します |
reason | string | いいえ | メッセージに関して具体的に何が有効でないかについての情報が含まれます |
ペイロード: 空
ターゲットを使用できません
要求を完了するためにターゲットに到達できません
理由コード: 131
状態: 06A0
プロパティ: なし
ペイロード: 空
Throttled
SKU あたりの要求レートが高すぎます
理由コード: 151
状態: 0501
プロパティ: なし
ペイロード: 空
タイムアウト
操作が完了する前にタイムアウトになりました
理由コード: 131
状態: 0602
[プロパティ] :
名前 | タイプ | Required | 説明 |
---|---|---|---|
trace-id | string | いいえ | エラーに対するその他の診断との相関関係について ID を追跡します |
ペイロード: 空