///////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
功能:讀取空氣品質監測網資料
*/
#include <WiFi.h>
#include <HTTPClient.h> // 宣告使用HTTPClient函式庫
// 網路設定
const char* ssid = "Your wifi ssid"; // WiFi 帳號
const char* password = "your password"; // WiFi 密碼
// 網頁網址設定
const char* url = "https://data.moenv.gov.tw/api/v2/aqx_p_322?api_key=e8dd42e6-9b8b-43f8-991e-b3dee723a52d&limit=1000&sort=monitordate%20desc&format=JSON"; // PM2.5的網址
//const char* url = "https://data.moenv.gov.tw/api/v2/aqx_p_02?api_key=e8dd42e6-9b8b-43f8-991e-b3dee723a52d";
void setup() {
Serial.begin(115200);
// Connect to Wi-Fi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
//WiFi.begin(ssid, password); // 以STA(網路終端)模式連接到WiFi基地台
WiFi.begin("Wokwi-GUEST", "", 6); // wokwi提供的虛擬 WiFi 接入點
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.print("IP位址: ");
Serial.println(WiFi.localIP()); // 回傳分配到的IP位址
Serial.print("WiFi RSSI: ");
Serial.println(WiFi.RSSI()); // 回傳接收訊號強度(以 dBm 為單位)
}
void loop() {
// 啟動網頁連線
Serial.println("啟動網頁連線");
HTTPClient http; // 宣告 http 物件
http.begin(url); // 啟動網頁連線至網址url
int httpCode = http.GET(); // 取得資料
Serial.print("httpCode=");
Serial.println(httpCode);
// 檢查網頁連線是否正常
// 如果取得資料成功
if (httpCode == HTTP_CODE_OK) {
// 取得網頁內容
String payload = http.getString();
// 將資料顯示在螢幕上
Serial.println(payload);
// 如果取得資料失敗
}else{
Serial.println("Error on HTTP request");
}
// 關閉網頁連線
http.end();
delay(100000000);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// /*
// 功能:讀取空氣品質監測網資料,並解析JSON檔案
// */
// #include <WiFi.h>
// #include <HTTPClient.h> // 宣告使用HTTPClient函式庫
// #include <ArduinoJson.h> // 使用ArduinoJson函式庫解析JSON格式
// // 網路設定
// const char* ssid = "Your wifi ssid"; // Nokia 5.4
// const char* password = "your password"; // 12345678
// // 網頁網址設定
// const char* url = "https://data.moenv.gov.tw/api/v2/aqx_p_322?api_key=e8dd42e6-9b8b-43f8-991e-b3dee723a52d&limit=1000&sort=monitordate%20desc&format=JSON"; // PM2.5的網址
// //const char* url = "https://data.moenv.gov.tw/api/v2/aqx_p_02?api_key=e8dd42e6-9b8b-43f8-991e-b3dee723a52d";
// void setup() {
// Serial.begin(115200);
// // Connect to Wi-Fi
// Serial.print("Connecting to ");
// Serial.println(ssid);
// WiFi.mode(WIFI_STA);
// //WiFi.begin(ssid, password); // 以STA(網路終端)模式連接到WiFi基地台
// WiFi.begin("Wokwi-GUEST", "", 6); // wokwi提供的虛擬 WiFi 接入點
// while (WiFi.status() != WL_CONNECTED) {
// delay(500);
// Serial.print(".");
// }
// Serial.println("");
// Serial.println("WiFi connected.");
// Serial.print("IP位址: ");
// Serial.println(WiFi.localIP()); // 回傳分配到的IP位址
// Serial.print("WiFi RSSI: ");
// Serial.println(WiFi.RSSI()); // 回傳接收訊號強度(以 dBm 為單位)
// }
// void loop() {
// // 啟動網頁連線
// Serial.println("啟動網頁連線");
// HTTPClient http; // 宣告 http 物件
// http.begin(url); // 啟動網頁連線至網址url
// int httpCode = http.GET(); // 取得資料
// Serial.print("httpCode=");
// Serial.println(httpCode);
// // 檢查網頁連線是否正常
// // 如果取得資料成功
// if (httpCode == HTTP_CODE_OK) {
// // 取得網頁內容
// String payload = http.getString();
// ///////////////////////////////////////////////////////////////////////////////////
// // 將資料顯示在螢幕上
// // Serial.println(payload);
// ///////////////////////////////////////////////////////////////////////////////////
// ///////////////////////////////////////////////////////////////////////////////////
// // JSON格式解析
// // payload是空氣品質網頁資料
// // 宣告一個JSON文件變數,名稱為AQIJson(大小為payloadx2)
// // DynamicJsonDocument Json變數(size);
// DynamicJsonDocument AQIJson(payload.length()*2);
// // 解析網頁資料payload字串為JSON格式,並存放到AQIJson
// // deserializeJson(Json變數,待解析之JSON字串);
// deserializeJson(AQIJson, payload);
// // 遍歷AQIJson的records欄位陣列資料找出豐原(siteid = 28)
// for(int i = 0; i < AQIJson["records"].size(); i++){
// String name = AQIJson["records"][i]["sitename"];
// if(name == "豐原"){
// String PM25 = AQIJson["records"][i]["concentration"];
// Serial.println(name + " PM2.5:" + PM25);
// break;// 找到即跳出for迴圈
// }else{
// Serial.println(name);
// }
// }
// ///////////////////////////////////////////////////////////////////////////////////
// // 如果取得資料失敗
// }else{
// Serial.println("Error on HTTP request");
// }
// // 關閉網頁連線
// http.end();
// delay(100000000);
// }
///////////////////////////////////////////////////////////////////////////////////////////////////////////