OCPP 2.0.1 StatusNotification 메시지
StatusNotification 개요
StatusNotification은 충전소의 커넥터 상태가 변경될 때마다 중앙 시스템(CSMS)에 전송하는 메시지입니다. 충전소의 실시간 상태 정보를 CSMS에 알려 원격 모니터링과 관리를 가능하게 하는 핵심적인 메시지입니다.
메시지 구조
Request (충전소 → CSMS)
{
"timestamp": "2024-08-16T10:30:00.000Z",
"connectorStatus": "Available",
"evseId": 1,
"connectorId": 1
}
Response (CSMS → 충전소)
{
}
주요 필드 설명
Request 필드들
| 필드명 | 필수여부 | 타입 | 설명 |
|---|---|---|---|
| timestamp | 필수 | DateTime | 상태 변경 발생 시간 (ISO 8601 형식) |
| connectorStatus | 필수 | Enum | 커넥터 상태 |
| evseId | 필수 | Integer | EVSE(Electric Vehicle Supply Equipment) ID |
| connectorId | 필수 | Integer | 커넥터 ID |
connectorStatus 필드 값
| 상태 | 설명 |
|---|---|
| Available | 사용 가능 - 충전 준비 완료 |
| Occupied | 사용 중 - 차량이 연결됨 |
| Reserved | 예약됨 - 특정 사용자를 위해 예약 |
| Unavailable | 사용 불가 - 정비, 오류 등으로 비활성화 |
| Faulted | 오류 - 하드웨어 또는 소프트웨어 오류 발생 |
Response 필드들
| 필드명 | 필수여부 | 타입 | 설명 |
|---|---|---|---|
| - | - | - | StatusNotification Response는 빈 JSON 객체입니다 |
실제 사용 예제
예제 1: 충전 시작 시 상태 변경
// 차량 연결 시
// Request
{
"timestamp": "2024-08-16T10:30:00.000Z",
"connectorStatus": "Occupied",
"evseId": 1,
"connectorId": 1
}
// Response
{
}
예제 2: 충전 완료 후 상태 변경
// 충전 완료 후 차량 분리
// Request
{
"timestamp": "2024-08-16T12:45:30.000Z",
"connectorStatus": "Available",
"evseId": 1,
"connectorId": 1
}
// Response
{
}
예제 3: 오류 발생 시 상태 변경
// 하드웨어 오류 발생
// Request
{
"timestamp": "2024-08-16T11:15:45.000Z",
"connectorStatus": "Faulted",
"evseId": 2,
"connectorId": 1
}
// Response
{
}
예제 4: 정비로 인한 비활성화
// 정비 모드 진입
// Request
{
"timestamp": "2024-08-16T09:00:00.000Z",
"connectorStatus": "Unavailable",
"evseId": 1,
"connectorId": 1
}
// Response
{
}
예제 5: 예약 시스템 사용
// 특정 사용자 예약
// Request
{
"timestamp": "2024-08-16T08:30:00.000Z",
"connectorStatus": "Reserved",
"evseId": 3,
"connectorId": 1
}
// Response
{
}
상태 전환 시나리오
일반적인 충전 과정
Available → Occupied → Available
예약 시스템 포함
Available → Reserved → Occupied → Available
오류 상황
Available → Faulted → Unavailable → Available
정비 상황
Available → Unavailable → Available
상태별 상세 설명
Available (사용 가능)
- 충전기가 정상 작동하며 충전 준비 완료
- 사용자가 충전을 시작할 수 있는 상태
- 가장 일반적인 대기 상태
Occupied (사용 중)
- 차량이 커넥터에 연결된 상태
- 충전 중이거나 충전 완료 후 차량이 아직 연결된 상태
- 다른 사용자는 사용 불가
Reserved (예약됨)
- 특정 사용자를 위해 예약된 상태
- 예약 시간 동안 다른 사용자 사용 불가
- ReserveNow 메시지로 설정됨
Unavailable (사용 불가)
- 관리자에 의한 의도적 비활성화
- 정비, 점검, 업데이트 등의 이유
- ChangeAvailability 메시지로 설정 가능
Faulted (오류)
- 하드웨어 또는 소프트웨어 오류 발생
- 안전상의 이유로 충전 불가
- 수리 또는 리셋이 필요한 상태
처리 흐름
- 상태 변경 감지: 충전소 하드웨어/소프트웨어가 상태 변화 감지
- 타임스탬프 기록: 정확한 변경 시간 기록
- StatusNotification 전송: CSMS에 상태 변경 알림
- CSMS 처리: 중앙 시스템에서 충전소 상태 업데이트
- 응답 전송: 빈 JSON으로 수신 확인
- 모니터링 업데이트: 관리자 대시보드 및 앱에 상태 반영
모니터링 및 분석
상태 지속 시간 분석
// Available 상태 지속 시간
{
"timestamp": "2024-08-16T10:00:00.000Z",
"connectorStatus": "Available",
"evseId": 1,
"connectorId": 1
}
// 30분 후 Occupied로 변경
{
"timestamp": "2024-08-16T10:30:00.000Z",
"connectorStatus": "Occupied",
"evseId": 1,
"connectorId": 1
}
이용률 계산
- Available 시간 비율로 가용성 측정
- Occupied 시간 비율로 이용률 계산
- Faulted 시간 비율로 안정성 평가
문제 상황 감지
- Faulted 상태 빈발: 하드웨어 점검 필요
- Unavailable 장기 지속: 정비 상황 확인
- 상태 변경 누락: 통신 문제 의심
관련 메시지와의 연관성
StartTransaction과 연관
// StatusNotification (Occupied)
{
"timestamp": "2024-08-16T10:30:00.000Z",
"connectorStatus": "Occupied",
"evseId": 1,
"connectorId": 1
}
// 이후 StartTransaction 전송
StopTransaction과 연관
// StopTransaction 후
// StatusNotification (Available)
{
"timestamp": "2024-08-16T12:45:30.000Z",
"connectorStatus": "Available",
"evseId": 1,
"connectorId": 1
}
ChangeAvailability와 연관
// ChangeAvailability 수신 후
// StatusNotification (Unavailable)
{
"timestamp": "2024-08-16T09:00:00.000Z",
"connectorStatus": "Unavailable",
"evseId": 1,
"connectorId": 1
}
중요 포인트
- 실시간 모니터링: 충전소 상태의 실시간 추적 가능
- 정확한 타임스탬프: 모든 상태 변경의 정확한 시점 기록
- EVSE/Connector 식별: 멀티포트 충전소에서 개별 커넥터 상태 관리
- 빈 응답: Response는 단순 수신 확인 역할
- 상태 일관성: 실제 하드웨어 상태와 보고된 상태 일치 보장
- 오류 대응: Faulted 상태 시 신속한 대응 체계 필요
StatusNotification은 충전 인프라의 운영 상태를 실시간으로 파악하고 관리할 수 있게 해주는 핵심 메시지입니다. 이를 통해 충전소 운영자는 각 충전기의 상태를 원격으로 모니터링하고, 문제 발생 시 즉시 대응할 수 있습니다.