全部產品
Search
文件中心

IoT Platform:什麼是Topic

更新時間:Jun 30, 2024

在發布/訂閱訊息的MQTT協議中,Topic用於定義訊息傳輸的通道和路徑,裝置通過Topic將訊息發布到物聯網平台,物聯網平台將訊息發送給訂閱Topic的裝置。為方便海量裝置基於Topic進行通訊,簡化授權操作,物聯網平台定義了產品Topic類和裝置Topic。本文介紹MQTT協議的原理、Topic的概念及分類。

工作原理

在上圖中分為裝置、物聯網平台和商務服務器三端,其中裝置和物聯網平台的通訊基於MQTT協議。

  • MQTT(Message Queuing Telemetry Transport)是一種基於發布/訂閱模型的訊息傳輸協議,具有低開銷、高拓展、協議簡單、雙向通訊等優點,可以利用較少的裝置資源和網路資源實現可靠、高效的長串連,被廣泛應用於物聯網領域。目前物聯網平台支援5.0、3.1.1和3.1版本MQTT協議,協議規範請參見MQTT協議規範

  • MQTT用戶端(Client)MQTT代理者(Broker)

    • MQTT用戶端(Client):本文的用戶端(Client)指接入物聯網平台的裝置。裝置和使用者的伺服器不直接建立串連,而是通過代理者(Broker)進行通訊。

    • MQTT代理者(Broker):本文的MQTT代理者(Broker)指阿里雲物聯網平台。代理者(Broker)是裝置和商務服務器訊息通訊的中介,解耦了裝置和商務服務器,實現了裝置和商務服務器之間的非同步通訊。

  • MQTT協議訊息的組成部分

    • 主題(Topic):使用正斜杠(/)作為分隔字元構造字串,例如/${productKey}/${deviceName}/user/update,訂閱該Topic的所有裝置都會收到訊息。

    • 訊息內容(Payload):訊息的具體內容。

  • MQTT協議訊息的傳輸過程,以商務服務器向裝置下發訊息為例

    1. 裝置訂閱相應的主題(Topic)。

    2. 伺服器發送訊息給物聯網平台。

    3. 物聯網平台接收訊息,根據訊息的主題(Topic)確定裝置並發送訊息。

    4. 商務服務器收到物聯網平台的訊息,確認訊息已成功發送。

  • MQTT協議的重要參數,更多參數請參見MQTT協議規範

    • Message Service品質(QoS):QoS=0代表物聯網平台只推送一次訊息給訂閱者,QoS=1代表訂閱者收到訊息後必須返回puback給發行者,否則會一直推送訊息。更多資訊,請參見訂閱選項

    • 保活時間:當裝置發起串連時會向物聯網平台發送CONNECT訊息,物聯網平台使用CONNACK訊息進行響應並保持串連,裝置在保活時間間隔內至少需要發送一次報文,否則物聯網平台會斷開與裝置的串連。更多資訊,請參見MQTT保活使用樣本

    • 清除會話:裝置和物聯網的工作階段狀態是臨時或持久。更多資訊,請參見會話到期

使用限制

Topic相關、裝置接入、串連通訊等使用限制,請參見使用限制

Topic類型

詳細的Topic說明,請參見本文末尾的Topic分類和通訊說明

  • 基礎通訊Topic:裝置使用物聯網平台的物模型通訊、OTA升級、任務管理等功能,必須使用的Topic。

  • 物模型Topic:物模型是對裝置實際功能的抽象,從屬性服務事件三個維度,分別描述了該實體是什麼、能做什麼、能提供什麼資訊。例如智能風扇的開關狀態是屬性,開關的操作是服務,警示是事件。物模型的概念和使用,請參見什麼是物模型

  • 自訂Topic:如果物模型不能滿足您的業務需求,可以使用自訂Topic,自訂Topic的前三個類目/ProductKey/${deviceName}/user已固定。管理和使用自訂Topic的操作,請參見使用自訂Topic通訊

產品Topic類和裝置Topic的概念

  • 基礎通訊Topic和物模型Topic由物聯網平台定義,以/sys/ota/shadow開頭。使用物模型Topic通訊,需要先在產品下建立物模型。請參見單個添加物模型大量新增物模型

  • 自訂Topic需要使用者自行建立。產品的自訂Topic類裝置Topic的關係如下圖:

    1. 每個產品只有一個ProductKey,每個ProductKey下有多個Topic類,每個Topic類對ProductKey下所有裝置通用。

    2. 產品Topic類是同一產品下所有裝置的相同功能Topic的集合,以/${productKey}/${deviceName}開頭。

      1. Topic類的功能

        Topic類以正斜線(/)開頭並分隔每個類目,例如:/${productKey}/${deviceName}/user/update${productKey}${deviceName}為固定類目,首碼、尾碼類目用於區分不同功能的訊息。

        • ${productKey}表示產品的標識符ProductKey。在指定產品的Topic類中,需替換為具體產品的ProductKey值例如a19mzP****

        • ${deviceName}表示裝置名稱。在產品Topic類中,${deviceName}代表該產品下所有裝置,不需要替換為實際裝置名稱。

      2. Topic類的操作許可權。許可權的主體是裝置發布許可權代表裝置向該Topic類下的裝置Topic發布訊息,訂閱許可權代表裝置接收物聯網平台的資料。

        • 伺服器接收裝置資料,需要設定Topic類的許可權為發布。

        • 伺服器向裝置下發資料,需要設定Topic類的許可權為訂閱。

          說明

          定義產品Topic類後,需要裝置主動訂閱具有訂閱許可權的Topic,相應Topic才會出現在裝置詳情頁的Topic列表頁簽。

    3. 裝置Topic。添加裝置後,產品的所有自訂Topic類會自動對應到裝置上,產生具體的裝置Topic。產品Topic類定義的操作許可權,會映射到具體的裝置Topic。在產品Topic類基礎上,使用具體的裝置名稱例如device1替換產品Topic類中的${deviceName},得到裝置Topic例如:/a19mzP****/device1/user/update

    4. 裝置Topic歸屬於對應的裝置,可用於訊息通訊。

定義裝置Topic的流程

  1. 物聯網平台控制台,建立產品。具體操作,請參見建立產品

    建立產品後,物聯網平台為該產品預定義了Topic類,包含基礎通訊Topic物模型通訊Topic自訂Topic。在產品詳情頁面,單擊Topic類列表頁簽,查看各功能及其Topic類。

  2. 為產品添加裝置。具體操作,請參見建立裝置

  3. 建立產品的自訂Topic類。具體操作,請參見使用自訂Topic通訊

Topic分類和通訊說明

物聯網平台預定義的產品Topic類對應的裝置Topic包含基礎通訊Topic、物模型通訊Topic和自訂Topic三種類型,詳細說明見下表。

類型

Topic類及資料格式

說明

基礎通訊Topic

OTA升級

裝置OTA升級訊息的Topic,包括裝置上報OTA模組版本、物聯網平台推送升級包資訊、裝置上報升級進度和裝置請求擷取最新升級包資訊。

裝置標籤

上報裝置標籤的Topic,上報裝置的部分資訊,如廠商、裝置型號等。

時鐘同步

NTP服務同步請求和響應的Topic,解決嵌入式裝置資源受限,系統不包含NTP服務,端上沒有精確時間戳記的問題。

裝置影子

裝置影子資料通過Topic進行流轉,包括裝置影子發布和裝置接收影子變更。

配置更新

裝置主動請求配置資訊和物聯網平台推送配置資訊的Topic。

開發人員可在不用重啟裝置或中斷裝置啟動並執行情況下,線上遠程更新裝置的系統參數、網路參數等配置資訊。

廣播

廣播Topic。調用雲端API PubBroadcast向訂閱了該Topic的所有裝置發送廣播訊息,實現批量控制裝置。

物模型通訊Topic

屬性上報

各物模型功能的Topic。

說明

在物聯網平台,不可以調用Pub介面向物模型通訊Topic發送訊息。

在物聯網平台的雲端,通過物模型功能遠端控制裝置,請調用SetDevicePropertySetDevicesProperty設定裝置屬性值;調用InvokeThingServiceInvokeThingsService調用裝置服務。

屬性設定

事件上報

服務調用

自訂Topic

自訂Topic類及格式

系統預設提供了3個自訂Topic類。您可根據業務需求,自訂Topic類。

Topic類是一個Topic模板配置,編輯更新某個Topic類後,可能對產品下所有裝置使用該類Topic通訊產生影響。建議在裝置研發階段設計好,裝置上線後不再變更Topic類。

相關文檔

常見問題