[IoT Switch] ESP8266 – 실제 시간 가져오기

코드 분석

configTime, 서울의 시간은 GMT+9이다. 각 나라 시간에 맞게 조정을 하면 된다.

configTime(9 * 3600, 0, “pool.ntp.org”, “time.nist.gov”);

configTime으로 초기 셋팅을 마친 후, 아래와 같이 시간을 요청한다.

now 객체에 time에 대한 정보가 들어가 있다. 그리고 ctime은 시간을 우리가 보기 편하게 바꿔준다.

time_t now = time(nullptr);

Serial.println(ctime(&now));

시리얼로 찍어보면 아래와 같이 나온다.

요일, 날짜, 몇시, 년도

Thu Dec 20 10:10:08 2018

time 구조체 내의 각각 속성을 가져오고 싶다면 getTextTime 함수를 보면 된다.


[cpp]
#include <ESP8266WiFi.h>
#include <time.h>

const char* ssid = "";
const char* password = "";

int timezone = 3;
int dst = 0;

void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("\nConnecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}

configTime(9 * 3600, 0, "pool.ntp.org", "time.nist.gov");
Serial.println("\nWaiting for time");
while (!time(nullptr)) {
Serial.print(".");
delay(1000);
}
Serial.println("");
}

String getTextTime(time_t now)
{
struct tm * timeinfo;
timeinfo = localtime(&now);
// Serial.println(timeinfo->tm_hour);
// Serial.println(timeinfo->tm_min);
// Serial.println(timeinfo->tm_wday);
String text = String(timeinfo->tm_hour)+String(timeinfo->tm_min)+String(timeinfo->tm_wday);
Serial.println(text);
}

void loop() {
time_t now = time(nullptr);
Serial.println(ctime(&now));
getTextTime(now);
delay(1000);
}
[/cpp]


https://github.com/scanlime/esp8266-Arduino/blob/master/tests/Time/Time.ino

https://arduino.stackexchange.com/questions/42922/get-hour-with-ctime-time-library-with-esp8266

http://www.cplusplus.com/reference/ctime/tm/

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다