1. 程式人生 > >Azure IOT 設備固件更新技巧,看這一篇就夠了

Azure IOT 設備固件更新技巧,看這一篇就夠了

trigger 物聯網平臺 搭建 href ice 有效 面板 調用 創建



嫌長不看版

今天為大家準備的硬菜是:在 Azure IoT 中心創建 Node.js 控制臺應用,進行端到端模擬固件更新,為基於 Intel Edison 的設備安裝新版固件的流程。通過創建模擬設備應用,可實現 firmwareUpdate 直接方法,啟動等待下載固件映像、下載固件映像,最終應用新版固件映像,並在每個階段顯示操作進度。

技術分享



操作細節版

在進行物聯網開發的過程中,很多用戶會遇到這樣的問題:物聯網中的某些邊緣設備上運行的固件存在問題需要修復,準備好新版固件後,如何集中批量部署給所有適合的設備?

答案就是:基於 Azure IoT 技術搭建的物聯網環境,通過 Azure IoT 中心創建一個簡單的 Node.js 控制臺應用就可以滿足要求。

我們需要通過下文介紹的方法創建兩個 Node.js 控制臺應用:

  • dmpatterns_fwupdate_service.js:在模擬設備應用上調用直接方法、顯示響應並定期(每 500 毫秒)顯示更新後的報告屬性。

  • dmpatterns_fwupdate_device.js:使用設備標識連接到 IoT 中心、接收 firmwareUpdate 直接方法、運行一個多狀態過程以模擬固件更新,包括:等待映像下載、下載新映像,最後應用映像。

請先準備好下列內容:

  • Node.js 版本 0.12.x 或更高版本;

  • 有效的 Azure 帳戶。

好了,我們開始。

技術分享

2、在“IoT 中心”邊欄選項卡中,選擇 IoT 中心的配置。 技術分享

名稱:輸入 IoT 中心的名稱;

選擇定價和縮放層:對於本教程,可使用免費 F1 層;

資源組:創建資源組或選擇現有資源組;

位置:選擇托管 IoT 中心的位置。

3、選擇 IoT 中心配置選項後單擊“創建”。Azure 可能需要幾分鐘來創建 IoT 中心,若要查看創建進度,可在“啟動板”或“通知”面板中查閱。

技術分享

4、成功創建 IoT 中心後,在 Azure 門戶中單擊 IoT 中心對應磁貼,打開 IoT 中心的邊欄選項卡。記下“主機名”,然後單擊“共享訪問策略”。

技術分享

5、在“共享訪問策略”邊欄選項卡中,單擊“iothubowner”策略,然後復制並記下“iothubowner”邊欄選項卡中的 IoT 中心連接字符串。 技術分享

技術分享

記下結果中的設備連接字符串。設備應用將使用此設備連接字符串以設備身份連接到 IoT 中心。

技術分享

Step 3:用直接方法觸發更新

隨後創建一個 Node.js 控制臺應用,以便在設備上啟動遠程固件更新。該應用使用直接方法啟動更新,並使用設備孿生查詢來定期獲取活動的固件更新的狀態。

1、新建名為 triggerfwupdateondevice 的空文件夾。在該文件夾的命令提示符處,使用以下命令創建package.json 文件。接受所有默認值: 技術分享

技術分享

9、保存並關閉 dmpatterns_fwupdate_service.js 文件。

第 4 步:創建模擬設備應用程序

接下來需要執行下列操作:

  • 創建一個 Node.js 控制臺應用,用於響應通過雲調用的直接方法

  • 觸發模擬的固件更新

  • 使用報告屬性,允許通過設備孿生查詢標識設備及其上次完成固件更新的時間

具體過程如下: 技術分享

技術分享

技術分享

9、添加通過報告屬性將固件更新狀態更改為“正在下載”的以下函數。然後該函數會模擬固件下載,並最終將固件更新狀態更新為“downloadFailed”(下載失敗)或“downloadComplete”(下載完成): 技術分享

10、添加通過報告屬性將固件更新狀態更改為“正在應用”的以下函數。然後該函數會模擬固件映像應用,並最終將固件更新狀態更新為“applyFailed”(安裝失敗)或“applyComplete”(安裝完成): 技術分享

11、添加處理 firmwareUpdate 直接方法並啟動多階段固件更新過程的以下函數: 技術分享

12、最後添加以下代碼,以便連接到 IoT 中心: 技術分享

註意:為簡化起見,本教程不實現任何重試策略。生產代碼中應按 MSDN 文章 Transient FaultHandling(暫時性故障處理)中所述實施重試策略(例如指數性的回退)。


第 5 步:運行應用

至此已經準備就緒,可以運行應用來更新固件了。步驟如下:

1、在 manageddevice 文件夾的命令提示符處,運行以下命令進行直接重啟方法的偵聽。

技術分享

2、在 triggerfwupdateondevice 文件夾的命令提示符處運行以下命令,以便觸發遠程重啟並查詢設備孿生了解上次重新啟動時間。

技術分享

3、可以在控制臺中看到設備對直接方法的響應。

通過這樣的方式,我們就可以根據需要為物聯網邊緣設備更新固件了。

推 薦 閱 讀

如果你的物聯網平臺使用了 .Net 和 C# 語言,也可以通過類似方式進行更新,具體方法可參閱:

使用設備管理啟動設備固件更新(.NET/Node)

Azure IoT 平臺對不同開發語言、工具和框架提供了完善的支持。你可以使用不同語言完成相同的任務,資源在此:

處理設備到雲的消息:.Net | Java

發送雲到設備的消息:.Net | Java | Node

使用直接方法:Node.js | .Net/Node

計劃和廣播作業:Node.js | .Net/Node

立即訪問http://market.azure.cn

Azure IOT 設備固件更新技巧,看這一篇就夠了