談到物聯網 (IoT),云在允許開發人員在邊緣設備和遠程數字服務之間分配計算方面發揮著重要作用。這種架構為多種解決方案開辟了潛力,其中設備和云服務使用高效協議在當今的高速通信通道上協同工作。當然,支持所有這些需要從物理層到應用層的強大雙向通信。
在本博客中,我們將簡要回顧有助于促進 IoT 通信的常見傳輸層和應用層協議,然后了解如何讓 IoT 邊緣設備與 Microsoft Azure 和 AWS IoT 進行通信。
物聯網連接協議
無論邊緣到云的物聯網通信變得多么復雜,這一切都歸結為設備和遠程服務之間通過互聯網進行的雙向數據通信。
從傳輸層開始,設備到云的通信通常通過 TCP(傳輸控制協議)或 UDP(用戶數據報協議)通道進行。TCP 是面向連接且可靠的,這意味著發送的每個數據包都需要確認它已被接收。但是,高可靠性帶來了巨大的開銷,有時對于物聯網應用程序,TCP 標頭可能大于有效負載本身。另一方面,UDP 是無連接且不可靠的,這意味著它允許丟失數據包以提高速度。TCP 用于數據必須通過的地方,而 UDP 用于可以接受一些數據丟失的地方(例如,當流式傳輸視頻時)。
在應用層,HTTP(超文本傳輸協議)已經成為基于網絡的通信最標準化的協議之一。它是作為客戶端-服務器時代的請求-響應模型開發的,其中客戶端(例如,瀏覽器)打開 TCP 連接以將請求發送到返回響應的服務器(例如,Web 服務器)。TLS 通常用于保護 TCP 上的 HTTP 通信,而 DTLS 通過 UDP 執行類似的功能。IoT 設備可以使用此設置與使用 RESTful/SOAP Web 服務的 Web 服務器進行通信。
例如,設備可以使用 HTTP GET/POST 方法通過 TCP/IP 連接與服務器通信,并以 XML、JSON 或其他格式傳送有效負載。每個步驟(TCP/IP、HTTP、XML/JSON)都會不斷增加負載的開銷,這是最終應用程序正在尋找的唯一相關信息。
因此,另一種應用層協議MQTT(消息隊列遙測傳輸)在物聯網中變得流行起來。它是一種輕量級協議,代碼占用空間小,適用于嵌入式物聯網設備等受限環境。最值得注意的是,它適用于發布-訂閱模型,該模型通過中央 MQTT“代理”促進設備之間的一對多通信——這正是物聯網通常需要的通信類型!
了解了這些底層協議后,現在讓我們看看邊緣到云的通信是如何工作的。在本博客中,我們將以Qualcomm? MDM9206 LTE 調制解調器和Qualcomm? Snapdragon? 移動平臺為例,因為它們說明了制造商從硬件級別一直到 API 通信堆棧的支持如何促進物聯網到云的開發。
將 MDM9206 LTE 調制解調器物聯網設備連接到 Azure
MDM9206 是一種相當專業的設備,通常與另一個處理器一起用作調制解調器。
為了促進通信,您可以使用Qualcomm? LTE for IoT SDK,它支持 TLS、DTLS、MQTT 和 HTTP,并提供“墊片層”用于連接到Azure IoT Hub。
此填充層包括 Azure 輸入/輸出 (I/O) 和平臺填充層庫,作為用戶空間中ThreadX平臺上的 Azure 應用程序開發包的一部分。Azure 應用程序使用 Microsoft Azure SDK 定義的 API 與 Azure IoT SDK C 模塊進行交互。Azure IoT SDK C 模塊使用適配器層與 ThreadX IoT 堆棧進行交互。下圖展示了 ThreadX IoT 設備上的 Azure 應用架構:
ThreadX 設備上 Azure 應用程序的體系結構。
此 shim 層還包括許多腳本,這些腳本設置構建環境來為您的設備構建應用程序。
使用 MDM9206 LTE 調制解調器將 IoT 設備連接到 AWS IoT
該開發工具包還可用于使用 MQTT 消息與 AWS IoT 進行通信。GitHub 上有一個演示和項目,提供了一些很棒的資源:IoT Merchandise Cart和Merchandise -cart-aws-iot 項目。
將您的設備連接到 AWS IoT 所涉及的關鍵步驟是:
創建 EC2 實例并啟用正確的端口
將應用程序添加到 EC2 實例
從 AWS IoT 獲取應用程序的證書和私鑰
構建設備端應用程序并將其與證書和私鑰以及任何其他支持文件一起傳輸到設備
啟動瀏覽器并導航到您的 AWS IoT 應用程序
在設備上運行應用程序
如果您有興趣了解更多信息,請查看項目的示例應用程序模塊,以通過 MQTT 將庫存水平發布到 EC2。您還可以通過查看aws_iot_mqtt*.c 文件來了解 MQTT 通信的工作原理。
將在 Snapdragon 平臺上運行的基于 Linux 的 IoT 設備連接到 AWS IoT
Snapdragon 移動平臺為物聯網解決方案提供了更廣泛的功能。它們還使開發人員能夠集成以各種編程語言編寫的更高級別的 SDK 和庫。
使用 MQTT 的基于 Snapdragon 的設備和 AWS IoT 之間的通信可以通過其中一個 AWS IoT SDK(例如AWS IoT Device SDK for Python) 來完成。
連接到 AWS IoT 所涉及的關鍵步驟是:
1. 在 AWS 中創建一個項目
創造一個“東西”
將“事物”連接到設備
選擇編程語言
生成證書和策略并將它們添加到項目中
2. 在客戶端/設備上安裝 AWS IoT 所需的 SDK
3. 使用以下實現創建設備端應用程序:
將 AWS 模塊添加到客戶端代碼
在傳遞私鑰和證書的代碼中實例化客戶端
開始連接
訂閱主題并指定回調以接收回信息
根據您的應用要求發布消息
結論
通過標準 OSI 模型協議工作的設備到云通信為云服務提供了支柱。物聯網設備到云的連接可以在 MDM9206 LTE 調制解調器等專用硬件和 Snapdragon 移動平臺等更通用的設備上實現。
更一般地說,這種設備到云架構提供了一組豐富的選項,用于在物聯網設備和/或云上進行處理。然而,歸根結底,關鍵在于您可以如何通過互聯網在設備和遠程服務之間實現雙向數據通信。
審核編輯:郭婷
-
互聯網
+關注
關注
54文章
11152瀏覽量
103264 -
IOT
+關注
關注
187文章
4207瀏覽量
196728 -
AWS
+關注
關注
0文章
432瀏覽量
24360
發布評論請先 登錄
相關推薦
評論