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과 함께 사용하여 체계적이고 안전한 원격 설정 관리를 가능하게 합니다.