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>

const char* ntpServer = "pool.ntp.org"; // NTP 서버 주소

void setup() {
  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. 시간 가져오기 (함수 예시)

unsigned long getTime() {
  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) 설정

✅ 9. 요약 정리

항목 설명
NTP 목적 디바이스 시간 정확도 확보
IoT 필요성 데이터 시간 기록, 차트 정렬, 로그 관리
사용 방법 configTime() 함수로 설정
NTP 서버 pool.ntp.org, time.google.com
적용 예시 Firebase + ESP32 시간 기반 데이터 저장

⚠️ **GitHub.com Fallback** ⚠️