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이 없으면 오프라인으로 판단
- 네트워크 문제나 충전소 장애 조기 감지
처리 흐름
- 주기적 전송: 설정된 간격마다 충전소에서 Heartbeat 전송
- CSMS 응답: 중앙 시스템이 현재 시간과 함께 응답
- 시간 동기화: 충전소가 수신한 시간으로 내부 시계 조정
- 상태 업데이트: CSMS에서 해당 충전소를 온라인 상태로 유지
- 다음 주기 대기: 설정된 간격 후 다음 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 통신의 안정성과 신뢰성을 보장하는 매우 중요한 메시지입니다. 이를 통해 충전소와 중앙 시스템 간의 지속적인 연결 상태를 유지하고, 정확한 시간 기준을 공유할 수 있습니다.