OCPP 2.0.1 GetConfiguration 메시지

 

GetConfiguration 개요

GetConfiguration은 중앙 시스템(CSMS)이 충전소의 현재 설정값을 조회할 때 사용하는 메시지입니다. 이 메시지를 통해 충전소의 설정 상태를 확인하고, ChangeConfiguration 전후의 검증이나 설정 감사를 수행할 수 있습니다.

메시지 구조

Request (CSMS → 충전소)

{
  "key": ["HeartbeatInterval", "MeterValueSampleInterval"]
}

Response (충전소 → CSMS)

{
  "configurationKey": [
    {
      "key": "HeartbeatInterval",
      "readonly": false,
      "value": "300"
    },
    {
      "key": "MeterValueSampleInterval", 
      "readonly": false,
      "value": "60"
    }
  ],
  "unknownKey": []
}

주요 필드 설명

Request 필드들

필드명 필수여부 타입 설명
key 선택사항 Array[String] 조회할 설정 키 목록 (생략 시 모든 설정 반환)

Response 필드들

필드명 필수여부 타입 설명
configurationKey 선택사항 Array[Object] 설정 키-값 쌍 목록
unknownKey 선택사항 Array[String] 알 수 없는 키 목록

configurationKey 객체 구조

필드명 필수여부 타입 설명
key 필수 String 설정 키 이름
readonly 필수 Boolean 읽기 전용 여부
value 선택사항 String 현재 설정값 (설정되지 않은 경우 생략)

실제 사용 예제

예제 1: 특정 설정 조회

// Request - 하트비트 간격만 조회
{
  "key": ["HeartbeatInterval"]
}

// Response
{
  "configurationKey": [
    {
      "key": "HeartbeatInterval",
      "readonly": false,
      "value": "300"
    }
  ],
  "unknownKey": []
}

예제 2: 모든 설정 조회

// Request - 모든 설정 조회
{
}

// Response
{
  "configurationKey": [
    {
      "key": "HeartbeatInterval",
      "readonly": false,
      "value": "300"
    },
    {
      "key": "MeterValueSampleInterval",
      "readonly": false,
      "value": "60"
    },
    {
      "key": "AuthorizeRemoteTxRequests",
      "readonly": false,
      "value": "true"
    },
    {
      "key": "SupportedFeatureProfiles",
      "readonly": true,
      "value": "Core,SmartCharging,RemoteTrigger"
    },
    {
      "key": "ChargePointModel",
      "readonly": true,
      "value": "AC-22kW-Type2"
    }
  ],
  "unknownKey": []
}

예제 3: 존재하지 않는 키 조회

// Request
{
  "key": ["InvalidKey", "HeartbeatInterval", "AnotherInvalidKey"]
}

// Response
{
  "configurationKey": [
    {
      "key": "HeartbeatInterval",
      "readonly": false,
      "value": "300"
    }
  ],
  "unknownKey": ["InvalidKey", "AnotherInvalidKey"]
}

예제 4: 값이 설정되지 않은 키

// Request
{
  "key": ["LocalPreAuthorize", "HeartbeatInterval"]
}

// Response
{
  "configurationKey": [
    {
      "key": "LocalPreAuthorize",
      "readonly": false
      // value 필드 없음 = 설정되지 않음
    },
    {
      "key": "HeartbeatInterval",
      "readonly": false,
      "value": "300"
    }
  ],
  "unknownKey": []
}

예제 5: 읽기 전용 설정 조회

// Request
{
  "key": ["ChargePointModel", "SupportedFeatureProfiles", "ChargePointSerialNumber"]
}

// Response  
{
  "configurationKey": [
    {
      "key": "ChargePointModel",
      "readonly": true,
      "value": "DC-50kW-CCS"
    },
    {
      "key": "SupportedFeatureProfiles", 
      "readonly": true,
      "value": "Core,SmartCharging,RemoteTrigger,LocalAuthListManagement"
    },
    {
      "key": "ChargePointSerialNumber",
      "readonly": true,
      "value": "CP2024001"
    }
  ],
  "unknownKey": []
}

주요 Configuration Key 카테고리

네트워크 및 통신 설정

설정 키 읽기전용 기본값 설명
HeartbeatInterval false 86400 하트비트 전송 간격 (초)
MessageTimeout false 60 메시지 응답 대기 시간 (초)
WebSocketPingInterval false 0 WebSocket ping 간격 (초)

인증 및 보안 설정

설정 키 읽기전용 기본값 설명
AuthorizeRemoteTxRequests false true 원격 트랜잭션 인증 필요 여부
LocalAuthorizeOffline false true 오프라인 로컬 인증 허용
SecurityProfile false 0 보안 프로파일 레벨

충전 관련 설정

설정 키 읽기전용 기본값 설명
MeterValueSampleInterval false 60 미터값 샘플 간격 (초)
StopTransactionOnInvalidId false true 유효하지 않은 ID 시 충전 중단
MaxEnergyOnInvalidId false 0 유효하지 않은 ID 시 최대 에너지

읽기 전용 정보

설정 키 읽기전용 설명
ChargePointModel true 충전소 모델명
ChargePointVendor true 제조업체명
ChargePointSerialNumber true 시리얼 번호
SupportedFeatureProfiles true 지원하는 기능 프로파일 목록
FirmwareVersion true 펌웨어 버전

사용 시나리오

설정 변경 전 검증

// 1단계: 현재 값 확인
{
  "key": ["HeartbeatInterval"]
}

// 2단계: ChangeConfiguration 실행
// 3단계: 변경 결과 재확인
{
  "key": ["HeartbeatInterval"]
}

시스템 감사

// 모든 설정 조회하여 표준 정책 준수 확인
{
  // key 없음 = 모든 설정 반환
}

트러블슈팅

// 문제 발생 시 관련 설정 확인
{
  "key": [
    "MessageTimeout",
    "WebSocketPingInterval", 
    "HeartbeatInterval",
    "NetworkConfigurationPriority"
  ]
}

초기 설정 확인

// 새 충전소 연결 시 기본 설정 확인
{
  "key": [
    "AuthorizeRemoteTxRequests",
    "LocalAuthorizeOffline",
    "MeterValueSampleInterval",
    "SecurityProfile"
  ]
}

고급 활용 방법

배치 설정 관리

// 여러 충전소의 동일 설정 일괄 조회
{
  "key": [
    "HeartbeatInterval",
    "MeterValueSampleInterval", 
    "SecurityProfile",
    "AuthorizeRemoteTxRequests"
  ]
}

설정 템플릿 검증

// 표준 설정 템플릿과 현재 설정 비교
{
  "key": [
    "MessageTimeout",
    "TransactionMessageAttempts",
    "TransactionMessageRetryInterval",
    "UnlockConnectorOnEVSideDisconnect"
  ]
}

성능 최적화 분석

// 성능 관련 설정 현황 파악
{
  "key": [
    "MeterValueSampleInterval",
    "ClockAlignedDataInterval", 
    "GetConfigurationMaxKeys",
    "HeartbeatInterval"
  ]
}

설정 분석 및 관리

설정값 검증

// 응답 분석 예제
{
  "configurationKey": [
    {
      "key": "HeartbeatInterval",
      "readonly": false,
      "value": "300"     // 정상 범위 (60-86400)
    },
    {
      "key": "MeterValueSampleInterval", 
      "readonly": false,
      "value": "0"       // 비활성화 상태
    }
  ]
}

읽기 전용 설정 식별

{
  "configurationKey": [
    {
      "key": "SupportedFeatureProfiles",
      "readonly": true,  // 변경 불가능한 설정
      "value": "Core,SmartCharging,RemoteTrigger"
    }
  ]
}

미설정 항목 발견

{
  "configurationKey": [
    {
      "key": "LocalPreAuthorize",
      "readonly": false
      // value 없음 = 기본값 사용 중
    }
  ]
}

모니터링 및 대시보드

설정 상태 모니터링

// 정기적 설정 상태 확인
{
  "key": [
    "ConnectionTimeOut",
    "GetConfigurationMaxKeys",
    "ResetRetries", 
    "MessageTimeout"
  ]
}

보안 설정 감사

// 보안 관련 설정 일괄 점검
{
  "key": [
    "SecurityProfile",
    "CertificateSignedMaxChainSize",
    "CertificateStoreMaxLength",
    "AuthorizationCacheEnabled"
  ]
}

성능 지표 수집

// 성능 영향 설정 확인
{
  "key": [
    "MeterValueSampleInterval",
    "HeartbeatInterval",
    "ClockAlignedDataInterval",
    "MeterValuesAlignedData"
  ]
}

오류 처리

부분적 실패 처리

// Request
{
  "key": ["ValidKey1", "InvalidKey", "ValidKey2"]
}

// Response
{
  "configurationKey": [
    {
      "key": "ValidKey1",
      "readonly": false,
      "value": "someValue"
    },
    {
      "key": "ValidKey2", 
      "readonly": true,
      "value": "anotherValue"
    }
  ],
  "unknownKey": ["InvalidKey"]
}

빈 응답 처리

// Request - 존재하지 않는 키들만 요청
{
  "key": ["NonExistentKey1", "NonExistentKey2"]
}

// Response
{
  "configurationKey": [],
  "unknownKey": ["NonExistentKey1", "NonExistentKey2"]
}

운영 활용 사례

설정 백업

// 전체 설정 백업을 위한 조회
{
  // key 생략으로 모든 설정 조회
}

// 응답을 JSON 파일로 저장하여 백업

설정 동기화 확인

// 여러 충전소 간 설정 일치성 확인
{
  "key": [
    "AuthorizeRemoteTxRequests",
    "MeterValueSampleInterval",
    "HeartbeatInterval",
    "SecurityProfile"
  ]
}

문제 진단

// 통신 문제 시 네트워크 설정 확인
{
  "key": [
    "MessageTimeout",
    "WebSocketPingInterval",
    "TransactionMessageAttempts",
    "TransactionMessageRetryInterval"
  ]
}

성능 튜닝

// 성능 최적화를 위한 현재 상태 파악
{
  "key": [
    "MeterValueSampleInterval",
    "MeterValuesAlignedData", 
    "StopTxnSampledData",
    "SampledDataTxStartedData"
  ]
}

ChangeConfiguration과의 연계

설정 변경 워크플로우

// 1단계: 변경 전 현재 값 확인
{
  "key": ["HeartbeatInterval"]
}

// 2단계: ChangeConfiguration 실행
// {
//   "key": "HeartbeatInterval",
//   "value": "180"  
// }

// 3단계: 변경 후 확인
{
  "key": ["HeartbeatInterval"]
}

롤백 준비

// 변경 전 백업용 조회
{
  "key": [
    "SecurityProfile",
    "AuthorizeRemoteTxRequests", 
    "LocalAuthorizeOffline"
  ]
}

// 백업된 값으로 필요 시 롤백 수행

대량 설정 관리

충전소 그룹 설정 표준화

// 표준 설정 세트 확인
{
  "key": [
    "HeartbeatInterval",
    "MeterValueSampleInterval",
    "MessageTimeout", 
    "AuthorizeRemoteTxRequests",
    "LocalAuthorizeOffline",
    "StopTransactionOnInvalidId",
    "SecurityProfile"
  ]
}

펌웨어별 설정 차이 분석

// 펌웨어 업데이트 후 설정 변화 확인
{
  "key": [
    "SupportedFeatureProfiles",
    "FirmwareVersion",
    "LocalAuthListEnabled",
    "LocalAuthListMaxLength"
  ]
}

자동화 및 스크립팅

정기 설정 감사

# 의사 코드: 주간 설정 감사
weekly_audit_keys = [
    "SecurityProfile",
    "AuthorizationCacheEnabled", 
    "CertificateSignedMaxChainSize",
    "MessageTimeout"
]

for station in charging_stations:
    response = station.get_configuration(weekly_audit_keys)
    validate_security_compliance(response)

설정 드리프트 감지

# 의사 코드: 설정 변경 감지
standard_config = load_standard_configuration()
current_config = station.get_configuration()
differences = compare_configurations(standard_config, current_config)

성능 최적화

선택적 조회 활용

// 필요한 설정만 조회하여 네트워크 효율성 향상
{
  "key": ["HeartbeatInterval", "MeterValueSampleInterval"]
}
// 전체 조회보다 응답 크기 최소화

캐싱 전략

// 자주 변경되지 않는 읽기 전용 설정은 캐싱
{
  "key": ["ChargePointModel", "SupportedFeatureProfiles"]
}
// 결과를 로컬 캐시에 저장하여 반복 조회 최소화

중요 포인트

  • 설정 현황 파악: 충전소의 모든 설정 상태를 실시간 확인
  • 변경 검증: ChangeConfiguration 전후 설정값 확인 필수
  • 읽기 전용 구분: readonly 필드로 변경 가능/불가능 설정 식별
  • 선택적 조회: 특정 키만 조회하여 효율성 향상
  • 오류 처리: unknownKey 배열로 지원하지 않는 설정 식별
  • 백업 및 복구: 전체 설정 조회로 백업 데이터 생성
  • 표준화 지원: 여러 충전소의 설정 일관성 관리
  • 감사 추적: 정기적 설정 점검으로 보안 및 규정 준수

GetConfiguration은 충전소 설정 관리의 핵심 도구로, ChangeConfiguration과 함께 사용하여 체계적이고 안전한 원격 설정 관리를 가능하게 합니다.