#include <HTTPClient.h>
#include <time.h> //引用時間格式及操作函式庫, 時間及日期的STRUCTURE
#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

const char* ssid = "Wokwi-GUEST";
const char* password = "";

//----- set NTP parameters ---------------
const char *ntpServer = "pool.ntp.org"; //ntp伺服器網址
const long gmtOffset_sec = 28800;   // 台灣位於GMT+8,為28888秒
const int dayLightOffset_sec = 0;   // 台灣不使用日光節約時間,設為0

void connectWiFi() {
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.print("\nIP位址:");
  Serial.println(WiFi.localIP());
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
  connectWiFi();
  u8g2.begin();   // 啟用 OLED 
  configTime(gmtOffset_sec,dayLightOffset_sec, ntpServer); //設定NTP參數
}
int year;
byte month;
byte day;
byte hour;
byte mmin;
byte sec;

void loop() {
  if ((WiFi.status() != WL_CONNECTED)) {
    connectWiFi();
  }

  struct tm timeinfo;   //建立一個時間'結構',名字為timeinfo
  if (!getLocalTime(&timeinfo)) {   //取回NTP 時間
    Serial.println("網路時間取回失敗"); //如果失敗,回傳訊息
    return;
  }
  Serial.println(&timeinfo, "%F %T"); //列印取回的時間
  day = timeinfo.tm_mday;
  month = timeinfo.tm_mon+1;
  year = timeinfo.tm_year+1900;

  //自NTP取回時間
  hour = timeinfo.tm_hour;
  mmin = timeinfo.tm_min;
  sec = timeinfo.tm_sec;




   // 在OLED螢幕顯示資訊
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_inr16_mf); //選定字型或大小(字大小約為16)
    //u8g2.setCursor(0, 36);
    //u8g2.print(String(123.4, 1)+ "\xb0");   // 改放日期
    //u8g2.setCursor(0, 62);
    //u8g2.print(String(56) + " %");           // 改放時間

    u8g2.setCursor(0, 20);
    u8g2.print(String(year));

    u8g2.setCursor(70, 20);
    u8g2.print(String(month));

    u8g2.setCursor(96, 20);
    u8g2.print(String(day));

    u8g2.setCursor(20, 60);
    u8g2.print(String(hour));

    u8g2.setCursor(65, 60);
    u8g2.print(String(mmin));

    u8g2.setCursor(96, 60);
    u8g2.print(String(sec));

  } while ( u8g2.nextPage() );

  delay(1000);    // 間隔 1 秒
}