分享方式:


IoT 中樞 資料平面 MQTT 5 API 參考 (已淘汰)

本檔定義 2.0 版(api-version: 2020-10-01-preview) IoT 中樞 數據平面 API 中可用的作業。

注意

IoT 中樞 中的 MQTT 5 支援已被取代,且 IoT 中樞 對 MQTT 的功能支援有限。 如果您的解決方案需要 MQTT v3.1.1 或 v5 支援,建議使用 Azure 事件方格中的 MQTT 支援。 如需詳細資訊,請參閱 比較 IoT 中樞和事件方格中的 MQTT 支援

Operations

取得對應項

取得對應項狀態

Request

主題名稱: $iothub/twin/get

屬性:無

承載:空白

成功回應

屬性:無

承載:對應項

替代回應

狀態 名稱 描述
0100 不正確的要求 作業訊息的格式不正確且無法處理。
0101 未獲授權 用戶端未獲授權執行作業。
0102 不允許 不允許作業。
0501 調整執行速度 每個 SKU 的要求速率太高
0502 超過配額 超過每個目前 SKU 的每日配額
0601 伺服器錯誤 內部伺服器錯誤
0602 Timeout 作業在完成之前逾時
0603 伺服器忙碌 伺服器忙碌中

虛擬程式代碼範例


-> PUBLISH
    QoS: 0
    Topic: $iothub/twin/get
<- PUBLISH
    QoS: 0
    Topic: $iothub/responses

修補程式對應項報告

修補程式對應項的報告狀態

Request

主題名稱: $iothub/twin/patch/reported

Property:

名稱 類型​​ 必要 描述
if-version u64

Payload:TwinState

成功回應

Property:

名稱 類型​​ 必要 描述
version u64 套用修補程式之後的報告狀態版本

承載:空白

替代回應

狀態 名稱 描述
0104 先決條件失敗 不符合前置條件,導致要求遭到取消
0100 不正確的要求 作業訊息的格式不正確且無法處理。
0101 未獲授權 用戶端未獲授權執行作業。
0102 不允許 不允許作業。
0501 調整執行速度 每個 SKU 的要求速率太高
0502 超過配額 超過每個目前 SKU 的每日配額
0601 伺服器錯誤 內部伺服器錯誤
0602 Timeout 作業在完成之前逾時
0603 伺服器忙碌 伺服器忙碌中

虛擬程式代碼範例


-> PUBLISH
    QoS: 0
    Topic: $iothub/twin/patch/reported
    [if-version: <u64>]
<- PUBLISH
    QoS: 0
    Topic: $iothub/responses

接收命令

接收和處理命令

訊息

主題名稱: $iothub/commands

Property:

名稱 類型​​ 必要 描述
sequence-no u64 訊息的序號
enqueued-time time 訊息進入系統時的時間戳
delivery-count u32 嘗試傳遞訊息的次數
creation-time time 訊息建立時的時間戳(由寄件者提供)
message-id string 郵件身分識別(寄件者提供)
user-id 字串 使用者身分識別(由寄件者提供)
correlation-id string 相互關聯身分識別(寄件者提供)
內容類型 字串 決定承載的內容類型
content-encoding 字串 決定承載的內容編碼

承載:任何位元組序列

成功通知

表示用戶端已接受命令來處理

屬性:無

承載:空白

替代通知

原因代碼 狀態 名稱 描述
131 0603 放棄 表示目前不會處理命令,而且未來應該重新傳遞。
131 0100 拒絕​​ 表示客戶端已拒絕命令,且不應該再次嘗試。

虛擬程式代碼範例


-> 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

接收直接方法

接收和處理直接方法呼叫

Request

主題名稱: $iothub/methods/{name}

屬性:無

承載:任何位元組序列

成功回應

Property:

名稱 類型​​ 必要 描述
response-code u32

承載:任何位元組序列

替代回應

狀態 名稱 描述
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

Property:

名稱 類型​​ 必要 描述
version u64 符合此更新所需狀態的版本

Payload:TwinState

虛擬程式代碼範例


-> SUBSCRIBE
    - Topic: $iothub/twin/patch/desired
      QoS: 0
<- PUBLISH
    QoS: 0
    Topic: $iothub/twin/patch/desired
    version: <u64>
    Payload: ...

傳送遙測

將訊息張貼至遙測通道 - 根據預設,事件中樞或其他端點會透過路由設定。

訊息

主題名稱: $iothub/telemetry

Property:

名稱 類型​​ 必要 描述
內容類型 字串 會轉譯為 content-type 張貼訊息上的系統屬性
content-encoding 字串 會轉譯為 content-encoding 張貼訊息上的系統屬性
message-id string 會轉譯為 message-id 張貼訊息上的系統屬性
user-id 字串 會轉譯為 user-id 張貼訊息上的系統屬性
correlation-id string 會轉譯為 correlation-id 張貼訊息上的系統屬性
creation-time time 會轉譯為 iothub-creation-time-utc 張貼訊息上的屬性

提示

的格式 creation-time 必須是UTC,且沒有時區資訊。 例如,2021-04-21T11:30:16Z 為有效,而 2021-04-21T11:30:16-07:00 為無效。

承載:任何位元組序列

成功通知

已成功將訊息張貼至遙測通道

屬性:無

承載:空白

替代通知

原因代碼 狀態 名稱 描述
131 0100 不正確的要求 作業訊息的格式不正確且無法處理。
135 0101 未獲授權 用戶端未獲授權執行作業。
131 0102 不允許 不允許作業。
131 0601 伺服器錯誤 內部伺服器錯誤
151 0501 調整執行速度 每個 SKU 的要求速率太高
151 0502 超過配額 超過每個目前 SKU 的每日配額
131 0602 Timeout 作業在完成之前逾時
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

回覆

不正確的要求

作業訊息的格式不正確且無法處理。

原因碼: 131

地位: 0100

Property:

名稱 類型​​ 必要 描述
reason 字串 包含有關訊息特定無效的資訊

承載:空白

衝突

作業與另一個進行中的作業發生衝突。

原因碼: 131

地位: 0103

Property:

名稱 類型​​ 必要 描述
trace-id 字串 追蹤標識碼,用於與其他錯誤的診斷相互關聯
reason 字串 包含有關訊息特定無效的資訊

承載:空白

不允許

不允許作業。

原因碼: 131

地位: 0102

Property:

名稱 類型​​ 必要 描述
reason 字串 包含有關訊息特定無效的資訊

承載:空白

未獲授權

用戶端未獲授權執行作業。

原因碼: 135

地位: 0101

Property:

名稱 類型​​ 必要 描述
trace-id 字串 追蹤標識碼,用於與其他錯誤的診斷相互關聯

承載:空白

找不到

要求的資源不存在

原因碼: 131

地位: 0504

Property:

名稱 類型​​ 必要 描述
reason 字串 包含有關訊息特定無效的資訊

承載:空白

未修改

資源未根據提供的前置條件進行修改。

原因碼: 0

地位: 0001

屬性:無

承載:空白

先決條件失敗

不符合前置條件,導致要求遭到取消

原因碼: 131

地位: 0104

屬性:無

承載:空白

超過配額

超過每個目前 SKU 的每日配額

原因碼: 151

地位: 0502

屬性:無

承載:空白

資源用盡

資源沒有容量可完成作業

原因碼: 131

地位: 0503

Property:

名稱 類型​​ 必要 描述
reason 字串 包含有關訊息特定無效的資訊

承載:空白

伺服器忙碌

伺服器忙碌中

原因碼: 131

地位: 0603

Property:

名稱 類型​​ 必要 描述
trace-id 字串 追蹤標識碼,用於與其他錯誤的診斷相互關聯

承載:空白

伺服器錯誤

內部伺服器錯誤

原因碼: 131

地位: 0601

Property:

名稱 類型​​ 必要 描述
trace-id 字串 追蹤標識碼,用於與其他錯誤的診斷相互關聯

承載:空白

目標失敗

目標已回應,但回應無效或格式不正確

原因碼: 131

地位: 06A2

Property:

名稱 類型​​ 必要 描述
reason 字串 包含有關訊息特定無效的資訊

承載:空白

目標逾時

等候目標完成要求的逾時

原因碼: 131

地位: 06A1

Property:

名稱 類型​​ 必要 描述
trace-id 字串 追蹤標識碼,用於與其他錯誤的診斷相互關聯
reason 字串 包含有關訊息特定無效的資訊

承載:空白

目標無法使用

無法連線到目標以完成要求

原因碼: 131

地位: 06A0

屬性:無

承載:空白

調整執行速度

每個 SKU 的要求速率太高

原因碼: 151

地位: 0501

屬性:無

承載:空白

Timeout

作業在完成之前逾時

原因碼: 131

地位: 0602

Property:

名稱 類型​​ 必要 描述
trace-id 字串 追蹤標識碼,用於與其他錯誤的診斷相互關聯

承載:空白