天天看點

IoT離線裝置雲端控制指令消息觸達方案IoT離線裝置雲端指令消息觸達方案

IoT離線裝置雲端指令消息觸達方案

前言

由于網絡不穩定,電池容量限制,很多物聯網裝置無法做到24小時線上,裝置頻繁上下線,裝置定時沉睡離線,帶來一個新的問題:在裝置離線時,雲端的控制指令如何發送給裝置,在裝置上線後,能按照新的指令執行業務邏輯?

架構方案

基于以上訴求,我們有兩種通用解決方案:

  • 雲端下發MQTT協定QoS=1的消息
  • 使用IoT物聯網平台的裝置影子功能

方案一:發送QoS=1消息

為了接收離線消息,需要裝置端和雲端配合。

裝置端配置

裝置端建立mqtt連接配接的時候需要配置 CONNECT 參數 CleanSession标志被設定為0,即保留之前建立的session狀态,包括:

  • 用戶端的訂閱資訊
  • 未完成确認的QoS=1的消息。
  • 未發送給用戶端的QoS=1的消息。

雲端的操作

雲端發送控制指令API文檔 

https://help.aliyun.com/document_detail/69793.html
IoT離線裝置雲端控制指令消息觸達方案IoT離線裝置雲端指令消息觸達方案

方案二:裝置影子功能

我們以更新雲列印機運作配置參數為例,介紹通過裝置影子功能來實作配置參數更新過程。

IoT離線裝置雲端控制指令消息觸達方案IoT離線裝置雲端指令消息觸達方案

  • 裝置端需要訂閱 /shadow/get/${YourProductKey}/${YourDeviceName} 以實時擷取雲端控制指令消息。
  • 裝置端CONNECT成功後,主動查詢裝置影子指令,Pub消息到 /shadow/update/${YourProductKey}/${YourDeviceName} 中,payload結構體如下:
    {
    "method": "get"
    }           

雲端使用裝置影子接口UpdateDeviceShadow發送控制指令: 

https://help.aliyun.com/document_detail/69954.html
IoT離線裝置雲端控制指令消息觸達方案IoT離線裝置雲端指令消息觸達方案

完整案例參考 

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

繼續閱讀