物聯網產品設計,聊聊設備OTA的升級
物聯網產品設計部分的OTA設備固件是一個非常重要的部分,能夠實現升級用戶服務、保障系統安全等功能。
在迅速變化和發展的物聯網市場,新的產品需求不斷涌現,因此對于智能硬件設備的更新需求就變得空前高漲,設備不再像傳統設備一樣一經出售就不再變更。
隨著物聯網技術發展,一個技術變得極為重要,即OTA空中下載技術。物聯網平臺支持通過OTA方式進行設備固件升級,是智能設備修復系統漏洞、實現系統升級的手段,通過固件升級用戶提供更好的服務。OTA固件升級功能不僅能夠更新固件,而且還能重新配置片上硬件資源。同時,設備固件可通過OTA固件升級流程獲得更新的補丁和更多安全算法防范病毒攻擊。
一、OTA固件升級對設備的重要性
物聯網領域具有多樣性,應用和最終解決方案需求也是如此。面對和傳統設備的需求差異,OTA升級顯得尤其重要,主要體現在以下幾方面:
1. 市場端的快速上線需求
天下武功唯快不破,物聯網設備產品往往留給設計者的時間不長,并且市場需要持續不斷地創新和更新功能。在設備設計時,往往會預留一些后加載的需求,先期快速實現一些功能即開始上線,上線后可以通過OTA升級的方式更新更多功能,實現漸進式部署,有那么一點類似于互聯網的敏捷研發了。只要在架構設計階段,在硬件層面考慮到了未來的足夠需求,就不可以源源不斷地優化完善設備功能。
2. 設備部署需求的多樣性
在物聯網產品應用過程中,有個很有意思的事情,設備需要確定推送信息的云主機。那么問題就來了,有可能是一個通用的云主機,也有可能因為部署需要又需要更新推送的云主機,這個時候如果設備已經生產出來了,已經在渠道或者客戶手中,那么OTA固件升級就顯得很重要了。
還有一個比較常見的現象,一些設備在安裝以后,對于輸入輸出部件的控制模式需要變更,那么可能需要對部分設備進行固件升級。比如,一開始在一個城市部署了相同智能路燈的設備,但是某些區域的設備關于燈光強度或者時間性需要做變更,那么OTA固件升級也可以幫助解決燈光控制方式的變更。
備注:如果預留了遠程下行控制指令,且已經支持的,也可以不用升級固件。
3. 設備安全性及完善性
任何物聯網設備不外乎都是兩部分組成的:硬件+固件程序。在基于SoC的應用中,OTA固件升級功能不僅能夠更新固件,而且還能重新配置片上硬件資源。
有了OTA固件升級的備案,那么產品不一定等到完全沒有缺陷再上市,只要在不存在較為致命的缺陷下,就可以提前上市,解決問題后在遠程完成升級修補缺陷。同時基于日益嚴峻的安全形勢威脅,備固件可通過OTA固件升級流程獲得最新補丁和更多安全算法,做到不斷加固的。
二、OTA固件升級流程
1. 升級步驟
step1:云控制平臺添加估計升級需求。
step2:設備在喚醒后上報自己的固件版本。
step3:云端判斷是否需要升級后,下發升級固件包URL。
step4:設備下載固件后進行升級,下載成功后上報結果。
step5:設備升級成功后,上報升級結果及最新版本,云端更新為升級成功。
2. 注意事項及設計要點
1. 設備固件版本信息不需要單獨設置周期性上報事件,在設備重新啟動或者心跳時上報即可。
2. 物聯網平臺添加新的固件版本啟動升級需求后,一直為待升級,直到設備上報升級進度。
3. 升級成功唯一判斷標準是上報的版本號。
4. 設備離線狀態下不能進行升級,需要等到設備上線后上報數據。
5. 設備下載固件后對于升級結果需要上報。
三、云端控制系統設計
1. 固件新增
固件新增主要面向產品進行設計,按照單個產品為單位進行添加,添加固件時不用考慮設備升級的范圍,僅僅作為產品的一個固件包。但是,尤其要主要固件版本的管理,不能低于當前所有該產品運行的設備版本號,并且命名的版本號要與新增填寫時的相同。
新增固件的字段:名稱、版本號、所屬產品、備注。
2. 驗證固件
固件新增加成功后,就可以進行驗證固件操作了。驗證固件是指在系統內小范圍查找一兩個設備進行升級測試,驗證通過后再考慮批量進行操作處理。驗證固件的操作就是在現存該產品的不同版本號的產品中分別選擇最低一個產品進行升級。
驗證固件字段:版本號(采用下來篩選,僅篩選現有產品存在的版本號)、產品編號(通過產品唯一識別號進行查找添加)。
備注:選擇產品編號前需要先確定版本號。
3. 選擇設備批量升級
固件驗證通過后就可以進行批量處理了,批量處理就是在現有的設備范圍內選擇需要升級的設備,同時設置升級策略,比如升級時間、重復次數等。
批量升級可以采用頁面方式按照特定條件進行篩選后處理,也需要能夠采用excel文件導入形式進行處理,excel導入形式主要是為了定向對某一些設備升級,升級設備沒有一定的共性,或者系統內暫時無法通過篩選方式查找出共性。
主要涉及的字段:升級范圍、升級時間、升級策略(失敗后再次間隔時間、重復次數、定時升級等)
4. 查看升級結果
批量執行升級后,回到管理固件的列表,就可以實時查看升級結果,獲取升級情況!
5. 統計數據
在設計固件管理時,還可以對產品的固件分布、升級設備的狀態分布占比等進行一些數據可視化設計,幫助管理員更好的查看和分析。
四、安全性考慮
以上部分其實我們都在說為什么需要OTA固件升級、固件升級的原理是什么、流程是什么、云端控制系統如何設計,但是我們沒有強調其中的一個重要事情“安全性”!安全性希望引起產品和技術人員的足夠重視!
1. 對設備固件進行OTA升級時,通過在空中傳輸,容易遭受攻擊。因此,必需確保主機設備只與相關目標設備通信。
2. 應對空中傳輸的數據進行加密,以便讓其它監聽方無法解碼這些數據。
3. OTA服務是智能設備修復系統漏洞、實現系統升級的手段,擁有非常高的權限,掌握著系統更新的安全命脈。如果OTA升級出現安全問題,可能導致用戶隱私泄露,甚至給用戶帶來生命危險。
五、總結
至此呢,我們就將物聯網產品設計部分的OTA設備固件講完了,希望對其他童鞋有所幫助,也歡迎各路大神指點完善。
ps:最近我們正在籌備成都物聯網&智能硬件產品經驗交流組,組內互幫互助,共同成長,經驗交流歡迎加我個人微信號:liu58liu
作者:Kent,微信公眾號:Liuke2019
本文由 @Kent 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
還有沒???怎么不發了
非常nice!希望答主再寫一篇統計升級結果的帖子?。。。?/p>
感謝分享!有一點疑惑,對于一次升級任務來說,如何判斷升級任務完成,設置升級時限,還是根據設備上報的狀態?
文中有敘述,根據該設備下一次上傳的版本號。但需要考慮的是,設備在升級中盡量需要不影響設備正常使用或超過某一時間閾值,自行斷開升級狀態,回滾之前狀態。
做過一些物聯網硬件對接工作,這塊寫的沒毛病
好棒呀,最近剛好要設計OTA的功能~感謝~
有啟發就好 ??
要是補充點原型就好了
我們主要總結思路,原型給出來干什么呢
估計你會這樣回復我這個小菜鳥 ??
說思路就可以了,原型也需要…
寫的很好,很詳盡啊 ??
前兩天剛上網查了一遍。。。想問一下,固件升級在終端是怎樣的形式?是強制升級嗎?是靜默升級嗎?不知道我問清楚了沒 ??
終端通常都是根據云端需求了,通常強制升級!因為有些設備你跟本無法操作,有些升級必須強制!當然這個主要看你產品屬性和升級需求啊,你也可以設計成可以需要終端確認的方式,或者兩者方式兼容!終端和云端協調設置好就ok