Custom Messages
본 문서는 OCPP 버전별 SK일렉링크 커스텀 메시지 사용 방식을 정의합니다.
DataTransfer를 사용하는 경우vendorId는 항상com.skelectlink입니다.
OCPP 2.1
OCPP v2.1 표준 메시지는 이 부록에 중복 정의하지 않습니다. OCPP v2.1 표준 메시지로 표현되지 않는 SK일렉링크 확장 기능만 DataTransfer:com.skelectlink로 교환합니다.
단가와 결제 정보는 OCPP v2.1 표준 메시지 조합을 우선 사용합니다. RemoteStartTransactionAdditionalInfoType을 RequestStartTransaction에 그대로 넣지 말고, 아래 표준 위치로 나누어 표현합니다. 충전 중 비용 표시는 TransactionEventResponse.totalCost를 기본으로 사용하고, 정산 결과는 NotifySettlement를 우선 사용합니다.
OCPP v1.6 additionalInfo 항목 | OCPP v2.1 사용 방식 |
|---|---|
currency, unitPrice | EVSE 로컬 비용 계산이 필요한 경우 chargingProfile.chargingSchedule.absolutePriceSchedule 또는 Tariff 계열 메시지로 전달합니다. |
paymentMethod, demandValue | 요구 금액은 TransactionEventResponse.transactionLimit.maxCost, 요구 전력량은 TransactionEventResponse.transactionLimit.maxEnergy로 전달합니다. |
userTargetSoC | 충전 한도로 처리할 수 있는 경우 TransactionEventResponse.transactionLimit.maxSoC를 사용합니다. |
memberType, memberInfo | 항상 idToken.additionalInfo로 포함합니다. memberType은 type=MemberType으로 전달하고, 로밍 회원인 경우 memberInfo의 로밍 정보는 type=RoamingCompanyCode, type=RoamingCompanyName으로 나누어 전달합니다. |
consented | K-VAS 충전기인 경우 idToken.additionalInfo(type=VASPrivacyPolicyConsent, additionalIdToken=true/false)로 포함합니다. 충전 중 별도 갱신이 필요한 경우 SetPrivacyPolicyCheck 확장을 사용합니다. |
MAC 주소 인증은 OCPP v2.1 Authorize의 idToken.type=MacAddress로 처리할 수 있습니다. 단, 카드번호와 MAC 주소를 등록 또는 연결하는 MacRegister 동작은 OCPP v2.1 표준 메시지로 대체되지 않으므로 DataTransfer 확장으로 유지합니다.
Plug & Charge 등록에서 eMAID와 멤버십 카드를 연결하는 PncRegister 동작도 OCPP v2.1 표준 메시지로 대체되지 않으므로 DataTransfer 확장으로 유지합니다.
DataTransfer 확장
| Message | messageId | Direction |
|---|---|---|
| MAC 주소 등록 | MacRegister | EVSE -> CSMS |
| Plug & Charge (PnC) 등록 | PncRegister | EVSE -> CSMS |
| 스마트충전(VAS) 인증서 발급 요청 | GetSmartChargeCertificate | EVSE -> CSMS |
| 스마트충전(VAS) 인증서 설치 요청 | InstallSmartChargeCertificate | CSMS -> EVSE |
| 스마트충전(VAS) 인증서 정보 조회 | GetSmartChargeCertificateInfoType | CSMS -> EVSE |
| 스마트충전(VAS) 세션키 발급 요청 | GetSmartChargeSessionKey | EVSE -> CSMS |
| 스마트충전(VAS) 세션키 설치 요청 | InstallSmartChargeSessionKey | CSMS -> EVSE |
| 사용자 Target SoC 설정 | SetUserTargetSoC | CSMS -> EVSE 또는 EVSE -> CSMS |
| 스마트충전(VAS) 배터리 정보 전송 | BatteryInfo | EVSE -> CSMS |
| 스마트충전(VAS) 개인정보 동의 설정 | SetPrivacyPolicyCheck | CSMS -> EVSE 또는 EVSE -> CSMS |
| 충전 고유키 조회 | GetEssentialsKey | EVSE -> CSMS |
| 운영 스케줄 설정 | SetOperatingSchedule | CSMS -> EVSE |
| 광고 프로파일 조회 | GetAdProfile | EVSE -> CSMS |
| 광고 미디어 조회 | GetAdMedia | EVSE -> CSMS |
| 화면 캡처 트리거 | TriggerScreenCapture | CSMS -> EVSE |
| 화면 캡처 결과 전송 | ScreenCaptureResult | EVSE -> CSMS |
OCPP 1.6
OCPP v1.6 충전기는 아래 메시지를 DataTransfer:com.skelectlink로 교환합니다.
RemoteStartTransaction
CSMS가 EVSE로 요청하는 해당 메시지는, 아래 비표준 파라미터를 추가로 포함합니다.
| Field Name | Type | Required | Description |
|---|---|---|---|
| connectorId | Number | Optional | 충전을 시작할 커넥터 번호 |
| idTag | String | Required | transactionId 수신전 임시로 사용하는 임의의 키값 |
| chargingProfile | Number | Optional | 스마트 충전 관련 규격 |
| additionalInfo | RemoteStartTransactionAdditionalInfoType | Optional | (추가) |
DataTransfer
이 메시지의 하위 카테고리는 messageId 별로 data 값을 정의하는 내용을 담습니다.
단가 조회(Legacy)
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: getPrice.req
단가 조회 요청
data가 없습니다.예시
단가 조회 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| connectorId | Number | Required | fixed 0 |
| currency | String | Required | fixed "" |
| unitPrice | Number | Required | kWh/원 단가 |
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"connectorId": 0,
"currency": "",
"unitPrice": 420
},
"status": "Accepted"
}
]
단가 조회
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: GetUnitPrice
단가 조회 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| unitPriceEnumType | UnitPriceEnumType | Required | 요청할 단가 타입 구분 |
| connectorId | Number | Optional | 커넥터 식별자 (unitPriceEnumType이 "Proportional"인 경우 필수) |
예시 — Member 타입
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetUnitPrice",
"data": {
"unitPriceEnumType": "Member"
}
}
]
예시 — Proportional 타입
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetUnitPrice",
"data": {
"unitPriceEnumType": "Proportional",
"connectorId": 1
}
}
]
단가 조회 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| currency | String | Required | fixed "KRW" |
| unitPrice | String | Required | kWh/원 단가 |
| memberInfo | MemberInfoType | Optional | 회원 유형 정보 (unitPriceEnumType이 "Proportional"인 경우에만 포함) |
예시 — 기본 응답
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"currency": "KRW",
"unitPrice": "324.4"
},
"status": "Accepted"
}
]
예시 — 회원 단가 (ST)
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"currency": "KRW",
"unitPrice": "292.9",
"memberInfo": {
"memberType": "MEMBER"
}
},
"status": "Accepted"
}
]
예시 — 로밍 단가 (ROAMING)
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"currency": "KRW",
"unitPrice": "350.0",
"memberInfo": {
"memberType": "ROAMING",
"roamingCompanyCode": "ME",
"roamingCompanyName": "한국전력"
}
},
"status": "Accepted"
}
]
구독 요금제 단가 조회
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다. 구독 요금제가 적용되는 충전기에서 사용자에게 구독 요금제 구간 단가(최소~최대)와 적용 기간을 안내할 때 사용합니다.
messageId: GetSubscriptionPrice
구독 요금제 단가 조회 요청
data가 없습니다. 대상 충전기는 세션 컨텍스트로 식별합니다.예시
구독 요금제 단가 조회 응답
구독 요금제가 적용되고 현재 유효한 구간이 있으면 status는 Accepted이며 아래 data를 포함합니다. 구독 요금제 대상이 아니거나 현재 유효한 구간이 없으면 status는 Rejected이며 data를 포함하지 않습니다.
maxPrice는 제공되지 않을 수 있으며, 이 경우minPrice하나만 표시합니다.- 충전기는 적용 시작~종료 일자 이내 시간 동안 구독 요금제 구간 가격을 표시합니다.
| Field Name | Type | Required | Description |
|---|---|---|---|
| applyStartAt | DateTime | Required | 구독 요금제 적용 시작 일시 (UTC, ISO 8601) |
| applyEndAt | DateTime | Required | 구독 요금제 적용 종료 일시 (UTC, ISO 8601) |
| minPrice | String | Required | 구간 최소 단가 (KRW/kWh) |
| maxPrice | String | Optional | 구간 최대 단가 (KRW/kWh). 미제공 시 minPrice만 표시 |
예시 — 구독 요금제 적용
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"applyStartAt": "2026-07-01T00:00:00Z",
"applyEndAt": "2026-09-30T23:59:59Z",
"minPrice": "290.0",
"maxPrice": "347.0"
},
"status": "Accepted"
}
]
예시 — 최대 단가 미제공 (최소 단가만 표시)
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"applyStartAt": "2026-07-01T00:00:00Z",
"applyEndAt": "2026-09-30T23:59:59Z",
"minPrice": "290.0"
},
"status": "Accepted"
}
]
예시 — 구독 요금제 미적용
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Rejected"
}
]
메시지 트리거
이 메시지는 CSMS가 EVSE로 요청할 수 있습니다. OCPP v1.6 세션에서 메시지 트리거 동작을 제공하기 위한 DataTransfer 호환 메시지입니다.
customTrigger값이 DataTransfer로 시작하는 경우, 콜론(:)으로 vendorId, messageId를 구분하여 요청합니다.
messageId: TriggerMessage
메시지 트리거 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| requestMessage | MessageTriggerEnumType | Required | Trigger할 메시지의 타입을 의미합니다. |
| customTrigger | String | Optional | requestMessage가 CustomTrigger인 경우 해당 필드가 포함됩니다. |
| evse | EVSEType | Optional | 사용하지 않습니다. |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "TriggerMessage",
"data": {
"requestMessage": "CustomTrigger",
"customTrigger": "DataTransfer:com.skelectlink:GetPrice"
}
}
]
예상되는 동작: EVSE는 CSMS로 DataTransfer 메시지를 보냅니다.
메시지 트리거 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| status | TriggerMessageStatusEnumType | Required | 트리거 명령 수행 상태를 응답합니다. |
| statusInfo | StatusInfoType | Optional | 자세한 충전기의 상태의 포함합니다. |
충전기는 반드시 해당 요청을 받고, 해당 명령을 수행할 수 있는 상태를 즉시 응답한 이후 언급된 트리거 메시지를 동작시켜야한다.
statusInfo는 status가 Accepted가 아닌 경우 가급적 포함하십시오.예시
변수 조회
이 메시지는 양방향으로 교환할 수 있습니다.
messageId: GetVariables
변수 조회 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| getVariableData | Array<GetVariableDataType> | Required | 요청할 변수들의 리스트입니다. |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetVariables",
"data": {
"getVariableData": [
{
"component": {
"name": "SampledDataCtrlr"
},
"variable": {
"name": "TxStartedMeasurands"
}
},
{
"component": {
"name": "SampledDataCtrlr"
},
"variable": {
"name": "TxUpdatedMeasurands"
}
}
]
}
}
]
변수 조회 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| getVariableResult | Array<GetVariableResultType> | Required | 변수 조회 결과 리스트입니다. |
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"getVariableResult": [
{
"attributeStatus": "Accepted",
"attributeType": "Actual",
"attributeValue": "Energy.Active.Import.Register,SoC",
"component": {
"name": "SampledDataCtrlr"
},
"variable": {
"name": "TxStartedMeasurands"
}
},
{
"attributeStatus": "Accepted",
"attributeType": "Actual",
"attributeValue": "300",
"component": {
"name": "SampledDataCtrlr"
},
"variable": {
"name": "TxUpdatedMeasurands"
}
}
]
},
"status": "Accepted"
}
]
변수 설정
이 메시지는 양방향으로 교환할 수 있습니다.
messageId: SetVariables
변수 설정 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| setVariableData | Array<SetVariableDataType> | Required | 설정할 컴포넌트-변수 쌍과 속성 값들입니다. |
변수 설정 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| setVariableResult | Array<SetVariableResultType> | Required | 변수 설정 결과 리스트입니다. |
사용자 인증
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: Authorize
사용자 인증 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| certificate | String | Optional | EV가 제시한 X.509 인증서 체인으로 PEM 형식으로 인코딩됩니다. 검증이 필요한 경우에만 사용됩니다. |
| idToken | IdTokenType | Required | 인증이 필요한 식별자를 포함합니다. |
| iso15118CertificateHashData | OCSPRequestDataType | Optional | OCSP를 통해 EV 계약 인증서를 검증하는 데 필요한 정보를 포함합니다. |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "Authorize",
"data": {
"idToken": {
"idToken": "04D2A91234567890",
"type": "ISO14443"
}
}
}
]
사용자 인증 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| idTokenInfo | IdTokenInfoType | Required | 인증 결과 및 추가 정보를 포함합니다. |
| certificateStatusEnumType | AuthorizeCertificateStatusEnumTypeEnumType | Optional | 인증서 상태 정보입니다. |
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"idTokenInfo": {
"status": "Accepted"
}
},
"status": "Accepted"
}
]
결제 정보 전송
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: PaymentInfo
결제 정보 전송 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| type | PaymentInfoEnumType | Required | 결제 처리 유형 |
| paymentMethod | PaymentMethodEnumType | Required | 결제 방식 |
| transactionId | String | Required | 거래 번호 |
| demandValue | Number | Required | 요구 값 (kWh: Wh 단위, Money: KRW 단위) |
| tradeApprovalId | String | Required | 결제 승인번호 |
| tradeUniqueId | String | Required | 결제 고유번호 |
| deviceResponseCode | String | Required | 결제단말기 응답 코드 |
| deviceResponseMessage | String | Required | 결제단말기 응답 메시지 |
| deviceCardResponseCode | String | Required | 카드사 응답 코드 |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "PaymentInfo",
"data": {
"type": "Prepaid",
"paymentMethod": "kWh",
"transactionId": "6864827f-2b65-498d-8420-d5a0cf33dc80",
"demandValue": 50000.0,
"tradeApprovalId": "APPROVAL123456789",
"tradeUniqueId": "TXN987654321",
"deviceResponseCode": "00",
"deviceResponseMessage": "승인완료",
"deviceCardResponseCode": "00"
}
}
]
결제 정보 전송 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
MAC 주소 등록
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: MacRegister
MAC 주소 등록 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| macAddress | String | Required | MAC 주소 |
| cardNumber | String | Required | 연결할 카드 번호 |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "MacRegister",
"data": {
"macAddress": "00-1A-2B-3C-4D-5E",
"cardNumber": "04D2A91234567890"
}
}
]
MAC 주소 등록 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| success | Boolean | Required | 등록 성공 여부 |
| message | String | Optional | 등록 결과 메시지(success == false 시 노출됩니다) |
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"success": true
},
"status": "Accepted"
}
]
Plug & Charge (PnC) 등록
이 메시지는 EVSE가 계약 인증서를 보유하지 않은 차량에 대해 고객 등록 절차를 완료한 뒤 CSMS로 요청할 수 있습니다. CSMS는 전달받은 PCID, eMAID, 멤버십 카드 번호를 연결하여 이후 Plug & Charge 인증을 회원 계약 기준으로 처리합니다.
messageId: PncRegister
Plug & Charge (PnC) 등록 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| emaid | String | Required | 계약 인증서에 포함된 eMAID |
| cardNumber | String | Required | 연결할 멤버십 카드 번호 |
| pcid | String | Required | EV Provisioning Certificate Identifier |
| iso15118CertificateHashData | Array | Optional | 설치된 계약 인증서 식별을 위한 인증서 해시 정보 |
예시
[
2,
"uuid-pnc-register",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "PncRegister",
"data": {
"emaid": "DE*ABC*E1234567*1",
"cardNumber": "04D2A91234567890",
"pcid": "PCID-EXAMPLE-001",
"iso15118CertificateHashData": [
{
"hashAlgorithm": "SHA256",
"issuerNameHash": "BASE64_ISSUER_NAME_HASH",
"issuerKeyHash": "BASE64_ISSUER_KEY_HASH",
"serialNumber": "04A1B2C3D4"
}
]
}
}
]
Plug & Charge (PnC) 등록 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| success | Boolean | Required | 등록 성공 여부 |
| message | String | Optional | 등록 결과 메시지(success == false 시 노출됩니다) |
예시
[
3,
"uuid-pnc-register",
{
"status": "Accepted",
"data": {
"success": true
}
}
]
네트워크 프로파일 설정
이 메시지는 CSMS가 EVSE의 네트워크 연결 정보를 설정할 때 사용합니다.
messageId: SetNetworkProfile
네트워크 프로파일 설정 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| configurationSlot | Integer | Required | 설정을 저장할 슬롯 번호 |
| connectionData | NetworkConnectionProfileType | Required | 연결 상세 정보 |
예시
[
2,
"e1a2b3c4-d567-8901-2345-6789abcdef01",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "SetNetworkProfile",
"data": {
"configurationSlot": 1,
"connectionData": {
"ocppVersion": "1.6",
"ocppInterface": "Any",
"ocppTransport": "JSON",
"messageTimeout": 30,
"ocppCsmsUrl": "wss://csms.example.com/ocpp/",
"securityProfile": 2,
"identity": "6013ME53-01",
"basicAuthPassword": "?GJ1Hx1U0A]_~$)N)k3OTq5mLh8Pjb"
}
}
}
]
네트워크 프로파일 설정 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| status | SetNetworkProfileStatusEnumType | Required | 작업 결과 상태 |
| statusInfo | StatusInfoType | Optional | 상세 상태 정보 |
예시
[
3,
"e1a2b3c4-d567-8901-2345-6789abcdef01",
{
"data": {
"status": "Accepted",
"statusInfo": {
"reasonCode": "Configured",
"additionalInfo": "네트워크 프로파일이 정상적으로 설정되었습니다."
}
},
"status": "Accepted"
}
]
스마트충전(VAS) 인증서 발급 요청
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: GetSmartChargeCertificate
인증서 발급 요청 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| timeStamp | String | Required | 인증서 요청 시간 |
| connectorId | Number | Required | 요청 커넥터 번호(Not 0) |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetSmartChargeCertificate",
"data": {
"timeStamp": "2024-01-15T10:30:00.000Z",
"connectorId": 1
}
}
]
인증서 발급 요청 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
스마트충전(VAS) 인증서 설치 요청
이 메시지는 CSMS가 EVSE로 요청할 수 있습니다.
messageId: InstallSmartChargeCertificate
인증서 설치 요청 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| connectorId | Number | Required | 요청 커넥터 번호(Not 0) |
| certificates | SmartChargeCertificateInfoType | Required | 인증서 정보 |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "InstallSmartChargeCertificate",
"data": {
"connectorId": 1,
"certificates": {
"chargerCertificate": "LS0tLS1CRUdJTi...",
"chargerPrivateKey": "LS0tLS1CRUdJTi...",
"kecoServerCertificate": "LS0tLS1CRUdJTi..."
}
}
}
]
인증서 설치 요청 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
스마트충전(VAS) 인증서 정보 조회
이 메시지는 CSMS가 EVSE로 요청할 수 있습니다.
messageId: GetSmartChargeCertificateInfoType
인증서 정보 조회 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| connectorId | Number | Required | 요청 커넥터 번호(Not 0) |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetSmartChargeCertificateInfoType",
"data": {
"connectorId": 1
}
}
]
인증서 정보 조회 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| certificates | SmartChargeCertificateInfoType | Optional | 설치된 인증서 정보 목록 |
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"certificates": {
"chargerCertificate": "LS0tLS1CRUdJTi...",
"chargerPrivateKey": "LS0tLS1CRUdJTi...",
"kecoServerCertificate": "LS0tLS1CRUdJTi..."
}
},
"status": "Accepted"
}
]
스마트충전(VAS) 세션키 발급 요청
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: GetSmartChargeSessionKey
세션키 발급 요청 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| timeStamp | DateTime | Required | 세션키 요청 시간 |
| keyType | String | Optional | 요청하는 키 타입 |
| connectorId | Number | Required | 요청 커넥터 번호(Not 0) |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetSmartChargeSessionKey",
"data": {
"timeStamp": "2024-01-15T10:30:00.000Z",
"connectorId": 1
}
}
]
세션키 발급 요청 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
스마트충전(VAS) 세션키 설치 요청
이 메시지는 CSMS가 EVSE로 요청할 수 있습니다.
messageId: InstallSmartChargeSessionKey
세션키 설치 요청 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| signData | String | Required | 서명 데이터 |
| publicKey | String | Required | 공개키 |
| keyId | String | Required | 키 ID |
| keyType | String | Optional | 키 타입 |
| validFrom | String | Required | 유효 시작 시간 |
| validTo | String | Required | 유효 만료 시간 |
| connectorId | Number | Required | 요청 커넥터 번호(Not 0) |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "InstallSmartChargeSessionKey",
"data": {
"signData": "LS0tLS1CRUdJTi...",
"publicKey": "LS0tLS1CRUdJTi...",
"keyId": "195024035...",
"validFrom": "2024-01-15T00:00:00Z",
"validTo": "2024-02-15T23:59:59Z",
"connectorId": 1
}
}
]
세션키 설치 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
사용자 Target SoC 설정
이 메시지는 양방향에서 요청할 수 있습니다.
messageId: SetUserTargetSoC
사용자 Target SoC 설정 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| connectorId | Number | Required | 요청 커넥터 번호(Not 0) |
| userTargetSoC | String | Required | 사용자 설정 SoC (0~100) |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "SetUserTargetSoC",
"data": {
"connectorId": 1,
"userTargetSoC": "80"
}
}
]
사용자 Target SoC 설정 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
스마트충전(VAS) 배터리 정보 전송
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: BatteryInfo
배터리 정보 전송 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| connectorId | Number | Required | 요청 커넥터 번호(Not 0) |
| infoCount | Number | Required | Battery 데이터 수 |
| SmartChargeBatteryDataSetType | Array<SmartChargeBatteryDataSetType> | Required | BatteryData 배열 |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "BatteryInfo",
"data": {
"connectorId": 1,
"infoCount": 1,
"SmartChargeBatteryDataSetType": [
{
"timeStamp": "2024-01-15T10:30:00.000Z",
"sessionDuration": "1800",
"counter": "1",
"batteryData": "LS0tLS1CRUdJTi..."
}
]
}
}
]
배터리 정보 전송 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
스마트충전(VAS) 개인정보 동의 설정
이 메시지는 양방향에서 요청할 수 있습니다.
messageId: SetPrivacyPolicyCheck
개인정보 동의 설정 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| connectorId | Number | Required | 요청 커넥터 번호(Not 0) |
| timeStamp | DateTime | Required | 개인정보 수집 및 동의 확인 시간 |
| consented | Boolean | Required | 개인정보 수집 및 동의여부 |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "SetPrivacyPolicyCheck",
"data": {
"connectorId": 1,
"timeStamp": "2024-01-15T10:30:00.000Z",
"consented": true
}
}
]
개인정보 동의 설정 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
표시 메시지 설정
이 메시지는 CSMS가 EVSE로 요청할 수 있습니다.
messageId: SetDisplayMessage
표시 메시지 설정 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| message | MessageInfoType | Required | 표시할 메시지의 설정 정보를 포함합니다. |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "SetDisplayMessage",
"data": {
"message": {
"id": 2,
"priority": "InFront",
"message": {
"format": "UTF8",
"content": "고장 조치 중입니다. 불편을 드려 죄송합니다. (고객센터: 1566-1704)"
}
}
}
}
]
표시 메시지 설정 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"status": "Accepted"
},
"status": "Accepted"
}
]
충전 고유키 조회
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: GetEssentialsKey
충전 고유키 조회 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| connectorId | Number | Required |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetEssentialsKey",
"data": {
"connectorId": 1
}
}
]
충전 고유키 조회 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| essentialsKey | String | Required |
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"essentialsKey": "4326342645265234MJUWXVCASUSDRGDDERDXGF"
},
"status": "Accepted"
}
]
운영 스케줄 설정
이 메시지는 CSMS가 EVSE로 요청할 수 있습니다.
messageId: SetOperatingSchedule
운영 스케줄 설정 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| profileId | Number | Required | 운영 스케줄 프로파일 ID |
| utcOffset | String | Required | UTC 오프셋 (예: "+09:00", "+00:00") |
| schedules | Array<OperatingScheduleEntryType> | Required | 스케줄 항목 목록 |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "SetOperatingSchedule",
"data": {
"profileId": 1,
"utcOffset": "+09:00",
"schedules": [
{
"connectorId": null,
"dayOfWeek": "MON",
"startTime": "09:00",
"endTime": "18:00"
},
{
"connectorId": null,
"dayOfWeek": "TUE",
"startTime": "09:00",
"endTime": "18:00"
},
{
"connectorId": null,
"dayOfWeek": "SAT",
"startTime": "10:00",
"endTime": "14:00"
}
]
}
}
]
위 예시에서 수~금, 일요일은 스케줄이 없으므로 24시간 운영됩니다. 토요일은 전체 커넥터가 10:00~14:00만 운영됩니다.
운영 스케줄 설정 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| status | String | Required | 처리 결과 (Accepted / Rejected) |
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
광고 프로파일 조회
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: GetAdProfile
광고 프로파일 조회 요청
data가 없습니다.예시
광고 프로파일 조회 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| profile | AdProfileType | Optional | 광고 프로파일 |
활성 프로파일이 있는 경우:예시
활성 프로파일이 없는 경우:예시
광고 미디어 조회
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: GetAdMedia
광고 미디어 조회 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| mediaKey | String | Required | 미디어 파일 식별 키 (UUID) |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetAdMedia",
"data": {
"mediaKey": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}
]
광고 미디어 조회 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| (fields) | AdMediaType | Required | 미디어 파일 정보 |
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"data": {
"mediaKey": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"fileName": "spring-event-01.jpg",
"contentType": "image/jpeg",
"fileSize": 524288,
"uri": "https://cdn.example.com/ad-media/a1b2c3d4.jpg?token=eyJhbGci...&expires=1748293800"
},
"status": "Accepted"
}
]
화면 캡처 트리거
이 메시지는 CSMS가 EVSE로 요청할 수 있습니다.
messageId: TriggerScreenCapture
화면 캡처 트리거 요청
| Field Name | Type | Required | Description |
|---|---|---|---|
| screenId | String | Required | 캡처 대상 화면 식별자 (충전기 내부 화면 ID) |
| expireAt | DateTime | Required | 트리거 유효 만료 시각 (UTC, ISO 8601). 만료 시 트리거 자동 해제. |
| maxCaptures | Number | Optional | 최대 캡처 횟수. 생략 시 기본값 1. 해당 횟수 도달 시 트리거 자동 해제. |
| uploadUrl | String | Required | 캡처 이미지를 HTTP POST(multipart)로 업로드할 URL. CSMS가 메시지 ID 기반으로 생성한 엔드포인트. |
예시
[
2,
"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "TriggerScreenCapture",
"data": {
"screenId": "SCR_ERROR_01",
"expireAt": "2025-04-07T09:00:00Z",
"maxCaptures": 3,
"uploadUrl": "https://csms.example.com/v1/screen-capture/60130038-01/a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}
]
화면 캡처 트리거 응답
| Field Name | Type | Required | Description |
|---|---|---|---|
| status | String | Required | 트리거 등록 결과 (Accepted, Rejected, NotSupported) |
| statusInfo | Object | Optional | 상세 상태 정보 (reasonCode, additionalInfo) |
예시
[
3,
"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
{
"data": {
"status": "Accepted"
},
"status": "Accepted"
}
]
화면 캡처 결과 전송
이 메시지는 EVSE가 CSMS로 요청할 수 있습니다.
messageId: ScreenCaptureResult
화면 캡처 결과 전송 요청
이미지 바이너리는 uploadUrl로 HTTP POST(multipart) 전송하며, DataTransfer로는 메타데이터만 전송합니다.
| Field Name | Type | Required | Description |
|---|---|---|---|
| screenId | String | Required | 캡처된 화면의 식별자 (트리거 설정 시 지정한 값) |
| capturedAt | DateTime | Required | 실제 캡처가 수행된 시각 (UTC, ISO 8601) |
| uploadStatus | String | Required | HTTP 업로드 결과 (Uploaded, UploadFailed) |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "ScreenCaptureResult",
"data": {
"screenId": "SCR_ERROR_01",
"capturedAt": "2025-04-06T14:23:15Z",
"uploadStatus": "Uploaded"
}
}
]
화면 캡처 결과 전송 응답
예시
[
3,
"b914adcc-d113-46de-ad4b-edb168b96045",
{
"status": "Accepted"
}
]
StopTransaction
idTag값은 보내주지 마세요.reason값은 반드시 보내주세요.transactionData대신MeterValues.req를 보내주세요. (단,context는Transaction.End로 설정해야 합니다.)