#include "WiFi.h"
#include <HTTPClient.h>
#include <ArduinoJson.h>
String stMac;
char mac[50];
String ip;
String sn = "5440973";
String api_key = "ADu2FL4V7LdfprFNL9xpKkbVw873";
String url = "http://service.wf8266.com/api/mqtt/" + sn + "/CONFIG/" + api_key;
void setup() {
Serial.begin(115200);
int LED_BUILTIN = 2;
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// setup WiFi
Serial.println("Initializing WiFi...");
WiFi.mode(WIFI_STA);
WiFi.disconnect(); // 無線初始化
Serial.println("Connecting to WiFi ");
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("");
Serial.println("WiFi connected");
ip = WiFi.localIP().toString(); // 取得分配到的 IP 位址
Serial.println("IP address: " + ip);
// 顯示 MAC 位址
Serial.println("MAC address: " + WiFi.macAddress());
}
void loop() {
HTTPClient http; // 建立 http client 物件
Serial.println("啟動網站連線");
http.begin(url); // 啟動網頁連線
int httpCode = http.GET(); //連線請求方法,回應狀態碼
Serial.printf("httpCode=%d\n", httpCode);
if (httpCode == HTTP_CODE_OK){
String payload = http.getString(); // 取得回應的資訊
//Serial.println(payload);
//----------解析 JSON 資料----------
// 宣告變數儲存 JSON 資料
DynamicJsonDocument airbox_json(payload.length()*2);
deserializeJson(airbox_json, payload);// payload 轉成 JSON 物件
String temp = airbox_json["data"]["Message"][0]["TEMP"].as<String>(); //獲得溫度資訊
String humi = airbox_json["data"]["Message"][0]["HUM"].as<String>(); //獲得濕度資訊
String pm25 = airbox_json["data"]["Message"][0]["PMAT25"].as<String>(); //獲得PM2.5資訊
Serial.println("溫度:" + temp + " C"); //在序列埠列印出來
Serial.println("濕度:" + humi + " %"); //在序列埠列印出來
Serial.println("PM2.5:" + pm25 + " ug/m3"); //在序列埠列印出來
delay(1000);
}
http.end(); //關閉網站連線;
delay(20000);
}