OCPP 2.0.1 MeterValues 메시지

 

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
{}

처리 흐름

  1. 측정값 수집: 충전소가 내장 미터에서 전력, 에너지 등의 데이터 수집
  2. 데이터 준비: 측정값을 OCPP 형식에 맞게 구성
  3. 주기적 전송: 설정된 간격(MeterValueSampleInterval)에 따라 CSMS로 전송
  4. CSMS 처리: 중앙 시스템이 데이터를 수신하여 저장 및 분석
  5. 확인 응답: CSMS가 빈 객체로 수신 확인
  6. 과금 처리: 누적된 에너지 데이터를 바탕으로 과금 계산

중요 포인트

  • 이 메시지는 충전소에서 CSMS로 보내는 측정 데이터 전송 메시지입니다
  • 정확한 과금을 위해서는 Energy.Active.Import.Register 값이 필수입니다
  • 트랜잭션 시작(Transaction.Begin)과 종료(Transaction.End) 시점의 측정값이 중요합니다
  • 여러 종류의 측정값을 하나의 메시지에 포함시킬 수 있습니다
  • 전송 주기는 충전소 설정의 MeterValueSampleInterval에 의해 결정됩니다
  • 네트워크 문제로 전송이 지연되더라도 모든 측정값을 보관했다가 복구 후 전송해야 합니다
  • 측정값의 정확성은 전력 계량법 규정을 준수해야 합니다
  • 온도, 전압, 전류 등의 부가 정보는 충전소 상태 모니터링에 활용됩니다

이 메시지를 통해 중앙 시스템은 실시간으로 충전 현황을 모니터링하고 정확한 과금을 수행할 수 있으며, 충전 인프라의 운영 효율성과 안전성을 확보할 수 있습니다.