在本博客系列的第一部分中,我們討論了物聯網(IoT) 的關鍵組成部分是分散式通信,并研究了網狀網絡如何消除實現工業 4.0 的許多障礙。一旦設備擁有強大的通信媒介,下一個挑戰就是讓所有設備都使用通用語言。
一種越來越流行的機制,設備可以通過這種機制在它們之間交換數據和發送命令,這是一種稱為 RESTful API 的框架。首先,讓我們拼出首字母縮略詞。REST 代表 Representational State Transfer,API 代表應用程序編程接口。對于我們這些認為自己是硬件人員而不是軟件或 Web 開發人員的人來說,讓我們探索一種可能過于簡單的方式來理解嵌入式電子環境中的 REST 和 API。讓我們從 API 開始。API 是許多 Web 服務發布的一種軟件機制,作為第三方開發人員以可控和定義明確的方式安全地與其系統交互的一種方式。例如,如果您曾經使用過第三方 Twitter 應用程序,那么您就間接地利用了 Twitter API。
REST 是一種機制,支持互聯網的設備可以通過這種機制通過來回傳輸看似統一資源定位器 (URL)的內容來與其他設備或服務器通信。無需過于挑剔,在許多流行的基于 REST 的物聯網開發平臺 API 中找到的文檔通過技術上更合適的標題統一資源標識符或 URI 來引用它們。
好吧,讓我們將其付諸實踐。假設我們要創建一個網站。在那個網站上,我們想創建一個表單,允許我們通過互聯網遠程打開和關閉 LED。
下面的代碼片段讓我們了解了 Post 方法的格式:
告訴您的設備要做什么!
打開 LED。
關閉 LED。
注意方法=“POST”。這是 RESTful API 利用的 HTTP 方法的示例。其他方法包括 GET、PUT、PATCH 和 DELETE。在許多提供 RESTful API 的物聯網嵌入式設備中,POST 和 GET 方法可能是最常用的兩種方法。POST方法用于向Web服務器推送數據,GET是向Web服務器請求數據的方法。因此,在我們上面的示例中,POST 方法是一種機制,通過這種機制,最終用戶對網站表單的點擊被發送到 Web 服務器,而 Web 服務器又向 IoT 設備發出適當的命令。
GET 請求呢?假設我們是連接到執行器的端點設備。我們執行機械動作的決定取決于遠處的溫度。在這種情況下,端點將通過 GET 方法請求存儲在 Web 服務器上的溫度值。
下面的代碼片段讓我們了解了 GET 方法的格式:
WiFiClient客戶端;
const char DeviceToken[] = "MY_ID_TOKEN";
const String httpRequest1 = "GET /api/v1.6/devices/Arduino101_MBA/temperature/values?page_size=1&vertical-align: inherit;"> const String httpRequest2 = " HTTP/1.1rn"
"主機:things.ubidots.comrn"
"連接:關閉rnrn";
出于所有意圖和目的,我們正在創建特制字符串,這些字符串將通過設備的 Wi-Fi 連接與網絡服務器進行通信。這些字符串是 Web 服務器識別的 GET 請求,反過來,將以必須由端點解析的字符串中的數據響應。響應 GET 請求時,JavaScript 對象表示法 (JSON) 等輕量級數據交換格式是從服務器向客戶端發送信息的首選方法。許多嵌入式平臺都有 JSON 庫來幫助解析。
在下面的代碼片段中,字符串變量行將保存服務器在遠程處理 GET 請求后發回的 JSON 數據包。
字符串行 = "";
client.print(httpRequest1+DeviceToken+httpRequest2);
延遲(500);
while(client.connected()) {
line.concat(client.readStringUntil('n'));
}
為了提取網絡服務器傳遞給執行器端點的溫度值,必須解析該字符串。
當硬件工程師試圖描述 REST 時,可能有許多軟件和 Web 開發人員會睜大眼睛閱讀這篇文章。嵌入式工程師同行的重點是了解 RESTful API 正迅速成為物聯網設備通信的首選方法,因為它們高度靈活、可擴展、可移植、能夠處理多種數據交換格式,可以說更容易開發和提供比簡單對象訪問協議 (SOAP) 等替代方案具有更好的性能。簡而言之,嵌入式工程師和固件開發人員至少應具備該技術的應用知識。當與從事相關移動和網絡應用程序工作的同事進行設計討論時,這種理解將被證明是有用的。
現在就這些了,但請記得回來查看本系列博客的第三部分,屆時我們將討論邊緣計算和物聯網。
審核編輯:湯梓紅
-
物聯網
+關注
關注
2914文章
44945瀏覽量
377124 -
API
+關注
關注
2文章
1511瀏覽量
62408 -
Restful
+關注
關注
0文章
11瀏覽量
3554
發布評論請先 登錄
相關推薦
評論