MeterValues 개요
MeterValues는 충전소가 중앙 시스템(CSMS)에게 충전 중 측정된 미터 데이터를 주기적으로 전송하는 메시지입니다. 이 메시지를 통해 실시간 전력 소비량, 에너지 사용량, 전압, 전류 등의 계량 정보를 모니터링하고 정확한 과금 데이터를 수집할 수 있습니다.
메시지 구조
Request (충전소 → CSMS)
{
"evseId": 1,
"meterValue": [
{
"timestamp": "2024-08-14T10:30:00.000Z",
"sampledValue": [
{
"value": 15.5,
"context": "Sample.Periodic",
"measurand": "Energy.Active.Import.Register",
"location": "Outlet",
"unitOfMeasure": {
"unit": "kWh"
}
},
{
"value": 32.1,
"context": "Sample.Periodic",
"measurand": "Power.Active.Import",
"location": "Outlet",
"unitOfMeasure": {
"unit": "kW"
}
}
]
}
]
}
Response (CSMS → 충전소)
{}
주요 필드 설명
Request 필드들
필드명 |
필수여부 |
타입 |
설명 |
evseId |
필수 |
Integer |
측정값을 생성한 EVSE의 식별자 |
meterValue |
필수 |
Array |
미터 값 배열 (하나 이상의 측정값 포함) |
meterValue 객체 필드들
필드명 |
필수여부 |
타입 |
설명 |
timestamp |
필수 |
DateTime |
측정값이 기록된 시간 (ISO 8601 형식) |
sampledValue |
필수 |
Array |
샘플링된 측정값들의 배열 |
sampledValue 객체 필드들
필드명 |
필수여부 |
타입 |
설명 |
value |
필수 |
Number |
측정된 실제 값 |
context |
선택사항 |
Enum |
측정값의 컨텍스트/상황 |
measurand |
선택사항 |
Enum |
측정 대상/종류 |
location |
선택사항 |
Enum |
측정 위치 |
unitOfMeasure |
선택사항 |
Object |
측정 단위 |
context 필드 값
값 |
설명 |
Sample.Clock |
정해진 시간 간격으로 샘플링 |
Sample.Periodic |
주기적 샘플링 |
Transaction.Begin |
트랜잭션 시작 시점 |
Transaction.End |
트랜잭션 종료 시점 |
Trigger |
수동 트리거로 측정 |
Other |
기타 상황 |
measurand 필드 값
값 |
설명 |
Energy.Active.Import.Register |
누적 유효 전력량 (kWh) |
Power.Active.Import |
순간 유효 전력 (kW) |
Current.Import |
전류 (A) |
Voltage |
전압 (V) |
Temperature |
온도 (°C) |
SoC |
배터리 충전 상태 (%) |
Frequency |
주파수 (Hz) |
Power.Factor |
역률 |
location 필드 값
값 |
설명 |
Body |
충전소 본체 |
Cable |
충전 케이블 |
EV |
전기차 |
Inlet |
충전 인렛 |
Outlet |
충전 아웃렛 |
unitOfMeasure 객체 필드들
필드명 |
필수여부 |
타입 |
설명 |
unit |
선택사항 |
String |
측정 단위 (kWh, kW, A, V 등) |
multiplier |
선택사항 |
Integer |
단위 승수 (기본값: 0) |
Response 필드들
실제 사용 예제
예제 1: 기본적인 에너지 및 전력 측정
// Request
{
"evseId": 1,
"meterValue": [
{
"timestamp": "2024-08-14T10:30:00.000Z",
"sampledValue": [
{
"value": 25.75,
"context": "Sample.Periodic",
"measurand": "Energy.Active.Import.Register",
"location": "Outlet",
"unitOfMeasure": {
"unit": "kWh"
}
},
{
"value": 7.2,
"context": "Sample.Periodic",
"measurand": "Power.Active.Import",
"location": "Outlet",
"unitOfMeasure": {
"unit": "kW"
}
}
]
}
]
}
// Response
{}
예제 2: 트랜잭션 시작 시점의 측정값
// Request
{
"evseId": 2,
"meterValue": [
{
"timestamp": "2024-08-14T09:00:00.000Z",
"sampledValue": [
{
"value": 0.00,
"context": "Transaction.Begin",
"measurand": "Energy.Active.Import.Register",
"location": "Outlet",
"unitOfMeasure": {
"unit": "kWh"
}
}
]
}
]
}
// Response
{}
예제 3: 다중 측정값 (전압, 전류, 온도 포함)
// Request
{
"evseId": 1,
"meterValue": [
{
"timestamp": "2024-08-14T11:15:00.000Z",
"sampledValue": [
{
"value": 220.5,
"context": "Sample.Periodic",
"measurand": "Voltage",
"location": "Outlet",
"unitOfMeasure": {
"unit": "V"
}
},
{
"value": 32.7,
"context": "Sample.Periodic",
"measurand": "Current.Import",
"location": "Outlet",
"unitOfMeasure": {
"unit": "A"
}
},
{
"value": 45.2,
"context": "Sample.Periodic",
"measurand": "Temperature",
"location": "Body",
"unitOfMeasure": {
"unit": "Celsius"
}
}
]
}
]
}
// Response
{}
예제 4: 배터리 상태 정보 포함
// Request
{
"evseId": 1,
"meterValue": [
{
"timestamp": "2024-08-14T12:00:00.000Z",
"sampledValue": [
{
"value": 75.5,
"context": "Sample.Periodic",
"measurand": "SoC",
"location": "EV",
"unitOfMeasure": {
"unit": "Percent"
}
}
]
}
]
}
// Response
{}
처리 흐름
- 측정값 수집: 충전소가 내장 미터에서 전력, 에너지 등의 데이터 수집
- 데이터 준비: 측정값을 OCPP 형식에 맞게 구성
- 주기적 전송: 설정된 간격(MeterValueSampleInterval)에 따라 CSMS로 전송
- CSMS 처리: 중앙 시스템이 데이터를 수신하여 저장 및 분석
- 확인 응답: CSMS가 빈 객체로 수신 확인
- 과금 처리: 누적된 에너지 데이터를 바탕으로 과금 계산
중요 포인트
- 이 메시지는 충전소에서 CSMS로 보내는 측정 데이터 전송 메시지입니다
- 정확한 과금을 위해서는
Energy.Active.Import.Register
값이 필수입니다
- 트랜잭션 시작(
Transaction.Begin
)과 종료(Transaction.End
) 시점의 측정값이 중요합니다
- 여러 종류의 측정값을 하나의 메시지에 포함시킬 수 있습니다
- 전송 주기는 충전소 설정의
MeterValueSampleInterval
에 의해 결정됩니다
- 네트워크 문제로 전송이 지연되더라도 모든 측정값을 보관했다가 복구 후 전송해야 합니다
- 측정값의 정확성은 전력 계량법 규정을 준수해야 합니다
- 온도, 전압, 전류 등의 부가 정보는 충전소 상태 모니터링에 활용됩니다
이 메시지를 통해 중앙 시스템은 실시간으로 충전 현황을 모니터링하고 정확한 과금을 수행할 수 있으며, 충전 인프라의 운영 효율성과 안전성을 확보할 수 있습니다.