10주차_참고 : NTP(Network Time Protocol) 소개 - dhryu60/SmartDevice_2025-1 GitHub Wiki
🔹 NTP(Network Time Protocol) 소개 강의자료
✅ 1. NTP란?
**NTP (Network Time Protocol)**는 컴퓨터 시스템이 인터넷을 통해 정확한 시간을 동기화할 수 있도록 도와주는 통신 프로토콜입니다.
국제 표준 시간(UTC)을 기준으로 여러 장치들이 동일한 시각을 유지하게 합니다.
✅ 2. NTP가 필요한 이유
필요성
설명
시간 동기화
여러 장치 간에 동일한 기준 시각 유지 필요
타임스탬프 기록
센서값을 시간 순으로 기록하거나 분석하려면 정확한 시간 정보 필요
로그 정렬 및 추적
Firebase나 클라우드 DB에 저장된 데이터를 시간 순서로 정렬
보안 프로토콜
인증서 만료 시간 등 시간 기준의 보안 기술 구현에 필수
✅ 3. NTP 작동 원리 (기본 개념)
[ESP32] ──요청──▶ [NTP 서버]
◀─응답──
ESP32와 같은 디바이스가 인터넷상의 NTP 서버에 현재 시간을 요청
서버는 응답으로 정확한 UTC 시간을 전송
ESP32는 이를 수신하여 내부 시간을 보정
✅ 4. ESP32에서의 NTP 설정 예시
#include<WiFi.h>
#include<time.h>constchar* ntpServer = "pool.ntp.org"; // NTP 서버 주소voidsetup() {
Serial.begin(115200);
WiFi.begin("your_ssid", "your_password");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi 연결 중...");
}
configTime(0, 0, ntpServer); // 시간대 및 DST 설정 없이 UTC 기준 시간 요청
Serial.println("NTP 동기화 시도 중...");
}
✅ 5. 시간 가져오기 (함수 예시)
unsignedlonggetTime() {
time_t now;
time(&now); // 현재 UTC 시간return now; // 초 단위 timestamp (1970년 1월 1일부터)
}
이 값을 Firebase에 저장하면 timestamp 기반 기록 관리 가능
✅ 6. 대표적인 NTP 서버
주소
설명
pool.ntp.org
전 세계적으로 가장 널리 사용되는 NTP 서버
time.google.com
구글이 제공하는 안정적인 NTP 서버
ntp.korea.kr
한국인터넷진흥원(KISA)에서 제공하는 한국 공식 시간 서버
asia.pool.ntp.org
아시아 지역 최적화 서버 그룹
✅ 7. Firebase 연동 시 활용 예
적용 위치
설명
센서 데이터 로깅
timestamp를 기반으로 /room1/{timestamp} 형태로 저장
실시간 데이터 차트
시간축 기반으로 데이터 시각화 (예: 구글 차트, Highcharts 등)
이벤트 발생 기록
특정 동작 발생 시 시간 정보와 함께 저장 → 로그 추적 가능
✅ 8. 주의사항
인터넷 연결이 반드시 필요
처음 부팅 후 NTP 응답 대기 시간이 수초 걸릴 수 있음
타임존 처리는 코드 상에서 별도 로직 필요 (한국 시간은 UTC+9)
configTime(9 * 3600, 0, ntpServer); // 한국 표준시(KST) 설정