在IoT领域,8266作为一款SOC系统和无线网络适配器被广泛应用。和其它能够使用8位微控制器的芯片不同,8266集成了一个完整的Wi-Fi系统和TCP/IP协议栈。这个芯片拥有许多有用的功能和能够轻松管理的GPIO引脚。并且它还具有低功耗模式,可供注入电池使用,并且只需要轻微的电压即可提供最高的性能。
在这篇文章中,我们将探讨8266的另一个有用的功能:将JSON数据从服务器获取并解析该数据。JSON数据是使用JavaScript对象表示法编写的数据格式,可以轻松地在JavaScript中处理。但是,使用8266将JSON数据从服务器获取是一个挑战,因为它需要使用WiFiClient和HTTPClient库。
#include#include #include void setup() { Serial.begin(115200); delay(100); WiFi.begin("WiFi名称","wifi密码"); Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); HTTPClient http; // 获取JSON数据并将其作为字符串存储在response中 http.begin("https://opendata.hopefully.works/api/events"); int httpCode = http.GET(); if (httpCode > 0) { String response = http.getString(); Serial.println(response); DynamicJsonDocument doc(1024); deserializeJson(doc,response); const char* eventType = doc["eventType"]; int intValue = doc["intValue"]; float floatValue = doc["floatValue"]; bool boolValue = doc["boolValue"]; Serial.printf("eventType: %s\n",eventType); Serial.printf("intValue: %d\n",intValue); Serial.printf("floatValue: %.3f\n",floatValue); Serial.printf("boolValue: %d\n",boolValue); } http.end(); } void loop() { delay(5000); }
这是一个将JSON数据从服务器获取并解析该数据的示例Arduino代码。在这个代码中,WiFi.begin()
使用Wi-Fi库声明WIFI名称和密码,这里需要填上Wifi的名称和密码。HTTPClient是用于发送HTTP请求并获取服务器响应的HTTP客户端库。
http.begin()
在这里设置服务器端点端点(https://opendata.hopefully.works/api/events),能够获得API端点的JSON格式的数据将被接收并存储成字符串response
中。
ArduinoJson库通过其deserializeJson()
函数解析从HTTP客户端获取到的请求。此函数需要两个参数,需要反序列化的动态JSON文档和JSON数据字符串。
接下来,使用doc[]
来获取JSON数据中的字段。这些字段可以是String、int、float或bool类型。这些字段的值可以使用printf()
仿真输出到串行端口。
最后,http.end()
方法结束HTTP客户端请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。