範例十二

取得網路時間


#include <WiFi.h>

#include <NTPClient.h>

#include <WiFiUdp.h>

// WiFi

char ssid1[] = "mason-4f"; // your network SSID (name)

char pass1[] = "a12341234"; // your network password

int status = WL_IDLE_STATUS; // the Wifi radio's status


//網路校時

//https://randomnerdtutorials.com/esp8266-nodemcu-date-time-ntp-client-server-arduino/

WiFiUDP ntpUDP;

NTPClient timeClient(ntpUDP);


String currTime("");


void setup()

{

Serial.begin(115200);


WiFi.begin(ssid1, pass1);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.println("Connecting to WiFi..");

}

Serial.println(WiFi.localIP());


if (WiFi.status() == WL_CONNECTED )

{

// 使用 NTP 校時

timeClient.begin();

timeClient.setTimeOffset(8 * 3600); //UTC+8

while (!timeClient.update()) {

timeClient.forceUpdate();

}

}

}


void loop()

{

// Delay between measurements.

delay(1000);

unsigned long epochTime = timeClient.getEpochTime();

struct tm *ptm = gmtime((time_t *)&epochTime);

currTime = String(ptm->tm_year + 1900) + "-" + String(ptm->tm_mon + 1) + "-" + String(ptm->tm_mday) + " " + timeClient.getFormattedTime();


Serial.println(currTime);

}