OCPP 2.0.1 Heartbeat 메시지


Heartbeat 개요

Heartbeat은 충전소가 중앙 시스템(CSMS)에 정기적으로 보내는 메시지로, 충전소가 온라인 상태임을 알리는 역할을 합니다. 이 메시지는 연결 상태를 확인하고 시간 동기화를 유지하는 핵심적인 메시지입니다.

메시지 구조

Request (충전소 → CSMS)

{
}

Response (CSMS → 충전소)

{
  "currentTime": "2024-08-16T10:30:00.000Z"
}

주요 필드 설명

Request 필드들

필드명 필수여부 타입 설명
- - - Heartbeat Request는 빈 JSON 객체입니다

Response 필드들

필드명 필수여부 타입 설명
currentTime 필수 DateTime CSMS의 현재 시간 (ISO 8601 형식)

실제 사용 예제

예제 1: 일반적인 Heartbeat 통신

// Request (충전소 → CSMS)
{
}

// Response (CSMS → 충전소)
{
  "currentTime": "2024-08-16T10:30:00.000Z"
}

예제 2: 시간 동기화가 필요한 상황

// Request (충전소 → CSMS)
{
}

// Response (CSMS → 충전소)
{
  "currentTime": "2024-08-16T10:30:15.123Z"
}

예제 3: 네트워크 지연 상황에서의 Heartbeat

// Request (충전소 → CSMS) - 10:30:00에 전송
{
}

// Response (CSMS → 충전소) - 10:30:02에 응답
{
  "currentTime": "2024-08-16T10:30:02.456Z"
}

Heartbeat 동작 원리

주기적 전송

  • BootNotification 응답의 interval 값으로 설정된 주기마다 전송
  • 기본적으로 300초(5분) ~ 86400초(24시간) 범위 내에서 설정
  • CSMS에서 동적으로 간격 조정 가능

시간 동기화

  • 충전소는 응답받은 currentTime을 기준으로 내부 시계 동기화
  • 트랜잭션 타임스탬프의 정확성 보장
  • 로그 및 이벤트 기록의 시간 일치성 유지

연결 상태 모니터링

  • CSMS는 Heartbeat 수신을 통해 충전소 온라인 상태 확인
  • 일정 시간 동안 Heartbeat이 없으면 오프라인으로 판단
  • 네트워크 문제나 충전소 장애 조기 감지

처리 흐름

  1. 주기적 전송: 설정된 간격마다 충전소에서 Heartbeat 전송
  2. CSMS 응답: 중앙 시스템이 현재 시간과 함께 응답
  3. 시간 동기화: 충전소가 수신한 시간으로 내부 시계 조정
  4. 상태 업데이트: CSMS에서 해당 충전소를 온라인 상태로 유지
  5. 다음 주기 대기: 설정된 간격 후 다음 Heartbeat 준비

특별한 상황들

네트워크 단절 시

// 네트워크 복구 후 첫 번째 Heartbeat
// Request
{
}

// Response - 시간 차이 확인 가능
{
  "currentTime": "2024-08-16T11:45:30.000Z"
}

간격 변경 후

// ChangeConfiguration으로 HeartbeatInterval 변경 후
// Request (새로운 간격으로 전송)
{
}

// Response
{
  "currentTime": "2024-08-16T10:35:00.000Z"
}

관련 설정값

주요 Configuration Key

설정 키 기본값 설명
HeartbeatInterval 86400 Heartbeat 전송 간격 (초)
ClockAlignedDataInterval 0 시계 정렬된 데이터 전송 간격

모니터링 및 디버깅

정상 동작 지표

  • 설정된 간격에 맞춰 정확한 전송
  • CSMS 응답 시간이 일정 범위 내 유지
  • 시간 동기화 오차가 허용 범위 내

문제 상황 감지

  • Heartbeat 전송 누락 또는 지연
  • CSMS 응답 시간 급격한 증가
  • 시간 동기화 오차 누적


중요 포인트

  • 가장 간단한 메시지: Request는 빈 JSON, Response는 시간만 포함
  • 필수적인 생존 신호: 충전소 온라인 상태를 보장하는 핵심 메시지
  • 시간 동기화 역할: 모든 OCPP 메시지의 타임스탬프 정확성 기반
  • 네트워크 품질 지표: Heartbeat 응답 시간으로 네트워크 상태 모니터링 가능
  • 자동 복구 메커니즘: 네트워크 복구 시 자동으로 시간 재동기화

Heartbeat은 단순해 보이지만 OCPP 통신의 안정성과 신뢰성을 보장하는 매우 중요한 메시지입니다. 이를 통해 충전소와 중앙 시스템 간의 지속적인 연결 상태를 유지하고, 정확한 시간 기준을 공유할 수 있습니다.