咱們都必須面對挑戰,尤爲是來自物聯網的挑戰!本文旨在剖析物聯網項目中須要關注的三大挑戰:迴歸,測試和模擬。git
如下爲譯文:數據庫
當今,物聯網面臨的最大難題是以下的三大技術挑戰:編程
在本文中,咱們將詳細介紹全部物聯網平臺都必須面對的三大基本問題。做爲如何在現實環境中解決這些問題的一個實例,讓咱們看看Thingsquare物聯網平臺是如何解決這些問題的。後端
在存在大量設備的狀況下,即便是正常狀況下不太可能發生的問題,也有可能發生。安全
規模:當規模足夠大時,一切都難以預料網絡
許多物聯網的部署涉及到數百或數千個獨立設備。在存在大量設備的狀況下,即便是正常狀況下不太可能發生的問題,也有可能發生。編程語言
大型網絡在實地很難監控,而在其開發過程當中更具挑戰性。工具
在Thingsquare,當咱們討論物聯網的開發時,咱們根據規模將其分爲以下幾類:測試
在Thingsquare,咱們用來應對這些挑戰的策略是:spa
模擬
在處理一個大型系統時,人們對系統中正在發生的事情,幾乎沒有可見性。當處理物聯網設備時,因爲它們是無線的,而且沒有太多存儲和傳輸日誌的能力,它們的可見性甚至更低。
模擬是解決這一問題的重要方法。咱們在以下幾個層面使用模擬:
測試牀開發
模擬是一個強大的工具,但它不能替代在實際硬件上的開發工做。有時你須要開發一個物理傳感器或驅動器。這時候你須要和真正的硬件交互。但更重要的是,模擬器的行爲方式與現實世界不一樣。若是你徹底在模擬中開發你的解決方案,當面對現實的時候,它頗有可能會崩潰。
在Thingsquare辦公室,咱們有一套規模愈來愈大的測試牀,它包括:
咱們使用咱們的測試牀來開發新的功能,並不斷測試咱們的系統。咱們可使用它們來複制咱們在客戶部署中看到的行爲。咱們也能夠在測試模式中使用它們來運行比咱們辦公室實際可以容納的更大型的網絡。
輕量級崩潰報告
軟件都有可能崩潰,尤爲是在開發過程當中。當軟件崩潰時,崩潰報告能夠幫助開發人員瞭解代碼崩潰的位置和緣由。對於低功耗物聯網設備,想要在其上存儲和傳輸徹底崩潰時保存的內存數據,幾乎不太可能。
在Thingsquare,咱們使用一種輕量級技術從設備處收集崩潰報告:
這使得構建一個包含致使崩潰的內存地址和崩潰發生時的特定代碼版本的數據庫成爲可能。有了這個數據庫,開發人員就能夠很方便地調查並肯定致使崩潰的緣由,而後解決問題。
迴歸測試
迴歸測試是一種標準的軟件開發技術,能夠確保軟件在開發過程當中不會崩潰。
物聯網平臺由許多類型的組件(從後端軟件到無線設備)組成。要執行迴歸測試,每一個組件都須要進行各自的測試,同時也須要做爲一個總體進行測試。
在Thingsquare,咱們使用模擬器對系統所作的每個更改執行全平臺迴歸測試。在迴歸測試經過以後,咱們再在測試牀上測試系統。迴歸測試套件旨在捕獲致命的錯誤,而這些錯誤可能會致使測試臺沒法工做。
功耗:很低很低!
物聯網可能功能強大,但幾乎沒有什麼設備像物聯網設備那樣功耗低!
物聯網設備一般是無線設備,它們須要依靠普通電池或太陽能電池上提供電力來運行。這些電池提供的電力很弱,很是弱。功耗一般必須不高於電池的自發放電,將功耗下降到如此低水平既是一門科學,也是一門藝術。科學之處在於如何經過使用軟件或硬件來測量和了解功耗。而藝術這處則在於瞭解如何充分利用此信息。
功耗既是硬件問題,也是軟件問題。硬件須要進行正確的調校,並支持儘量多地關閉組件。而軟件賜須要知道關閉什麼,什麼時候關閉以及什麼時候能夠安全地這樣作。
在物聯網中,最棘手的部分一般是無線通訊。無線電傳送會消耗大量電能,但它相當重要,所以不能盲目關閉。無線電波在接收時消耗的功率與發送時消耗的功率相同。隨着網絡規模的擴大,這一點變得愈來愈重要。
在Thingsquare平臺中,咱們使用多種技術來解決功耗問題:
基於硬件的功耗測量
第一步是肯定原始硬件的功耗。最好的方法之一就是使用一種叫作Otii的裝置。咱們不只須要查找硬件中可能致使功耗增長的錯誤,並且還要肯定硬件各個組件所消耗的基準功耗。
然而,測量一臺設備的功耗並不能讓咱們看到整個網絡的功耗。所以,咱們須要進行持續的測量。
基於軟件的功耗測量
基於軟件的功耗測量讓咱們可以連續跟蹤每一個設備的功耗。
由於軟件能夠徹底控制硬件,因此咱們只須要測量每一個組件打開的時間就能夠很好地估算總功耗。每一個設備都會按期報告此數據。
壽命估算
由於咱們如今能夠跟蹤每一個設備的功耗,因此咱們可使用它來估算每一個設備的壽命。
具備異常檢測的功耗跟蹤
隨着設備數量的增加,監視單個設備的功耗變得愈來愈困難。所以,咱們須要引入自動化工具。
咱們從每一個設備上收集功耗數據,可使用異常檢測來突出顯示具備異常高功耗的設備。這些設備須要仔細檢查——由於它們可能存在致使高功耗的錯誤,若是咱們在開發過程當中能找到它,那麼在咱們部署解決方案時,它們就不會形成麻煩。
一旦咱們找到了一個有問題的設備,咱們就能夠深刻了解細節,並查看歷史功耗。咱們發現,在幾個時間尺度上對功耗進行平都可以提供有用的信息:一小時的功耗平均值有助於發如今一天中重複出現的問題,而24小時的平均值則有助於發現每週重複出現的問題。
上圖顯示了一個設備的24小時平均功耗。顯然這個設備在4月份的幾天裏耗電量出現性異常。
一旦咱們發現了存在的問題,咱們就能夠更加深刻地研究爲何會發生這種問題。若是咱們不具有識別這種問題的能力,那麼這種問題就不會被發現,而後它們就會悄悄進入生產環境。
無線通訊:難以控制
不少物聯網都使用無線網絡。而無線通信難以控制。
理解無線通訊的一種方法是把它想象成光同樣:它會反射並以意想不到的方式被遮擋。無線覆蓋可能在一個地方很好,但僅僅一步之遙就不行了。就像燈發出的光,即便在靠近燈的地方也可能被遮住同樣。
若是有東西擋在無線信號傳輸的路上,無線信號傳輸可能就會阻塞。許多物聯網解決方案部署的位置不可避免地會有物體移動。若是某個大的物體正好在通訊路徑上移動,那麼該通訊路徑可能會被堵塞。
無線通訊也受到其餘無線通訊的嚴重影響。不一樣的頻率有不一樣的干擾量。2.4 GHz頻段,包括了WiFi和藍牙信號,是一個特別難進入的頻段。這就是爲何許多設備使用其餘頻段(如亞GHz頻段)進行通訊。
在Thingsquare系統中,咱們採起如下措施來應對這些挑戰:
網狀組網技術
網狀組網技術是這樣的一種技術:一個設備經過重複發送來自其餘設備的消息,來幫助其餘設備達到更遠的距離。
這種技術並不要求每一個設備都在接入點的範圍以內,它容許設備伸展到更大的區域。同時它還容許網絡自動繞過障礙物。
Thingsquare平臺使用支持RPL網格路由協議的IPv6組網技術。全部節點都會不斷地測量到其鄰居接點的鏈接質量,若是發現質量更好的連接,則能夠從新排列路由圖。
網格的造成和維護過程是徹底自動化的。所以,只需將擴展器放入網絡,就能夠將網絡擴展出去。
跳頻技術
跳頻技術是一種能夠避免在一個特定的無線信道上花費太多時間的方法。這是必需的,由於該信道可能被其餘通訊所佔用。對於某些頻率範圍,跳頻是一項監管要求,不能正確切換頻道的設備將被禁止部署。
Thingsquare平臺採用跳頻技術,它既符合監管要求,又能在同一位置支持多個網絡。每一個網絡都有本身的躍點調度,這使得網絡之間的干擾儘量少。獨立的網絡須要不一樣的安全密鑰,可是保持通訊頻率的獨立使系統更加高效。
結論
物聯網是一個重大的技術挑戰,由於其龐大的部署規模,功耗需求和無線通訊的使用。
幸運的是,經過使用物聯網平臺,你不須要直接面對這些挑戰。由於這些問題應該已經被平臺解決。