{"id":612,"date":"2022-11-21T20:58:26","date_gmt":"2022-11-21T12:58:26","guid":{"rendered":"http:\/\/wordpress.loc\/?p=612"},"modified":"2023-03-17T15:08:52","modified_gmt":"2023-03-17T07:08:52","slug":"esp32_ch1-15","status":"publish","type":"post","link":"https:\/\/www.nmking.io\/index.php\/2022\/11\/21\/612\/","title":{"rendered":"\u7b2c10\u7bc7 ESP32 WiFi\u7db2\u8def\u9023\u7dda\u6293\u53d6\u5373\u6642\u7a7a\u6c23\u54c1\u8cea\u8cc7\u8a0a"},"content":{"rendered":"\n<figure class=\"wp-block-pullquote\"><blockquote><p>\u672c\u7ae0\u4ecb\u7d39\u5982\u4f55\u4f7f\u7528ESP32\u5167\u5efa\u7684WiFi\u6a21\u7d44\u9023\u4e0a\u7db2\u8def\uff0c\u4e26\u4e0a\u7db2\u6293\u53d6\u74b0\u4fdd\u7f72\u63d0\u4f9b\u7684\u5373\u6642\u7a7a\u6c23\u54c1\u8cea\u7b49\u8cc7\u6599<\/p><\/blockquote><\/figure>\n\n\n\n<div class=\"wp-block-ht-block-toc is-style-rounded htoc htoc--position-wide toc-list-style-plain\" data-htoc-state=\"expanded\"><span class=\"htoc__title\"><span class=\"ht_toc_title\">Table of Contents<\/span><span class=\"htoc__toggle\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\"><g fill=\"#444\"><path d=\"M15 7H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z\"><\/path><path d=\"M15 1H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 13H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z\"><\/path><\/g><\/svg><\/span><\/span><div class=\"htoc__itemswrap\"><ul class=\"ht_toc_list\"><li class=\"\"><a href=\"#htoc-wifiscan\">\u4e00\u3001WiFiscan\u7db2\u8def\u6383\u63cf<\/a><\/li><li class=\"\"><a href=\"#htoc-httpclient-pm2-5\">\u4e8c\u3001HTTPClient\u6293\u53d6\u7a7a\u6c23\u54c1\u8cea\u8cc7\u8a0a<\/a><\/li><li class=\"\"><a href=\"#htoc-json\">\u4e09\u3001JSON\u8cc7\u6599\u89e3\u6790<\/a><ul class=\"ht_toc_child_list\"><li class=\"\"><a href=\"#htoc-json1\">JSON\u7269\u4ef6\u7d50\u69cb\u8aaa\u660e<\/a><\/li><li class=\"\"><a href=\"#htoc-arduniojson\">ArdunioJson\u51fd\u5f0f\u5eab\u8aaa\u660e<\/a><\/li><\/ul><\/li><\/ul><\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>\u5be6\u505a\u8aaa\u660e<\/p>\n\n\n\n<p>\u672c\u7ae0\u4ecb\u7d39\u5982\u4f55\u4f7f\u7528ESP32\u5167\u5efa\u7684WiFi\u6a21\u7d44\u9023\u4e0a\u7db2\u8def\uff0c\u4e26\u4e0a\u7db2\u6293\u53d6\u5373\u6642\u7a7a\u6c23\u54c1\u8cea\u8cc7\u6599\u986f\u793a\u5728\u5e8f\u5217\u57e0\u4e0a\uff0cESP32\u4f7f\u7528\u7db2\u8def\u6a21\u7d44\u975e\u5e38\u7c21\u55ae\uff0c\u5229\u7528WiFi\u51fd\u5f0f\u5eab\u9023\u4e0a\u7db2\u8def\uff0c\u4e26\u7528HTTPClient\u6a21\u64ec\u4e00\u500b\u700f\u89bd\u5668\uff0c\u5c31\u53ef\u4ee5\u4e0a\u7db2\u6293\u53d6\u7db2\u9801\u8cc7\u6599\uff0c\u4e0d\u904e\u70ba\u4e86\u8b93\u8b80\u8005\u4e86\u89e3ESP32 WiFi\u7684\u904b\u4f5c\u539f\u7406\uff0c\u6211\u5011\u6703\u5148\u5f9eWiFiscan\u9019\u500b\u7bc4\u4f8b\u958b\u59cb\u4e0a\uff0cWiFiscan\u5c31\u662f\u6383\u63cf\u7db2\u8def\u7684\u610f\u601d\uff0c\u5c31\u50cf\u6211\u5011\u624b\u6a5f\u958b\u555fWiFi\u529f\u80fd\u6642\uff0c\u6703\u5148\u5217\u8868\u9644\u8fd1\u6383\u63cf\u5230\u7684\u7db2\u8def\u540d\u7a31\u53ca\u8a0a\u865f\u5f37\u5ea6\uff0cWiFiscan\u5c31\u662f\u9019\u6a23\u7684\u529f\u80fd\uff0c\u6211\u5011\u6383\u63cf\u5230\u7db2\u8def\u4e4b\u5f8c\uff0c\u518d\u4f86\u9078\u64c7\u8981\u4f7f\u7528\u54ea\u500b\u7db2\u8def\u4e0a\u7db2\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"htoc-wifiscan\">\u4e00\u3001WiFiscan\u7db2\u8def\u6383\u63cf<\/h2>\n\n\n\n<p>\u5728ESP32\u4e2d\u4f7f\u7528\u7121\u7dda\u7db2\u8def\u8981\u4f7f\u7528\u5230WiFi.h\u51fd\u5f0f\u5eab\u5167\u7684WiFi\u7269\u4ef6\uff0c\u53e6\u5916ESP32\u555f\u52d5WiFi\u4e4b\u5f8c\uff0c\u53ef\u4ee5\u9078\u64c7\u56db\u7a2e\u6a21\u5f0fWiFi.mode\uff0c\u5217\u8868\u5982\u4e0b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\u540d\u7a31<\/th><th class=\"has-text-align-left\" data-align=\"left\">\u8aaa\u660e<\/th><th class=\"has-text-align-left\" data-align=\"left\">\u8a9e\u6cd5<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">WIFI_STA<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u4ee5\u5de5\u4f5c\u7ad9\uff08Station\uff09\u6a21\u5f0f\u555f\u52d5\uff0cESP32\u7528\u4f86\u4e0a\u7db2\u8b80\u53d6\u8cc7\u6599\uff0c\u6b64\u70ba\u9810\u8a2d\u6a21\u5f0f<\/td><td class=\"has-text-align-left\" data-align=\"left\">WiFi.mode(WIFI_STA);<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">WIFI_AP<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u4ee5\u71b1\u9ede\uff08Access Point\uff09\u6a21\u5f0f\u555f\u52d5\uff0c\u8b93\u5176\u4ed6\u88dd\u7f6e\u9023\u5165ESP32<\/td><td class=\"has-text-align-left\" data-align=\"left\">WiFi.mode(AP);<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">WIFI_AP_STA<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6df7\u5408\u6a21\u5f0f\uff0c\u540c\u6642\u7576\u71b1\u9ede\u4e5f\u7576\u4f5c\u5de5\u4f5c\u7ad9<\/td><td class=\"has-text-align-left\" data-align=\"left\">WiFi.mode(WIFI_AP_STA);<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">WIFI_OFF<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u95dc\u9589\u7db2\u8def\uff0c\u53ef\u7528\u65bc\u7db2\u8def\u4e0d\u6b63\u5e38\u6642\uff0c\u91cd\u555f\u7db2\u8def<\/td><td class=\"has-text-align-left\" data-align=\"left\">WiFi.mode(WIFI_OFF);<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u5927\u90e8\u5206\u7684\u72c0\u6cc1\u4e0b\uff0c\u6bd4\u8f03\u5e38\u7528\u7684\u662fWIFI_STA\uff0c\u8b93ESP32\u5c31\u50cf\u662f\u4e00\u53f0\u624b\u6a5f\uff0c\u5c07\u8cc7\u6599\u50b3\u5230\u67d0\u500b\u8cc7\u6599\u5eab\uff0c\u6216\u8005\u8b80\u53d6\u7db2\u8def\u7684\u8cc7\u6599\uff0c\u8a2d\u5b9a\u597d\u6a21\u5f0f\u5f8c\uff0c\u5c31\u555f\u52d5WiFi.scanNetworks()\u6383\u63cf\u9644\u8fd1\u7684\u7121\u7dda\u7db2\u8def\uff0c\u9664\u4e86\u986f\u793a\u7121\u7dda\u7db2\u8def\u7684\u540d\u7a31SSID\u4e4b\u5916\uff0c\u4e5f\u6703\u986f\u793a\u8a0a\u865f\u5f37\u5ea6RSSI\uff0cRSSI\u662f\u8ca0\u6578\u8868\u793a\uff0c\u8d8a\u63a5\u8fd10\u4ee3\u8868\u8a0a\u865f\u8d8a\u5f37\uff0c\u53e6\u5916\u5c31\u662f\u6709\u8a2d\u5b9a\u5bc6\u78bc\u7684\u5247\u6703\u6a19\u793a\u300c*\u300d\u3002<\/p>\n\n\n\n<p>WiFiScan\u7db2\u8def\u6383\u63cf\u662f\u5167\u5efa\u7684\u7bc4\u4f8b\u7a0b\u5f0f\uff0c\u6211\u5011\u900f\u904e\u529f\u80fd\u8868\/\u6a94\u6848\/\u7bc4\u4f8b\/WiFi\/WiFiScan\u53ef\u4ee5\u627e\u5230\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"WiFi.h\"\nvoid setup(){\n    Serial.begin(115200);\n    WiFi.mode(WIFI_STA);\/\/\u8a2d\u5b9a\u70baSTA\u5de5\u4f5c\u7ad9\u6a21\u5f0f\n    WiFi.disconnect();\/\/\u65b7\u7dda\uff08\u521d\u59cb\u5316\u7684\u610f\u601d\uff09\n    delay(100);\n    Serial.println(\"Setup done\");\n}\n\nvoid loop(){\n    Serial.println(\"scan start\");\n    int n = WiFi.scanNetworks();\/\/\u6383\u63cf\u7db2\u8def\uff0c\u4e26\u5c07\u6383\u63cf\u5230\u7684\u7db2\u8def\u6578\u91cf\u5b58\u5165n\n    Serial.println(\"scan done\");\n    if (n == 0) {\n        Serial.println(\"no networks found\");\n    } else {\n        Serial.print(n);\n        Serial.println(\" networks found\");\n        for (int i = 0; i &lt; n; ++i) {\n            \/\/\u986f\u793a\u7121\u7dda\u7db2\u8defSSID, RSSI, \u52a0\u5bc6\n            Serial.print(i + 1);\n            Serial.print(\": \");\n            Serial.print(WiFi.SSID(i));\n            Serial.print(\" (\");\n            Serial.print(WiFi.RSSI(i));\n            Serial.print(\")\");\n            Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?\" \":\"*\");\n            delay(10);\n        }\n    }\n    Serial.println(\"\");\n    \/\/\u7b49\u5019\u4e94\u79d2\u5f8c\uff0c\u91cd\u65b0\u6383\u63cf\n    delay(5000);\n}<\/code><\/pre>\n\n\n\n<p>\u95dc\u9375\u8a9e\u6cd5\u5305\u62ec<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>WiFi.mode(WIFI_STA);\/\/\u8a2d\u5b9a\u70baSTA\u5de5\u4f5c\u7ad9\u6a21\u5f0f<\/li>\n\n\n\n<li>WiFi.disconnect();\/\/\u65b7\u7dda\uff08\u521d\u59cb\u5316\u7684\u610f\u601d\uff09<\/li>\n\n\n\n<li>int n = WiFi.scanNetworks();\/\/\u6383\u63cf\u7db2\u8def\uff0c\u4e26\u5c07\u6383\u63cf\u5230\u7684\u7db2\u8def\u6578\u91cf\u5b58\u5165n<\/li>\n<\/ol>\n\n\n\n<p>\u6383\u63cf\u7d50\u679c\u5982\u4e0b\u5716\uff0c\u4e00\u5171\u6383\u63cf\u5230\u9644\u8fd1\u76843\u500b\u7db2\u8def\uff0c\u5176\u4e2d\u8a0a\u865f\u4ee51:You(-47)\u6700\u5f37\u3001Asus(-82)\u6700\u5f31\uff0c\u800c2:You2F\u5f8c\u9762\u6c92\u6709\u300c*\u300d\u4ee3\u8868\u8a72\u7db2\u8def\u6c92\u6709\u9023\u7dda\u5bc6\u78bc\uff0c\u800cWiFi\u7684\u540d\u7a31\u4e00\u822c\u7a31\u70baSSID\uff08Service Set Identifier\uff1a\u670d\u52d9\u8b58\u5225\u78bc\uff09\uff0c\u4e14\u6709\u5206\u5927\u5beb\u5c0f\uff0c\u5f8c\u7e8c\u9023\u7dda\u6642\u8981\u6ce8\u610f\u5927\u5c0f\u5beb\u662f\u5426\u8f38\u5165\u6b63\u78ba\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/pic.pimg.tw\/youyouyou\/1584778723-18923884.png?resize=365%2C362&#038;ssl=1\" alt=\"\" width=\"365\" height=\"362\"\/><figcaption class=\"wp-element-caption\">WiFiScan\u7db2\u8def\u6383\u63cf\u7d50\u679c<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"htoc-httpclient-pm2-5\">\u4e8c\u3001HTTPClient\u6293\u53d6\u7a7a\u6c23\u54c1\u8cea\u8cc7\u8a0a<\/h2>\n\n\n\n<p>\u672c\u7bc0\u6211\u5011\u5c07\u4f7f\u7528ESP32\u7684\u7121\u7dda\u7db2\u8def\u8b80\u53d6\u516c\u958b\u8cc7\u8a0a\u7684PM2.5\u7a7a\u6c23\u54c1\u8cea\u70ba\u7bc4\u4f8b\uff0c\u8aaa\u660e\u5982\u4f55\u8b93ESP32\u6293\u53d6\u7db2\u8def\u8cc7\u6599\u3002<br><br>\u4e0a\u4e00\u7bc0\u6383\u63cf\u7db2\u8def\u4e4b\u5f8c\uff0c\u6211\u5011\u5c31\u53ef\u4ee5\u9078\u64c7\u8981\u9023\u4e0a\u54ea\u4e00\u500b\u7db2\u8def\uff0c\u7b49\u9023\u4e0a\u7db2\u8def\u5f8c\uff0c\u5c31\u53ef\u4ee5\u4f7f\u7528\u6700\u7c21\u55ae\u7684HTTPClient\u7269\u4ef6\u8b80\u53d6\u7db2\u9801\u8cc7\u6599\uff0c\u6240\u8b02\u7684HTTPClient\u662f\u4e00\u500b\u7db2\u8def\u7269\u4ef6\uff0c\u53ef\u4ee5\u60f3\u50cf\u4ed6\u662f\u4e00\u500b\u6a21\u64ec\u7684\u700f\u89bd\u5668\uff0c\u53ef\u4ee5\u8b80\u53d6\u7db2\u9801\u7684\u8cc7\u6599\uff0c\u5728ESP32\u4e2d\u8b80<br>\u53d6\u7db2\u9801\u9664\u4e86HTTPClient\u5916\uff0c\u9084\u6709WiFiClient\u53caWiFiClientSecure\uff0c\u529f\u80fd\u7a0d\u6709\u5dee\u7570\uff0c\u5f8c\u7e8c\u6211\u5011\u7528\u5230\u6642\u6703\u518d\u8a73\u8ff0\u3002<br><br>\u4ee5\u672c\u4f8b\u800c\u8a00\uff0c\u6211\u5011\u5c07\u4ee5\u9023\u4e0a\u6700\u5f37\u7684\u7db2\u8def\u8a0a\u865f\u4e0a\u5716\u7b2c\u4e00\u500bSSID\uff1aYou\uff0c\u800c\u5bc6\u78bc\u5247\u662f\u5047\u8a2d\u5df2\u77e5\u70baABCD1234\uff0c\u6b64\u6642\u9023\u7dda\u6574\u500b\u7bc4\u4f8b\u7684\u6b65\u9a5f\u5247\u70ba<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8a2d\u5b9aWiFi\u6a21\u5f0f\uff1aWiFi.mode(WIFI_STA);<\/li>\n\n\n\n<li>\u555f\u52d5WiFi\u9023\u7dda\uff1aWiFi.begin(ssid, password);<\/li>\n\n\n\n<li>\u6aa2\u67e5\u662f\u5426\u9023\u7dda\u6210\u529f\uff1aWiFi.status() != WL_CONNECTED<\/li>\n\n\n\n<li>\u5982\u679c\u5df2\u7d93\u9023\u4e0a\u7db2\u8def\uff0c\u5247\u555f\u52d5\u7db2\u9801\u9023\u7dda\uff1ahttp.begin(&#8220;http:\/\/\u74b0\u4fdd\u7f72\u7a7a\u6c23\u54c1\u8cea\u7db2\u5740&#8221;);<\/li>\n\n\n\n<li>\u6aa2\u67e5\u7db2\u9801\u9023\u7dda\u662f\u5426\u6b63\u5e38\uff1a httpCode == HTTP_CODE_OK<\/li>\n\n\n\n<li>\u5982\u679c\u7db2\u9801\u9023\u7dda\u6b63\u5e38\uff0c\u5247\u53d6\u5f97\u7db2\u9801\u5167\u5bb9\uff1aString payload = http.getString();<\/li>\n\n\n\n<li>\u5c07\u8cc7\u6599\u986f\u793a\u5728\u5e8f\u5217\u76e3\u63a7\u8996\u7a97\u4e0a\u3002<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/pic.pimg.tw\/youyouyou\/1584778870-1499574597_n.png?resize=254%2C640&#038;ssl=1\" alt=\"\" width=\"254\" height=\"640\"\/><figcaption class=\"wp-element-caption\">\u5b8c\u6574\u6d41\u7a0b\u5716<\/figcaption><\/figure>\n\n\n\n<p>\u4e0d\u904e\u7531\u65bc\u74b0\u4fdd\u7f72\u7684\u7a7a\u6c23\u54c1\u8cea\u7db2\u7ad9\u5df2\u7d93\u5347\u7d1a\u70ba2.0\u7248\u672c\uff0c\u539f\u672c1.0\u7684\u7248\u672c\u5df2\u7d93\u95dc\u9589\uff0c\u56e0\u6b64\u5982\u679c\u8981\u53d6\u5f97\u6578\u64da\uff0c\u5fc5\u9808\u5148\u5411\u74b0\u4fdd\u7f72\u8a3b\u518a\uff0c\u53d6\u5f97API KEY\u624d\u80fd\u8b93ESP32\u8b80\u53d6\u8cc7\u8a0a\u3002<\/p>\n\n\n\n<p>\u4ec0\u9ebc\u662fAPI KEY\u5462\uff1f\u7c21\u55ae\u7684\u8aaa\u5c31\u662f\u901a\u95dc\u5bc6\u78bc\uff0c\u90a3\u70ba\u4ec0\u9ebc\u5728\u9019\u88e1\u9700\u8981\u4e00\u7d44\u5bc6\u78bc\u5462\uff1f\u7531\u65bc\u7db2\u8def\u8cc7\u6e90\u6709\u9650\uff0c\u5982\u679c\u8b93\u5f88\u591a\u4eba\u7121\u9650\u5236\u53d6\u7528\u8cc7\u8a0a\u7684\u8a71\u53ef\u80fd\u5c0e\u81f4\u4f3a\u670d\u5668\u8a18\u61b6\u9ad4\u4e0d\u8db3\u6216\u8005\u7db2\u8def\u585e\u8eca\uff0c\u4ee5\u81f3\u65bc\u771f\u6b63\u9700\u8981\u8cc7\u8a0a\u7684\u4eba\u7121\u6cd5\u4f7f\u7528\uff0c\u56e0\u6b64\u73fe\u4eca\u4e00\u822c\u7db2\u8def\u670d\u52d9\u90fd\u6703\u8b93\u4f7f\u7528\u8005\u900f\u904e\u7533\u8acb\u5bc6\u78bc\u4f86\u7ba1\u63a7\u4f7f\u7528\u72c0\u6cc1\uff0c\u4f8b\u5982\u8aaa\u9019\u6b21\u74b0\u4fdd\u7f72\u7684\u7a7a\u6c23\u54c1\u8cea\u7db2\u7ad9\u5c31\u898f\u5b9a\u4e00\u5929\u6700\u591a5000\u6b21\u53d6\u7528\uff0c\u8d85\u904e\u6b21\u6578\u5c31\u6703\u66ab\u6642\u95dc\u9589\u9019\u7d44\u8b80\u53d6\u6b0a\u5229\uff0c\u907f\u514d\u6709\u5fc3\u4eba\u58eb\u85c9\u6a5f\u6feb\u7528\u3002\u63a5\u4e0b\u4f86\u6211\u5011\u4f86\u4ecb\u7d39\u5982\u4f55\u7533\u8acb\u5bc6\u78bc\uff1a<\/p>\n\n\n\n<p>\u8acb\u9ede\u9078\u7db2\u5740\uff1a\u7533\u8acbAPI key \u74b0\u4fdd\u7f72 <a rel=\"noreferrer noopener\" href=\"https:\/\/data.epa.gov.tw\/api-term\" target=\"_blank\">https:\/\/data.epa.gov.tw\/api-term<\/a><\/p>\n\n\n\n<p>1. \u9032\u5165\u5f8c\u62c9\u5230\u6700\u4e0b\u65b9\uff0c\u52fe\u9078\u6211\u5df2\u95b1\u8b80\uff0c\u4e26\u9ede\u9078\u4e0b\u4e00\u6b65<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-13.png?resize=683%2C278&#038;ssl=1\" alt=\"\" class=\"wp-image-1043\" width=\"683\" height=\"278\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-13.png?resize=1024%2C418&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-13.png?resize=300%2C122&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-13.png?resize=768%2C313&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-13.png?resize=200%2C82&amp;ssl=1 200w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-13.png?w=1054&amp;ssl=1 1054w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/figure>\n\n\n\n<p>2. \u8f38\u5165\u500b\u4eba\u76f8\u95dc\u8cc7\u8a0a\u5f8c\uff0c\u9ede\u9078\u5efa\u7acb\u5e33\u865f<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-14.png?resize=500%2C568&#038;ssl=1\" alt=\"\" class=\"wp-image-1044\" width=\"500\" height=\"568\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-14.png?w=608&amp;ssl=1 608w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-14.png?resize=264%2C300&amp;ssl=1 264w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-14.png?resize=200%2C227&amp;ssl=1 200w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p>3. \u63a5\u8457\u5230\u4e0a\u8ff0\u8a3b\u518a\u6642\u586b\u5beb\u7684\u4fe1\u7bb1\u5167\u5c31\u53ef\u4ee5\u770b\u5230API KEY\u4e86\uff0c\u4e0b\u9762\u6211\u5011\u5c31\u5229\u7528\u9019\u500bAPI KEY\u4f86\u53d6\u5f97\u7a7a\u6c23\u54c1\u8cea\u8cc7\u8a0a\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"670\" height=\"385\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-15.png?resize=670%2C385&#038;ssl=1\" alt=\"\" class=\"wp-image-1045\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-15.png?w=670&amp;ssl=1 670w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-15.png?resize=300%2C172&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-15.png?resize=200%2C115&amp;ssl=1 200w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>\u63a5\u4e0b\u4f86\u5c31\u53ef\u4ee5\u4f86\u64b0\u5beb\u7a0b\u5f0f\uff0c\u7a0b\u5f0f\u90e8\u4efd\u8acb\u53c3\u8003\u4e0b\u9762\u5167\u5bb9\uff0c\u5176\u4e2d\u6211\u9019\u500b\u7bc4\u4f8b\u662f\u6311\u9078\u53d6\u5f97\u9ad8\u96c4\u7684\u300c\u6a4b\u982d\u300d\u7ad9\u6240\u70ba\u7bc4\u4f8b\uff0c\u8b80\u8005\u82e5\u9700\u8981\u4f7f\u7528\u5176\u4ed6\u5730\u65b9\u7684\u57ce\u5e02\u8cc7\u8a0a\uff0c\u53ef\u4ee5\u81ea\u884c\u4fee\u6539\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;WiFi.h>\n#include &lt;HTTPClient.h>\n\nchar ssid&#91;] = \"\u4f60\u7684SSID\"; \/\/\u8acb\u4fee\u6539\u70ba\u60a8\u9023\u7dda\u7684\u7db2\u8def\u540d\u7a31\nchar password&#91;] = \"\u4f60\u7684\u5bc6\u78bc\"; \/\/\u8acb\u4fee\u6539\u70ba\u60a8\u9023\u7dda\u7684\u7db2\u8def\u5bc6\u78bc\n\/\/\u7533\u8acbAPI key \u74b0\u4fdd\u7f72\uff1a https:\/\/data.epa.gov.tw\/api-term\n\/\/\u67e5\u770b\u7a7a\u6c23\u54c1\u8cea\u5217\u8868\uff1ahttps:\/\/data.epa.gov.tw\/api\/v2\/aqx_p_432?offset=0&amp;format=json&amp;api_key=\u4f60\u7684APIkey\nString APIkey = \"6b143ef9-f**************557c7ffa1c\"; \/\/\u4f60\u7684\u74b0\u4fdd\u7f72\u7db2\u7ad9 API Key\nString Area = \"\u6a4b\u982d\"; \/\/\u5e0c\u671b\u53d6\u5f97\u7a7a\u6c23\u54c1\u8cea\u7684\u5730\u9ede\nString url = \"https:\/\/data.epa.gov.tw\/api\/v2\/aqx_p_432?format=json&amp;limit=5&amp;api_key=\" + APIkey + \"&amp;filters=SiteName,EQ,\" + Area ; \/\/PM2.5\u7684\u7db2\u5740\nvoid setup() {\n  Serial.begin(115200);\n  Serial.print(\" \u958b\u59cb\u9023\u7dda\u5230\u7121\u7dda\u7db2\u8def SSID:\");\n  Serial.println(ssid);\n  \/\/ 1. \u8a2d\u5b9a WiFi \u6a21\u5f0f\n  WiFi.mode(WIFI_STA);\n  \/\/ 2. \u555f\u52d5 WiFi \u9023\u7dda\n  WiFi.begin(ssid, password);\n  \/\/3.\u6aa2\u67e5\u9023\u7dda\u72c0\u614b\n  while (WiFi.status() != WL_CONNECTED) {\n    Serial.print(\".\");\n    delay(1000);\n  }\n  Serial.println(\"\u9023\u7dda\u5b8c\u6210\");\n}\n\nvoid loop() {\n  \/\/4.\u555f\u52d5\u7db2\u9801\u9023\u7dda\n  HTTPClient http;    \/\/ \u5ba3\u544a http \u7269\u4ef6\n  \/\/http.setInsecure(); \/\/ \u907f\u514d SSL \u554f\u984c\n  http.begin(url);    \/\/ \u8a2d\u5b9a\u7db2\u5740\n  int httpCode = http.GET();  \/\/ \u53d6\u5f97\u8cc7\u6599\n  \/\/5.\u6aa2\u67e5\u7db2\u9801\u9023\u7dda\u662f\u5426\u6b63\u5e38\n  if (httpCode == HTTP_CODE_OK) {         \/\/ \u5982\u679c\u53d6\u5f97\u8cc7\u6599\u6210\u529f\n    \/\/6.\u53d6\u5f97\u7db2\u9801\u5167\u5bb9\n    String payload = http.getString();  \/\/ \u53d6\u5f97\u8cc7\u6599\u5167\u5bb9\n    \/\/7.\u5c07\u8cc7\u6599\u986f\u793a\u5728\u87a2\u5e55\u4e0a\n    Serial.println(payload);\n  }\n  else {  \/\/ \u5982\u679c\u53d6\u5f97\u8cc7\u6599\u5931\u6557\n    Serial.println(\"Error on HTTP request\");\n  }\n  \/\/8.\u95dc\u9589\u7db2\u9801\u9023\u7dda\n  http.end();   \/\/ \u7d50\u675f http \u9023\u7dda\n\n  delay(10000);   \/\/ \u5ef6\u9072 10 \u79d2\n}<\/code><\/pre>\n\n\n\n<p>\u82e5\u7a0b\u5f0f\u57f7\u884c\u6c92\u6709\u554f\u984c\uff0c\u5c31\u53ef\u4ee5\u5728\u5e8f\u5217\u57e0\u770b\u5230\u4ee5\u4e0b\u7684\u5167\u5bb9\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"558\" height=\"390\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-16.png?resize=558%2C390&#038;ssl=1\" alt=\"\" class=\"wp-image-1046\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-16.png?w=558&amp;ssl=1 558w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-16.png?resize=300%2C210&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-16.png?resize=200%2C140&amp;ssl=1 200w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\" \/><figcaption class=\"wp-element-caption\">~\u4e2d\u9593\u7701\u7565\u4e00\u90e8\u5206~<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"778\" height=\"362\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-17.png?resize=778%2C362&#038;ssl=1\" alt=\"\" class=\"wp-image-1047\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-17.png?w=778&amp;ssl=1 778w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-17.png?resize=300%2C140&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-17.png?resize=768%2C357&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-17.png?resize=200%2C93&amp;ssl=1 200w\" sizes=\"auto, (max-width: 778px) 100vw, 778px\" \/><\/figure>\n\n\n\n<p>\u6700\u4e0a\u9762\u7684&#8230;&#8230;.\u662f\u9023\u7ddaWIFI\u7db2\u8def\u904e\u7a0b\uff0c\u5982\u679c\u9019\u90e8\u4efd\u4e00\u76f4&#8230;..\uff0c\u800c\u6c92\u6709\u51fa\u73fe\u4efb\u4f55\u7684\u8a0a\u606f\uff0c\u53ef\u4ee5\u53c3\u8003\u672c\u6587\u4f86\u9664\u932f\uff1a<a href=\"https:\/\/www.nmking.io\/index.php\/2022\/12\/19\/777\/\" target=\"_blank\" rel=\"noreferrer noopener\">ESP32\u7db2\u8def\u9023\u7dda\u554f\u984c<\/a><\/p>\n\n\n\n<p>\u5982\u679c\u9023\u7dda\u6b63\u5e38\uff0c\u5c31\u6703\u51fa\u73fe\u4e00\u9023\u4e32\u7684\u8a0a\u606f\uff0c\u4e0d\u904e\u9019\u500b\u8a0a\u606f\u597d\u50cf\u6c92\u6709\u7de8\u6392\uff0c\u770b\u8d77\u4f86\u96dc\u4e82\u7121\u7ae0\u975e\u5e38\u96e3\u4ee5\u95b1\u8b80\uff0c\u6b64\u683c\u5f0f\u70baJSON\uff08JavaScript Object Notation\uff0cJavaScript\u7269\u4ef6\u8868\u793a\u6cd5\uff09\uff0c\u662f\u76ee\u524d\u7db2\u8def\u6700\u6d41\u884c\u7684\u8cc7\u6599\u4ea4\u63db\u683c\u5f0f\uff0c\u4e0d\u904e\u8981\u5982\u4f55\u8b93ESP32\u81ea\u52d5\u627e\u5230\u7a7a\u6c23\u54c1\u8cea\u7684\u8cc7\u8a0a\uff0c\u5247\u5fc5\u9808\u8981\u518d\u900f\u904eJSON\u89e3\u6790\u5de5\u5177\uff0c\u4f86\u5206\u6790\u5f97\u5230\u7684\u5167\u5bb9\u6578\u64da\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"htoc-json\">\u4e09\u3001JSON\u8cc7\u6599\u89e3\u6790<\/h2>\n\n\n\n<p>JSON\u683c\u5f0f\u662f\u4e00\u7a2e\u8cc7\u6599\u7d50\u69cb\uff0c\u4e3b\u8981\u70ba{&#8220;\u6a19\u984c1&#8243;:&#8221;\u5167\u5bb91&#8221;, &#8220;\u6a19\u984c2&#8243;:&#8221;\u5167\u5bb92&#8221;}\u9019\u6a23\u7684\u65b9\u5f0f\u7d44\u6210\uff0c\u5982\u4ee5\u8cc7\u6599\u5eab\u7684\u89c0\u9ede\u4f86\u8aaa\u660e\uff0c\u6bcf\u4e00\u500b\u5927\u62ec\u5f27{ }\u4ee3\u8868\u4e00\u500b\u7d00\u9304\uff0c\u800c\u5167\u5bb9\u5247\u4f9d\u5e8f\u5beb\u5728{ }\u5167\u90e8\uff0c\u4ee5\u5206\u865f\u300c:\u300d\u5340\u9694\u6b04\u4f4d\u540d\u7a31\u53ca\u5167\u5bb9\u3002<br><br>\u8209\u4f8b\u4f86\u8aaa\uff0c\u4ee5\u4e0a\u8868\u53d6\u5f97\u7684\u8cc7\u6599\u7b2c\u4e00\u7b46\u300c\u57fa\u9686\u300d\u4f86\u8aaa\uff0c\u82e5\u8981\u7372\u5f97PM2.5\u7684\u8cc7\u6599\uff0c\u5247\u662f\u5c0b\u627e&#8221;PM2.5&#8243;:&#8221;19&#8243;\u9019\u500b\u6b04\u4f4d\uff0c\u53ef\u4ee5\u7372\u5f97\u76ee\u524d\u57fa\u9686\u7684PM2.5\u70ba19\uff0c\u540c\u7406\u4e5f\u53ef\u4ee5\u5f9e\u4e0a\u8868\u5f97\u5230\u6843\u5712\u5e02PM2.5\u70ba31\u3002<br><br>JSON\u53ef\u5206\u6210\u4ee5\u4e0b\u5169\u5927\u7a2e\u985eJSON\u7269\u4ef6\u300c{ }\u300d\u8207JSON\u9663\u5217\u300c[ ]\u300d\uff0c\u5169\u8005\u53c8\u53ef\u4ee5\u4e92\u76f8\u7d44\u5408\uff0c\u56e0\u6b64\u7d50\u69cb\u6bd4\u8cc7\u6599\u5eab\u6b04\u4f4d\u5f62\u5f0f\u8f03\u70ba\u8907\u96dc\uff0c\u5148\u8aaa\u660e\u5169\u8005\u7684\u5dee\u7570\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"htoc-json1\">JSON\u7269\u4ef6\u7d50\u69cb\u8aaa\u660e<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"htoc-1-json-object\">1. JSON\u7269\u4ef6\uff08object\uff09\uff1a\u4ee5\u5927\u62ec\u865f{}\u8d77\u8a16<\/h4>\n\n\n\n<p>\u6bcf\u4e00\u500b\u6b04\u4f4d\u90fd\u6703\u5148\u6a19\u793a\u6b04\u4f4d\u540d\u7a31\uff0c\u5728\u7528\u300c:\u300d\u6a19\u793a\u8a72\u6b04\u4f4d\u5167\u5bb9\uff0c\u4e0d\u540c\u6b04\u4f4d\u4e4b\u9593\u7528\u300c,\u300d\u505a\u5206\u9694\u3002<\/p>\n\n\n\n<p>JSON\u7269\u4ef6\u662fJSON\u57fa\u672c\u5f62\u5f0f\uff1aJObject={&#8220;\u6b04\u4f4d1&#8243;\uff1a&#8221;\u5167\u5bb91&#8221;, &#8220;\u6b04\u4f4d2&#8243;:&#8221;\u5167\u5bb92&#8221;}<\/p>\n\n\n\n<p>\u4f8b\u5982\u6211\u5011\u8981\u8868\u793a\u540c\u5b78Jake\u7684\u6578\u5b7865\u5206\uff0c\u6b77\u53f285\u5206<br>\u53ef\u4ee5\u9019\u6a23\u5beb<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"name\"\uff1a\" Jake \", \"Math\":\"65\",\"History\":\"85\"}<\/code><\/pre>\n\n\n\n<p>\u800c\u591a\u500bJSON\u7269\u4ef6\u518d\u7d44\u6210\u4e00\u500bJSON\u7269\u4ef6\u6216\u9663\u5217\uff0c\u4f8b\u5982\u6211\u5011\u53ef\u4ee5\u628a\u4e0a\u9762\u7684\u5167\u5bb9\u6539\u6210\u4e0b\u9762\u9019\u6a23<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JObject={\"name\"\uff1a\" Jake \", \"grade\":{\"Math\":\"65\",\"History\":\"85\"}}<\/code><\/pre>\n\n\n\n<p>\u4e5f\u5c31\u662f\u8aaa\uff0c\u540c\u5b78Jake\u6210\u7e3e\u55ae\u88e1\u9762\u6709\u6578\u5b7865\u5206\uff0c\u53ca\u6b77\u53f285\u5206\uff0c\u5176\u610f\u7fa9\u662f\u76f8\u540c\u7684\uff0c\u6211\u5011\u53ea\u662f\u628a\u5169\u500b\u6210\u7e3e\u6b04\u4f4d\u585e\u5165\u4e00\u500b\u6210\u7e3e\u55ae\u7269\u4ef6\u4e2d\uff0c\u5728\u6210\u7e3e\u55ae\u7269\u4ef6\u4e2d\u5206\u6210\u5169\u500b\u6b04\u4f4d\u662f\u6578\u5b78\u8207\u6b77\u53f2\u3002<\/p>\n\n\n\n<p class=\"quote\">\u6b64\u6642\u8981\u62ff\u5230Jake\u7684\u6578\u5b78\u6210\u7e3e\u6642\uff0c\u6211\u5011\u7528JObject[&#8220;grade&#8221;][&#8220;math&#8221;]\u5c31\u53ef\u4ee5\u53d6\u5f97\u6578\u5b78\u6210\u7e3e\u3002<\/p>\n\n\n\n<p>\u5982\u679c\u6211\u5011\u9700\u8981\u518d\u628aMary\u7684\u6210\u7e3e\u4e00\u8d77\u986f\u793a\uff0c\u5247\u5fc5\u9808\u518d\u591a\u4e00\u500bJSON\u7269\u4ef6\uff0c\u56e0\u6b64\u6211\u5011\u53ef\u4ee5\u6539\u7528\u4e0b\u9762\u7684JSON\u9663\u5217\u4f86\u8868\u793a\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"htoc-2-json-array\">2. JSON\u9663\u5217\uff08array\uff09\uff1a\u4ee5\u4e2d\u62ec\u865f[]\u8d77\u8a16<\/h4>\n\n\n\n<p class=\"quote\">\u6b64\u7a2e\u5c31\u662fC\u8a9e\u8a00\u88e1\u7684\u9663\u5217\u8868\u793a\u6cd5\uff0c\u56e0\u6b64\u7a31\u70baJSON\u9663\u5217\u3002\u5176\u683c\u5f0f\u5927\u81f4\u5982\u4e0b<br>[{Json\u7269\u4ef61}, { Json\u7269\u4ef62}, { Json\u7269\u4ef63}, { Json\u7269\u4ef64}]<\/p>\n\n\n\n<p><br>\u4e00\u500bJSON\u9663\u5217\u53ef\u4ee5\u5305\u542b\u591a\u500bJSON\u7269\u4ef6\uff0c\u6bcf\u500b\u7269\u4ef6\u4e4b\u9593\u4ee5\u300c,\u300d\u5340\u9694\uff0c\u4ee5\u4e0a\u4e00\u500b\u4f8b\u5b50\u4f86\u8aaa<br>\u5047\u8a2d\u73ed\u4e0a\u53ea\u6709\u5169\u4f4d\u5b78\u751f\uff0c\u5247\u53ef\u7528\u9019\u6a23\u7684\u65b9\u5f0f\u4f86\u8868\u793a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JArray= &#91;{\"name\"\uff1a\" Jake \", \"grade\":{\"Math\":\"65\",\"History\":\"85\"} , {\"name\"\uff1a\" Mary \", \"grade\":{\"Math\":\"84\",\"History\":\"32\"}}]<\/code><\/pre>\n\n\n\n<p class=\"quote\">\u6b64\u6642\u8981\u62ff\u5230Jake\u7684\u6578\u5b78\u6210\u7e3e\u6642\uff0c\u5c31\u7528JArray [0][&#8220;math&#8221;]<\/p>\n\n\n\n<p>\u6211\u5011\u53ef\u4ee5\u767c\u73feArray\u8207Object\u53d6\u503c\u6642Array\u7528\u7684\u662f[\u6578\u5b57]\uff0c\u4ee3\u8868\u7b2c\u5e7e\u500b\u5143\u7d20\uff0c\u800cObject\u5247\u662f\u7528[\u6b04\u4f4d]\u3002\u6b64\u5916\u6211\u5011\u4e5f\u53ef\u4ee5\u767c\u73fePM2.5\u7db2\u7ad9\u63d0\u4f9b\u7684\u5167\u5bb9\u70ba\u4e2d\u62ec\u865f[]\u958b\u982d\u53ca\u7d50\u5c3e\uff0c\u56e0\u6b64\u6211\u5011\u5c07\u7528\u6703Array\u7684\u65b9\u5f0f\u9032\u884c\u89e3\u6790\u3002<\/p>\n\n\n\n<p>\u4e86\u89e3\u683c\u5f0f\u5f8c\uff0c\u6211\u5011\u5728Arduino IDE\u4e2d\u5b89\u88ddAduinoJson\u51fd\u5f0f\u5eab\u4ee5\u89e3\u6790\u8cc7\u6599\u5167\u5bb9\uff0c\u9996\u5148\u9ede\u9078\u529f\u80fd\u8868\/\u8349\u7a3f\u78bc\/\u532f\u5165\u51fd\u5f0f\u5eab\/\u7ba1\u7406\u51fd\u5f0f\u5eab\uff0c\u5728\u8df3\u51fa\u7684\u7a0b\u5f0f\u5eab\u7ba1\u7406\u5143\u4e2d\uff0c\u8f38\u5165\u95dc\u9375\u5b57JSON\u5373\u6703\u51fa\u73fe\u6211\u5011\u9700\u8981\u7684\u51fd\u5f0f\u5eabAduinoJson\uff0c\u8acb\u6ce8\u610f\u8981\u8a8d\u6e05\u4f5c\u8005\u70baBenoit Blanchon\u7684\u9019\u4e00\u500b\u51fd\u5f0f\u5eab\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/pic.pimg.tw\/youyouyou\/1584779136-3448832255_n.png?resize=839%2C552&#038;ssl=1\" alt=\"\" width=\"839\" height=\"552\"\/><figcaption class=\"wp-element-caption\">\u5b89\u88ddAduinoJson\u51fd\u5f0f\u5eab<\/figcaption><\/figure>\n\n\n\n<p>\u5b8c\u6210\u5b89\u88dd\u5f8c\uff0c\u6211\u5011\u53ef\u4ee5\u5c07\u7a0b\u5f0f\u4e0a\u65b9\u5f15\u7528ArdunioJson\u51fd\u5f0f\u5eab\uff0c\u4e26\u5c0d\u53d6\u5f97\u7684\u7db2\u9801\u5167\u5bb9Payload\u9032\u884cJSON\u89e3\u6790\uff0c\u5176\u89e3\u6790\u7684\u8a9e\u6cd5\u70ba\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/\/JSON\u683c\u5f0f\u89e3\u6790\n    DynamicJsonDocument AQJarray(payload.length()*2); \n    deserializeJson(AQJarray, payload);\/\/\u89e3\u6790payload\u70baJSON Array\u683c\u5f0f\n    String AQI = AQJarray&#91;0]&#91;\"records\"]&#91;0]&#91;\"aqi\"]; \/\/\u7372\u5f97\u6a4b\u982dAQI\u8cc7\u8a0a\n    Serial.println(Area + \" AQI:\" + AQI); \/\/\u5728\u5e8f\u5217\u57e0\u5217\u5370\u51fa\u4f86<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"htoc-arduniojson\">ArdunioJson\u51fd\u5f0f\u5eab\u8aaa\u660e<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"htoc-1-dynamicjsondocument-json-size\">1. DynamicJsonDocument Json\u8b8a\u6578(size);<\/h4>\n\n\n\n<p>\u662f\u5411\u7cfb\u7d71\u8981\u4e00\u500b\u540d\u70ba\u300cAQJarray\u300d\u7684\u7a7a\u9593\u5b58\u653eJSON\uff0c\u81f3\u65bc\u7a7a\u9593\u8981\u591a\u5927\uff0c\u6bd4\u8f03\u4fdd\u96aa\u7684\u4f5c\u6cd5\u662f\u5b57\u4e32\u9577\u5ea6x2\u6216x4\uff0c\u672c\u4f8b\u9078\u64c7payload.length()*2\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"htoc-2-deserializejson-json-json\">2. deserializeJson(Json\u8b8a\u6578,\u5f85\u89e3\u6790\u4e4bJSON\u5b57\u4e32);<\/h4>\n\n\n\n<p>\u662f\u5c07\u300c\u5f85\u89e3\u6790\u4e4bJSON\u5b57\u4e32\u300d\u5b8c\u6210\u89e3\u6790\u5f8c\uff0c\u5c07\u7d50\u679c\u653e\u5728\u300cAQJarray\u300d\uff0c\u672c\u4f8b\u300c\u5f85\u89e3\u6790\u4e4bJSON\u5b57\u4e32\u300d\u5c31\u662f\u81ea\u7db2\u8def\u53d6\u5f97\u7684\u7a7a\u6c23\u54c1\u8cea\u5b57\u4e32payload\uff0c\u5b8c\u6210\u89e3\u6790\u5f8c\u7684JSON\u8b8a\u6578\u70baAQJarray\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"htoc-3-string-keelungpm25-aqjarray-0-pm2-5\">3. String AQI = AQJarray[&#8220;records&#8221;][0][&#8220;aqi&#8221;]; \/\/\u7372\u5f97\u6a4b\u982dAQI\u8cc7\u8a0a<\/h4>\n\n\n\n<p>\u6b64\u6642\u9700\u8981\u4efb\u4f55\u8cc7\u6599\uff0c\u5c31\u53ef\u4ee5\u900f\u904eJson\u8b8a\u6578[&#8220;records&#8221;][0][&#8220;aqi&#8221;]\uff0c\u4f86\u53d6\u5f97\u7a7a\u6c23\u54c1\u8cea\u6578\u503c\u3002\u4ee5\u4e0b\u8a73\u7d30\u8aaa\u660e\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-21.png?resize=423%2C71&#038;ssl=1\" alt=\"\" class=\"wp-image-1051\" width=\"423\" height=\"71\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-21.png?w=516&amp;ssl=1 516w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-21.png?resize=300%2C50&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-21.png?resize=200%2C33&amp;ssl=1 200w\" sizes=\"auto, (max-width: 423px) 100vw, 423px\" \/><\/figure>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">1. [&#8220;records&#8221;]<\/mark>\uff1a\u6b64\u70ba\u6211\u5011\u8981\u53d6\u5f97\u9019\u7b46JSON\u5167\u7684records\u6b04\u4f4d\u5167\u7684\u6240\u6709\u8cc7\u6599<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">2. [0]<\/mark>\uff1a\u7531\u65bc\u672c\u8cc7\u6599\u53ea\u6709\u4e00\u7b46\uff0c\u56e0\u6b64\u6a4b\u982d\u5c6c\u65bc\u7b2c0\u7b46\uff0c\u9019\u88e1\u9078\u64c7\u4f7f\u7528[0]\u53d6\u5f97\u6240\u6709\u6a4b\u982d\u7684\u8cc7\u6599<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">3. [&#8220;aqi&#8221;]<\/mark>\uff1a\u6211\u5011\u518d\u5f9e\u6240\u6709\u6a4b\u982d\u7684\u8cc7\u6599\u5167\uff0c\u53d6\u5f97aqi\u9019\u500b\u6b04\u4f4d\u7684\u6578\u503c\uff0c\u56e0\u6b64\u8f38\u5165[&#8220;aqi&#8221;]<\/p>\n\n\n\n<p>\u6700\u5f8c\u5b8c\u6210\u7684\u6210\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"192\" src=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-19.png?resize=400%2C192&#038;ssl=1\" alt=\"\" class=\"wp-image-1049\" srcset=\"https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-19.png?w=400&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-19.png?resize=300%2C144&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nmking.io\/wp-content\/uploads\/2023\/03\/image-19.png?resize=200%2C96&amp;ssl=1 200w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><figcaption class=\"wp-element-caption\">\u5f97\u5230\u7684AQI\u7d50\u679c<\/figcaption><\/figure>\n\n\n\n<p>\u4ee5\u4e0b\u70ba\u5b8c\u6574\u7684\u7a0b\u5f0f\u78bc<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;WiFi.h>\n#include &lt;HTTPClient.h>\n#include &lt;ArduinoJson.h>\/\/\u8acb\u5148\u5b89\u88ddArduinoJson\u7a0b\u5f0f\u5eab\n\nchar ssid&#91;] = \"\u4f60\u7684SSID\"; \/\/\u8acb\u4fee\u6539\u70ba\u60a8\u9023\u7dda\u7684\u7db2\u8def\u540d\u7a31\nchar password&#91;] = \"\u4f60\u7684\u5bc6\u78bc\"; \/\/\u8acb\u4fee\u6539\u70ba\u60a8\u9023\u7dda\u7684\u7db2\u8def\u5bc6\u78bc\n\/\/\u7533\u8acbAPI key \u74b0\u4fdd\u7f72\uff1a https:\/\/data.epa.gov.tw\/api-term\n\/\/\u67e5\u770b\u7a7a\u6c23\u54c1\u8cea\u5217\u8868\uff1ahttps:\/\/data.epa.gov.tw\/api\/v2\/aqx_p_432?offset=0&amp;format=json&amp;api_key=\u4f60\u7684APIkey\nString APIkey = \"6b143ef9-f**************557c7ffa1c\"; \/\/\u4f60\u7684\u74b0\u4fdd\u7f72\u7db2\u7ad9 API Key\nString Area = \"\u6a4b\u982d\"; \/\/\u5e0c\u671b\u53d6\u5f97\u7a7a\u6c23\u54c1\u8cea\u7684\u5730\u9ede\nString url = \"https:\/\/data.epa.gov.tw\/api\/v2\/aqx_p_432?format=json&amp;limit=5&amp;api_key=\" + APIkey + \"&amp;filters=SiteName,EQ,\" + Area ; \/\/PM2.5\u7684\u7db2\u5740\n\nvoid setup() {\n  Serial.begin(115200);\n  Serial.print(\" \u958b\u59cb\u9023\u7dda\u5230\u7121\u7dda\u7db2\u8def SSID:\");\n  Serial.println(ssid);\n  \/\/ 1. \u8a2d\u5b9a WiFi \u6a21\u5f0f\n  WiFi.mode(WIFI_STA);\n  \/\/ 2. \u555f\u52d5 WiFi \u9023\u7dda\n  WiFi.begin(ssid, password);\n  \/\/3.\u6aa2\u67e5\u9023\u7dda\u72c0\u614b\n  while (WiFi.status() != WL_CONNECTED) {\n    Serial.print(\".\");\n    delay(1000);\n  }\n  Serial.println(\"\u9023\u7dda\u5b8c\u6210\");\n}\n\nvoid loop() {\n  \/\/4.\u555f\u52d5\u7db2\u9801\u9023\u7dda\n  HTTPClient http;    \/\/ \u5ba3\u544a http \u7269\u4ef6\n  \/\/http.setInsecure(); \/\/ \u907f\u514d SSL \u554f\u984c\n  http.begin(url);    \/\/ \u8a2d\u5b9a\u7db2\u5740\n  int httpCode = http.GET();  \/\/ \u53d6\u5f97\u8cc7\u6599\n  \/\/5.\u6aa2\u67e5\u7db2\u9801\u9023\u7dda\u662f\u5426\u6b63\u5e38\n  if (httpCode == HTTP_CODE_OK) {         \/\/ \u5982\u679c\u53d6\u5f97\u8cc7\u6599\u6210\u529f\n    \/\/6.\u53d6\u5f97\u7db2\u9801\u5167\u5bb9\n    String payload = http.getString();  \/\/ \u53d6\u5f97\u8cc7\u6599\u5167\u5bb9\n    \/\/7.\u5c07\u8cc7\u6599\u986f\u793a\u5728\u87a2\u5e55\u4e0a\n    Serial.println(payload);\n    \/\/JSON\u683c\u5f0f\u89e3\u6790\n    \/\/payload = \"&#91;\" + payload + \"]\"; \/\/\u5c07\u8cc7\u6599\u8f49\u70baJSON \u9663\u5217\u683c\u5f0f\n    DynamicJsonDocument AQJarray(payload.length() * 2);\n    deserializeJson(AQJarray, payload);\/\/\u89e3\u6790payload\u70baJSON Array\u683c\u5f0f\n    String AQI = AQJarray&#91;\"records\"]&#91;0]&#91;\"aqi\"];\n    Serial.println(Area + \" AQI:\" + AQI);\n  }\n  else {  \/\/ \u5982\u679c\u53d6\u5f97\u8cc7\u6599\u5931\u6557\n    Serial.println(\"Error on HTTP request\");\n  }\n  \/\/8.\u95dc\u9589\u7db2\u9801\u9023\u7dda\n  http.end();   \/\/ \u7d50\u675f http \u9023\u7dda\n  delay(10000);   \/\/ \u5ef6\u9072 10 \u79d2\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"htoc-111111111\" style=\"font-size:clamp(16.293px, 1.018rem + ((1vw - 3.2px) * 0.68), 25px);\">\u5ef6\u4f38\u95b1\u8b80<\/h4>\n\n\n\n<p class=\"has-background has-medium-font-size\" style=\"background-color:#f2f2f2\">????   <a href=\"https:\/\/www.nmking.io\/index.php\/2022\/11\/14\/esp32_ch1-5\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u7b2c\u5341\u4e00\u7bc7 ESP32 \u8cc7\u6599\u5eab\u5b58\u53d6MySQL\u9023\u7dda<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u7ae0\u4ecb\u7d39\u5982\u4f55\u4f7f\u7528ESP32\u5167\u5efa\u7684WiFi\u6a21\u7d44\u9023\u4e0a\u7db2\u8def\uff0c\u4e26\u4e0a\u7db2\u6293\u53d6\u74b0\u4fdd\u7f72\u63d0\u4f9b\u7684\u5373\u6642\u7a7a\u6c23\u54c1\u8cea\u7b49\u8cc7\u6599 \u5be6\u505a\u8aaa\u660e \u672c\u7ae0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1,29],"tags":[],"class_list":["post-612","post","type-post","status-publish","format-standard","hentry","category-esp32","category-esp32-started"],"blocksy_meta":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/posts\/612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/comments?post=612"}],"version-history":[{"count":11,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/posts\/612\/revisions"}],"predecessor-version":[{"id":1058,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/posts\/612\/revisions\/1058"}],"wp:attachment":[{"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/media?parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/categories?post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nmking.io\/index.php\/wp-json\/wp\/v2\/tags?post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}