#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
String sensorReadings ; //收網頁的變數
int commaPosition;//存儲還沒有分離出來的字符串
const char* serverName = "https://www.cwb.gov.tw/V8/C/E/MOD/MAP_LIST.html?T=2022101001-3";//網址
// const char* serverName = "https://dataverse.harvard.edu/api/datasets/6443747/";//網址
// const char* serverName = "https://dl.espressif.com/dl/package_esp32_index.json";//網址
const char* ssid = "Wokwi-GUEST";
const char* password = "";
WiFiClientSecure client;
// WiFiClient client;
HTTPClient http;
// www.howsmyssl.com root certificate authority, to verify the server
// change it to your server root CA
// SHA1 fingerprint is broken now!
const static char* HARVARD_ROOT_CA_RSA_SHA1 = \
"-----BEGIN CERTIFICATE-----\n" \
"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\n" \
"hNQ+IIX3Sj0rnP0qCglN6oH4EZw=\n" \
"-----END CERTIFICATE-----\n";
// You can use x.509 client certificates if you want
//const char* test_client_key = ""; //to verify the client
//const char* test_client_cert = ""; //to verify the client
void setup() {
Serial.begin(115200);
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("");
// Serial.println("WiFi connected");
// Serial.print("IP address: ");
// Serial.println(WiFi.localIP());
if (WiFi.status() == WL_CONNECTED) {
sensorReadings = httpPOSTRequest(serverName);
sensorReadings.replace("<span aria-hidden=\"true\">184</span>", "");
sensorReadings.replace("<span aria-hidden=\"true\">183</span>", "");
sensorReadings.replace("</a>", ";");
Serial.println(sensorReadings);//顯示字串</a>取代;後的內容
String message = sensorReadings;
do
{
commaPosition = message.indexOf(';');//檢測字符串中的逗號
if (commaPosition != -1) //如果有逗號存在就向下執行
{
int idx1 = message.indexOf("模");
String scaleA = message.substring(idx1 + 3, commaPosition);
Serial.println(scaleA); //打印出第一個逗號位置的字符串
message = message.substring(commaPosition + 1, message.length()); //打印字符串,從當前位置+1開始
}
else
{ //找到最後一個逗號,如果後面還有文字,就打印出來
if (message.length() > 0)
Serial.println(message);
}
}
while (commaPosition >= 0);
}
}
void loop() {
}
String httpPOSTRequest(const char* serverName) {
client.setCACert(HARVARD_ROOT_CA_RSA_SHA1);//設置使用網站根證書驗證
// 您的域名和 URL 路徑或 IP 地址和路徑
http.begin(client, serverName);
// 指定內容類型標頭
http.addHeader("Content-Type", "text/plain");
// 使用 HTTP POST 發送的數據
// String httpRequestData = "keyword=" + receivedString;
// 發送 HTTP POST 請求
// int httpResponseCode = http.POST(httpRequestData);
// 發送 HTTP GET 請求
int httpResponseCode = http.GET();
String payload = "";
if (httpResponseCode > 0) {
// Serial.print("HTTP 響應代碼: ");
// Serial.println(httpResponseCode);
payload = http.getString();
}
else {
Serial.print("錯誤代碼: ");
Serial.println(httpResponseCode);
}
// 結束當前連接
http.end();
return payload;
}