天天看點

IoT物聯網平台通信用Topic梳理

1.前言

IoT物聯網平台基于MQTT協定的Pub/Sub通信,那麼topic和payload設計就很重要。

我們可以定義出不同topic來處理不同業務場景,類似web開發中的API設計。

2.自定義Topic類

2.1 預設自定義Topic

當我們建立産品後,系統會自動生成3個自定義topic,友善我們使用。

Topic 權限 備注
/${ProductKey}/${DeviceName}/user/update 釋出 上報資料
/${ProductKey}/${DeviceName}/user/update/error 上報錯誤事件
/${ProductKey}/${DeviceName}/user/get 訂閱 接收雲端資料

2.2 自定義Topic

預設topic是一個示範,我們可以根據業務需求,自己定義Topic和Payload,來解決現實中的問題。比如下面的示例:

/${ProductKey}/${DeviceName}/user/heart/post 定期上報資料
/${ProductKey}/${DeviceName}/user/bizdata/post 業務觸發上報
/${ProductKey}/${DeviceName}/user/biz/control 接收雲端指令
/${ProductKey}/${DeviceName}/user/config/modify 接收裝置配置變更

對于裝置上報資料,我們可以把不同優先級的消息做分類,通過規則引擎流轉分流到不同隊列,給予不同處理資源,避免重要業務消息延遲過高。

對于雲端指令接收,我們也可以區分業務指令和配置指令,給予不同優先級。

3.系統Topic清單

3.1 裝置影子 

用于實作裝置影子功能,需要使用如下topic

/shadow/update/${ProductKey}/${DeviceName} 更新裝置影子 QoS=1
/shadow/get/${ProductKey}/${DeviceName} 擷取裝置影子

裝置影子可以實作裝置的運作參數的配置更新功能。

3.2 固件更新

/ota/device/inform//${ProductKey}/${DeviceName} 上報目前固件版本
/ota/device/upgrade/${ProductKey}/${DeviceName} 接收OTA資訊
/ota/device/progress/${ProductKey}/${DeviceName} 上報OTA進度
/ota/device/request/${ProductKey}/${DeviceName} 主動請求OTA資訊

3.3 廣播

/broadcast/${YourProductKey}/+ 接收廣播資訊

同一産品的裝置,可以接收到雲端的廣播指令,由于IoT平台限制廣播最大觸達1000個裝置。

這裡我們可以把裝置按規則做分組,不同組裝置自動訂閱不同group的topic,比如:

  • /broadcast/${YourProductKey}/group/a 
  • /broadcast/${YourProductKey}/group/b

3.4 RRPC通信

使用下面topic,IoT平台實作了基于mqtt協定的雲端發起對裝置的同步RPC調用

/sys/${ProductKey}/${DeviceName}/rrpc/request/+ 接收RRPC調用
/sys/${ProductKey}/${DeviceName}/rrpc/response/${msgId} 響應msgId對應RRPC請求

3.5 裝置标簽

使用裝置标簽topic可以動态給裝置添加運作時标簽

/sys/${ProductKey}/${DeviceName}/thing/deviceinfo/update 更新裝置标簽

3.6 遠端配置

/sys/${ProductKey}/${DeviceName}/thing/config/get 主動查詢配置資訊
/sys/${ProductKey}/${DeviceName}/thing/config/push 接收配置資訊
/sys/${ProductKey}/${DeviceName}/thing/config/get_reply

4.物模型通信

4.1 物模型JSON資料通信

/sys/${ProductKey}/${DeviceName}/thing/event/property/post 上報屬性資料
/sys/${ProductKey}/${DeviceName}/thing/event/property/post_reply 接收傳回結果
/sys/${ProductKey}/${DeviceName}/thing/event/{identifer}/post 上報事件資料
/sys/${ProductKey}/${DeviceName}/thing/event/{identifer}/post_reply
/sys/${ProductKey}/${DeviceName}/thing/service/property/set 接收屬性設定指令
/sys/${ProductKey}/${DeviceName}/thing/service/property/set_reply 傳回處理結果
/sys/${ProductKey}/${DeviceName}/thing/service/{identifer} 接收服務調用指令
/sys/${ProductKey}/${DeviceName}/thing/service/{identifer}_reply 傳回服務處理結果

4.2 物模型透傳資料通信

/sys/${ProductKey}/${DeviceName}/thing/model/up_raw
/sys/${ProductKey}/${DeviceName}/thing/model/down_raw

更多資訊參考:

https://www.yuque.com/cloud-dev/iot-tech/kg84mi

繼續閱讀