Azure IOT 設備固件更新技巧,看這一篇就夠了
嫌長不看版
今天為大家準備的硬菜是:在 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 設備固件更新技巧,看這一篇就夠了