电子说
在本博客系列的第一部分中,我们讨论了物联网(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) 等替代方案具有更好的性能。简而言之,嵌入式工程师和固件开发人员至少应具备该技术的应用知识。当与从事相关移动和网络应用程序工作的同事进行设计讨论时,这种理解将被证明是有用的。
现在就这些了,但请记得回来查看本系列博客的第三部分,届时我们将讨论边缘计算和物联网。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !