충전 중 - Use Cases
이 문서는 거래 시작, 진행, 종료 흐름을 OCPP 버전별로 분리하여 설명합니다.
거래 상태 변이
| 단계 | 설명 |
|---|---|
| ① | 케이블 연결 또는 사용자 인증 시작 (점유 - 다른 고객이 이용 불가능) |
| ② | 인증 완료 후 트랜잭션 시작 |
| ③ | 에너지 공급 시작 (EV가 전력 수신 시작) |
| 🔁 | 설정된 주기(MeterValueSampleInterval)마다 반복 |
| ④ | 충전 완료 또는 사용자 중지 요청 (에너지 공급 중단) |
| ⑤ | 트랜잭션 종료 처리 (정산 데이터 확정) |
| ⑥ | 케이블 분리 및 메인 화면 전환 (점유 해제 - 다른 고객이 이용 가능) |
OCPP v1.6
충전 준비 화면 (커넥터 연결 대기 화면 포함)
- 즉시
StartTransaction.req를 보내주어야합니다.
StartTransaction.req 필수 데이터
전달해주는 StartTransaction.req에는 반드시 다음과 같은 데이터를 포함해야합니다:
connectorIdmeterStart: 계량기 누적전력량 (Wh)reservationId: if you needtimestamp: 충전이 시작된 일시
다음 필드는 보내주지 않아도 됩니다. (서버는 해당 값을 참조하지도 않음)
idTag
StartTransaction.conf 응답 처리
다음 조건 중 하나라도 해당하면 충전을 시작해선 안됩니다:
StartTransaction.conf의transactionId값이 -1 또는 0StartTransaction.conf의idTagInfo내status값이Accepted가 아님
에스케이일렉링크의 충전 정보 시스템은 StartTransaction.conf의 idTagInfo 내 expiryDate와 parentIdTag를 사용하지 않습니다. (보내는 경우는 없습니다.)
충전 중 화면
- 즉시
StatusNotification.req의 status를 "Charging"으로 전환하여야 합니다. - EVSE는 충전 중 주기적 데이터 전송을 해야 합니다.
- 충전 중 충전 요금은 단가 조회로 조회한 단가를 기준으로 계산하여 화면에 표시해 사용자에게 알려야합니다. 여기서 최종 결제 금액은 다를 수 있음을 사용자에게 안내해야합니다.
주기적 데이터 전송 요구사항
MeterValue.sampledValue.context가 Sample.Periodic인 데이터들은 MeterValueSampleInterval 값을 지켜서 아래의 데이터를 주기적으로 보내야합니다:
| Measurand | Unit | Description | Location |
|---|---|---|---|
| Energy.Active.Import.Register | Wh | 전력량계의 비휘발성 레지스터(적산전력) 값 | Outlet |
| Current.Import | A | EVSE에서 EV로 보내는 순간 전류 | Outlet |
| Voltage.EV.Requested | V | EV가 실제로 요청한 충전 전압 | EV |
| Current.EV.Requested | A | EV가 실제로 요청한 충전 전류 | EV |
| Current.Offered | A | EVSE가 EV에 허용한 최대 전류(EVSE 전류 상한) | Outlet |
| Voltage | V | 순간 AC RMS 공급 전압 | Outlet |
| Voltage.PowerModule.Requested | V | EVSE가 파워모듈에 요청한 출력 전압 | Body |
| Current.PowerModule.Requested | A | EVSE가 파워모듈에 요청한 출력 전류 | Body |
| Voltage.PowerModule.Available | V | 파워모듈이 출력 가능한 전압 | Body |
| Current.PowerModule.Available | A | 파워모듈이 출력 가능한 전류 | Body |
| Power.Active.Import | W | EV 충전 순간 유효 전력 | Outlet |
| Display.RemainingTimeToMinimumSOC | s | 최소 SOC(Bulk)까지 남은 충전 시간(초) | Body |
| Display.RemainingTimeToTargetSOC | s | 목표 SOC(Full)까지 남은 충전 시간(초) | Body |
| Temperature | Celsius | (예시)EVSE 내부 온도 | Body |
| Temperature | Celsius | (예시)커넥터 소켓 온도 | Outlet |
| PowerModule.Bit | — | 파워모듈별 가용/동작 BIT 상태 | Body |
- 꼭 위에 해당하는 SampledData가 아니더라도 표준 허용 범위 내에서 자유롭게 추가할 수 있습니다.
- 상(Phase) 데이터는 필수 값은 아니지만, 보내줄 수 있는 경우 보내주세요.
파워모듈 BIT 전송
충전 중 파워모듈별 가용/동작 상태를 전달해야 하는 EVSE는 MeterValues.req에 PowerModule.Bit를 포함합니다.
| Measurand | Unit | Description | Location | ReadingContext |
|---|---|---|---|---|
| PowerModule.Bit | — | 8바이트 파워모듈 BIT 상태. 16자리 HEX 문자열 | Body | Sample.Periodic |
PowerModule.Bit값은 공백 없이 16자리 HEX 문자열로 전송합니다. 예:FF0000000000000F- 첫 번째 바이트(Byte 0)의 최상위 bit(bit 7)는 파워모듈 BIT 포맷 버전 판별자로 사용합니다.
- 신규 포맷으로 전송하는 EVSE는 첫 번째 바이트의 bit 7을
1로 설정해야 합니다. 즉 첫 번째 바이트는0x80이상이어야 합니다. - 나머지 bit는 제조사와 사전 협의한 파워모듈 위치별 상태 정의에 따라 설정합니다.
| 첫 번째 바이트 bit 7 | 의미 |
|---|---|
1 (0x80 이상) | 8바이트 신규 포맷. 파워모듈 위치별 개별 상태값을 포함합니다. |
0 (0x00~0x7F) | 신규 구현에서는 사용하지 마십시오. bit 7을 반드시 1로 설정하세요. |
예시:
| Value | Description |
|---|---|
FF0000000000000F | 첫 번째 바이트가 0xFF이므로 신규 포맷입니다. |
8000000000000000 | 첫 번째 바이트가 0x80이므로 신규 포맷입니다. |
예시 — MeterValues.req
{
"connectorId": 1,
"transactionId": 123456,
"meterValue": [
{
"timestamp": "2025-01-15T10:35:00.000Z",
"sampledValue": [
{
"value": "5000",
"context": "Sample.Periodic",
"measurand": "Energy.Active.Import.Register",
"unit": "Wh",
"location": "Outlet"
},
{
"value": "400.0",
"context": "Sample.Periodic",
"measurand": "Voltage.EV.Requested",
"unit": "V",
"location": "EV"
},
{
"value": "60.0",
"context": "Sample.Periodic",
"measurand": "Current.EV.Requested",
"unit": "A",
"location": "EV"
},
{
"value": "180.0",
"context": "Sample.Periodic",
"measurand": "Current.Offered",
"unit": "A",
"location": "Outlet"
},
{
"value": "400.0",
"context": "Sample.Periodic",
"measurand": "Voltage.PowerModule.Requested",
"unit": "V",
"location": "Body"
},
{
"value": "60.0",
"context": "Sample.Periodic",
"measurand": "Current.PowerModule.Requested",
"unit": "A",
"location": "Body"
},
{
"value": "500.0",
"context": "Sample.Periodic",
"measurand": "Voltage.PowerModule.Available",
"unit": "V",
"location": "Body"
},
{
"value": "200.0",
"context": "Sample.Periodic",
"measurand": "Current.PowerModule.Available",
"unit": "A",
"location": "Body"
},
{
"value": "900",
"context": "Sample.Periodic",
"measurand": "Display.RemainingTimeToMinimumSOC",
"unit": "s",
"location": "Body"
},
{
"value": "1800",
"context": "Sample.Periodic",
"measurand": "Display.RemainingTimeToTargetSOC",
"unit": "s",
"location": "Body"
},
{
"value": "FF0000000000000F",
"context": "Sample.Periodic",
"measurand": "PowerModule.Bit",
"location": "Body"
}
]
}
]
}
충전 완료 화면
- 즉시
StatusNotification.req의 status를 "Finishing"으로 전환하여야 합니다.
StopTransaction를 전송하지 못하는 상황이 지속되는 경우
Stale Transaction 처리가 되지 않게끔 MeterValues를 주기적으로 전송해야 합니다.
- 전송 대상은
Energy.Active.Import.Register만 사용합니다. context는Sample.Periodic으로 설정합니다.unit은Wh,location은Outlet을 사용합니다.- CSMS는
Finishing수신 시점 직전의 최신Energy.Active.Import.Register값을 충전 완료 계량값으로 사용할 수 있습니다.
충전 완료 화면을 벗어나려 할 때
- 즉시
StopTransaction.req를 보내야합니다. StopTransaction.req의 reason 필드는 필수로 보내주어야합니다.
충전 완료 파워모듈 상태 전송
충전 완료 시점의 파워모듈 상태 요약 값이 있는 경우, StopTransaction.req.transactionData에 PowerModule.Status를 포함합니다.
| Measurand | Unit | Description | Location | ReadingContext |
|---|---|---|---|---|
| PowerModule.Status | — | 충전 완료 시점의 정상 파워모듈 개수. 1바이트 HEX 값 | Body | Transaction.End |
PowerModule.Status는 충전 완료 시점에 정상 동작 중인 파워모듈 개수를 1바이트 HEX 값으로 전송합니다.- 실제 OCPP
value에는0xprefix 없이 2자리 HEX 문자열로 전송합니다. 예:0C,18
| 파워모듈 구성 | 상태 | PowerModule.Status |
|---|---|---|
| 100kW 파워모듈 12개 | 모두 정상 | 0C (0x0C) |
| 100kW 파워모듈 12개 | 2개 OFF, 10개 정상 | 0A (0x0A) |
| 200kW 파워모듈 24개 | 모두 정상 | 18 (0x18) |
| 50kW 파워모듈 6개 | 모두 정상 | 06 (0x06) |
예시 — StopTransaction.req 일부
{
"transactionId": 123456,
"timestamp": "2025-01-15T11:30:00.000Z",
"meterStop": 35000,
"reason": "Local",
"transactionData": [
{
"timestamp": "2025-01-15T11:30:00.000Z",
"sampledValue": [
{
"value": "35000",
"context": "Transaction.End",
"measurand": "Energy.Active.Import.Register",
"unit": "Wh",
"location": "Outlet"
},
{
"value": "0C",
"context": "Transaction.End",
"measurand": "PowerModule.Status",
"location": "Body"
}
]
}
]
}
거래 중 휴대폰 번호 전달
충전기는 거래 시작 후 MeterValues.req를 이용해 CSMS로 휴대폰 번호를 전달할 수 있습니다.
| Measurand | Unit | Description | Location | ReadingContext |
|---|---|---|---|---|
| PhoneNumber | String | 휴대폰 번호 | Body | Other |
전달된 휴대폰 번호는 아래와 같은 상황에서 이용합니다.
- 고속도로 충전소의 경우
- 충전 시작 시 충전 시작 안내 문자 발송
- 충전 중 SoC가 일정 수준 도달 시 충전 종료 안내 문자 발송
- 충전 완료 시 충전 완료 안내 문자 발송
- 공항철도 및 기타 주차 쿠폰 발생 충전소의 경우
- 충전 완료시 관련 안내 문자 발송
거래 중 차량번호 전달
충전기는 거래 시작 후 MeterValues.req를 이용해 CSMS로 차량 번호를 전달할 수 있습니다.
| Measurand | Unit | Description | Location | ReadingContext |
|---|---|---|---|---|
| CarPlateNumber | String | 차량 번호 | Body | Other |
전달된 차량 번호는 아래와 같은 상황에서 이용합니다.
- 한국철도공사 주차장 충전소의 경우 (케이엠파크 제외)
- 주차권 발송
- 아마노코리아 주차장 충전소의 경우
- 주차권 발송
- 하이파킹 주차장 충전소의 경우
- 주차권 발송
거래 중 MAC 주소 전달
충전기는 거래 시작 후 MeterValues.req를 이용해 CSMS로 충전 차량의 MAC 주소를 전달할 수 있습니다.
| Measurand | Unit | Description | Location | ReadingContext |
|---|---|---|---|---|
| MAC.Address | String | 충전 차량 MAC 주소 (AA-BB-CC-DD-EE-FF) | Body | Other |
포맷: 하이픈 구분 대문자 HEX — AA-BB-CC-DD-EE-FF (17자)
OCPP v2.1
충전 준비 화면 (커넥터 연결 대기 화면 포함)
- 즉시
TransactionEvent(eventType:Started)를 보내주어야합니다. - 이 시점의
chargingState는Idle또는EVConnected입니다.
TransactionEventRequest (Started) 필수 데이터
| Field Name | Type | Required | Description |
|---|---|---|---|
| eventType | TransactionEventEnumType | Required | Started |
| timestamp | DateTime | Required | 충전이 시작된 일시 |
| triggerReason | TriggerReasonEnumType | Required | 트랜잭션 시작 사유 (예: Authorized) |
| seqNo | Integer | Required | 시퀀스 번호 (0부터 시작) |
| transactionInfo | TransactionType | Required | 트랜잭션 정보 |
| meterValue | Array<MeterValueType> | Optional | 시작 시점 계량값 |
| evse | EVSEType | Optional | EVSE 정보 |
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"TransactionEvent",
{
"eventType": "Started",
"timestamp": "2025-01-15T10:30:00.000Z",
"triggerReason": "Authorized",
"seqNo": 0,
"transactionInfo": {
"transactionId": "6864827f-2b65-498d-8420-d5a0cf33dc80",
"chargingState": "Idle"
},
"evse": {
"id": 1,
"connectorId": 1
},
"meterValue": [
{
"timestamp": "2025-01-15T10:30:00.000Z",
"sampledValue": [
{
"value": 0,
"measurand": "Energy.Active.Import.Register",
"unitOfMeasure": { "unit": "Wh" }
}
]
}
]
}
]
TransactionEventResponse (Started) 처리
다음 조건 중 하나라도 해당하면 충전을 시작해선 안됩니다:
- 응답의
idTokenInfo.status가Accepted가 아님
충전 시작 (chargingState 전환)
트랜잭션이 Idle 상태로 시작된 경우, EV가 연결되어 EVConnected 상태로 인식되면 즉시 chargingState: EVConnected로 전환된 TransactionEvent를 보내야합니다. 이후 에너지 전달이 시작되면 chargingState: Charging으로 전환합니다.
EVConnected 상태에서 시작된 트랜잭션은 이미 EV가 연결된 상태이므로, 바로 Charging으로 전환할 수 있습니다.
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"TransactionEvent",
{
"eventType": "Updated",
"timestamp": "2025-01-15T10:30:05.000Z",
"triggerReason": "ChargingStateChanged",
"seqNo": 1,
"transactionInfo": {
"transactionId": "6864827f-2b65-498d-8420-d5a0cf33dc80",
"chargingState": "Charging"
}
}
]
충전 중 화면
- 즉시
StatusNotificationRequest의 connectorStatus를Occupied로 전환하여야 합니다. - EVSE는 충전 중 주기적 데이터 전송을 해야 합니다.
- 충전 중 충전 요금은 단가 조회로 조회한 단가를 기준으로 계산하여 화면에 표시해 사용자에게 알려야합니다.
주기적 데이터 전송 요구사항
TransactionEvent (eventType: Updated)를 주기적으로 전송합니다. 전송 주기 및 포함할 Measurand는 GetVariables로 조회한 SampledDataCtrlr 변수 설정을 따릅니다.
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"TransactionEvent",
{
"eventType": "Updated",
"timestamp": "2025-01-15T10:35:00.000Z",
"triggerReason": "MeterValuePeriodic",
"seqNo": 2,
"transactionInfo": {
"transactionId": "6864827f-2b65-498d-8420-d5a0cf33dc80",
"chargingState": "Charging"
},
"meterValue": [
{
"timestamp": "2025-01-15T10:35:00.000Z",
"sampledValue": [
{
"value": 5000,
"measurand": "Energy.Active.Import.Register",
"unitOfMeasure": { "unit": "Wh" },
"location": "Outlet"
},
{
"value": 32.5,
"measurand": "Current.Import",
"unitOfMeasure": { "unit": "A" },
"location": "Outlet"
},
{
"value": 220.1,
"measurand": "Voltage",
"unitOfMeasure": { "unit": "V" },
"location": "Outlet"
},
{
"value": 7150,
"measurand": "Power.Active.Import",
"unitOfMeasure": { "unit": "W" },
"location": "Outlet"
},
{
"value": 400.0,
"measurand": "Voltage.EV.Requested",
"unitOfMeasure": { "unit": "V" },
"location": "EV"
},
{
"value": 60.0,
"measurand": "Current.EV.Requested",
"unitOfMeasure": { "unit": "A" },
"location": "EV"
},
{
"value": "180.0",
"measurand": "Current.Offered",
"unitOfMeasure": { "unit": "A" },
"location": "Outlet"
},
{
"value": 400.0,
"measurand": "Voltage.PowerModule.Requested",
"unitOfMeasure": { "unit": "V" },
"location": "Body"
},
{
"value": 60.0,
"measurand": "Current.PowerModule.Requested",
"unitOfMeasure": { "unit": "A" },
"location": "Body"
},
{
"value": 500.0,
"measurand": "Voltage.PowerModule.Available",
"unitOfMeasure": { "unit": "V" },
"location": "Body"
},
{
"value": 200.0,
"measurand": "Current.PowerModule.Available",
"unitOfMeasure": { "unit": "A" },
"location": "Body"
},
{
"value": 900,
"measurand": "Display.RemainingTimeToMinimumSOC",
"unitOfMeasure": { "unit": "s" },
"location": "Body"
},
{
"value": 1800,
"measurand": "Display.RemainingTimeToTargetSOC",
"unitOfMeasure": { "unit": "s" },
"location": "Body"
},
{
"value": "FF0000000000000F",
"measurand": "PowerModule.Bit",
"location": "Body"
}
]
}
]
}
]
충전 완료 화면
- 에너지 전달이 중단되면 즉시
chargingState를Idle로 전환하여 보내야합니다.
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"TransactionEvent",
{
"eventType": "Updated",
"timestamp": "2025-01-15T11:29:55.000Z",
"triggerReason": "ChargingStateChanged",
"seqNo": 11,
"transactionInfo": {
"transactionId": "6864827f-2b65-498d-8420-d5a0cf33dc80",
"chargingState": "Idle"
}
}
]
(충전 완료 화면을 벗어나려 할 때)
- 즉시
TransactionEvent(eventType:Ended)를 보내야합니다. transactionInfo.stoppedReason필드는 필수로 보내주어야합니다.
예시
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"TransactionEvent",
{
"eventType": "Ended",
"timestamp": "2025-01-15T11:30:00.000Z",
"triggerReason": "StopAuthorized",
"seqNo": 12,
"transactionInfo": {
"transactionId": "6864827f-2b65-498d-8420-d5a0cf33dc80",
"chargingState": "Idle",
"stoppedReason": "Local"
},
"meterValue": [
{
"timestamp": "2025-01-15T11:30:00.000Z",
"sampledValue": [
{
"value": 35000,
"measurand": "Energy.Active.Import.Register",
"unitOfMeasure": { "unit": "Wh" },
"location": "Outlet"
}
]
}
]
}
]
stoppedReason은 OCPP v1.6의 StopTransaction.req의 reason과 동일한 값을 사용합니다. ReasonEnumType을 참고하세요. v2.1에서는 v1.6과 v2.0.1에서 정의된 모든 Reason을 지원합니다.
충전 완료 파워모듈 상태 전송
충전 완료 시점의 파워모듈 상태 요약 값이 있는 경우, TransactionEventRequest(eventType=Ended)의 meterValue.sampledValue에 PowerModule.Status를 포함합니다. context는 가능하면 Transaction.End를 사용합니다.
PowerModule.Status는 충전 완료 시점에 정상 동작 중인 파워모듈 개수를 1바이트 HEX 값으로 전송합니다. 실제 OCPP value에는 0x prefix 없이 2자리 HEX 문자열을 사용합니다. 예: 12개 정상은 0C, 24개 정상은 18
예시 — TransactionEvent(Ended) meterValue 일부
{
"meterValue": [
{
"timestamp": "2025-01-15T11:30:00.000Z",
"sampledValue": [
{
"value": "35000",
"context": "Transaction.End",
"measurand": "Energy.Active.Import.Register",
"unitOfMeasure": { "unit": "Wh" },
"location": "Outlet"
},
{
"value": "0C",
"context": "Transaction.End",
"measurand": "PowerModule.Status",
"location": "Body"
}
]
}
]
}
유휴 요금 과금 (Idle Fee)
충전 완료 후 차량이 EVSE를 계속 점유하는 경우, Tariff 메커니즘의 IdleTime 요소를 통해 유휴 요금을 부과합니다.
트랜잭션 라이프사이클과 유휴 구간
핵심: 전력 공급이 중단되어도 트랜잭션은 Ended로 전환되지 않습니다. 케이블이 물리적으로 분리되거나 RemoteStop이 수신될 때 비로소 Ended가 됩니다. 이 구간에서 유휴 요금이 누적됩니다.
회원 결제 (앱/로밍)
회원 거래에서는 CSMS가 과금 주체입니다. EVSE는 비용을 보고하고, CSMS가 최종 금액을 확정합니다.
| 단계 | 메시지 | 방향 | 설명 |
|---|---|---|---|
| 1 | TransactionEvent(Updated) | EVSE → CSMS | triggerReason=RunningCost, 유휴 요금 누적 중 주기적 보고 |
| 2 | TransactionEventResponse | CSMS → EVSE | totalCost에 에너지 + 유휴 합산 금액 포함 |
| 3 | TransactionEvent(Ended) | EVSE → CSMS | 케이블 분리 시 최종 보고 |
| 4 | TransactionEventResponse | CSMS → EVSE | 최종 확정 totalCost (이 금액이 회원에게 청구됨) |
비회원 결제 (결제 단말기)
비회원 거래에서는 EVSE 내장 결제 단말기가 과금 주체입니다. EVSE가 직접 카드 승인을 처리하고, 정산 결과를 CSMS에 보고합니다.
| 단계 | 메시지 | 방향 | 설명 |
|---|---|---|---|
| 1~4 | (회원과 동일) | - | RunningCost 보고 + Ended |
| 5 | NotifySettlement | EVSE → CSMS | 결제 단말기 정산 결과 보고 (settlementAmount, pspRef, status) |
| 6 | NotifySettlementResponse | CSMS → EVSE | CSMS 생성 영수증 URL 반환 (선택) |
totalCost 계산 방식
TransactionEventResponse.totalCost는 CSMS가 계산한 에너지 비용 + 유휴 비용의 합산입니다.
totalCost = 에너지 비용 + 유휴 비용
에너지 비용 = 소비 전력량(kWh) × 단가(원/kWh)
유휴 비용 = max(0, 유휴 경과 시간 - gracePeriod) ÷ stepSize × price
(maxFee 상한 적용)
eventType=Updated응답의totalCost: 현재까지의 누적 비용 (running cost)eventType=Ended응답의totalCost: 최종 확정 비용totalCost없음 ≠ 무료. 무료 거래는0.00으로 명시해야 합니다.
유휴 요금 EVSE 구현 지침
-
트랜잭션 종료 시점: 전력 공급 중단(
SuspendedEV)은 트랜잭션 종료가 아닙니다. 케이블 분리(EVDeparted) 또는RemoteStop수신 시에만TransactionEvent(Ended)를 전송합니다. -
유휴 요금 계산 시작:
SetDefaultTariffRequest로 수신한 Tariff의IdleTime요소에 따라, 충전 상태가Idle(또는SuspendedEV)로 전환된 시점부터minDuration(grace period) 타이머를 시작합니다. -
RunningCost 보고 주기: grace period 경과 후 유휴 요금이 누적되기 시작하면,
TransactionEvent(Updated, triggerReason=RunningCost)를 주기적으로 전송합니다. 권장 주기는stepSize간격 또는 CSMS 설정에 따릅니다. -
totalCost 표시:
TransactionEventResponse.totalCost를 수신하면 사용자 화면에 현재 누적 비용으로 표시합니다. CSMS가 확정한 금액이 최종 기준입니다. -
maxFee 상한: Tariff에
maxPrice가 정의된 경우, 유휴 요금이 상한에 도달하면 추가 과금을 중단합니다.RunningCost보고는 계속할 수 있습니다. -
비회원 결제: 내장 결제 단말기로 카드 승인 시, 에너지 비용과 유휴 비용을 합산한 금액으로 승인을 요청합니다. 정산 완료 후
NotifySettlement로 CSMS에 보고합니다. -
ChangeTransactionTariff 수신: 유휴 요금 누적 중
ChangeTransactionTariffRequest를 수신하면, 수신 시점 이후부터 새 Tariff를 적용합니다. 이미 계산된 비용은 유지합니다.
거래 중 휴대폰 번호 전달
충전기는 거래 시작 후 TransactionEventRequest(eventType=Updated)의 meterValue를 이용해 CSMS로 휴대폰 번호를 전달할 수 있습니다.
| Measurand | Unit | Description | Location | ReadingContext |
|---|---|---|---|---|
| PhoneNumber | String | 휴대폰 번호 | Body | Other |
전달된 휴대폰 번호는 OCPP v1.6과 동일한 상황에서 이용합니다.
거래 중 차량번호 전달
충전기는 거래 시작 후 TransactionEventRequest(eventType=Updated)의 meterValue를 이용해 CSMS로 차량 번호를 전달할 수 있습니다.
| Measurand | Unit | Description | Location | ReadingContext |
|---|---|---|---|---|
| CarPlateNumber | String | 차량 번호 | Body | Other |
전달된 차량 번호는 OCPP v1.6과 동일한 상황에서 이용합니다.
거래 중 MAC 주소 전달
충전기는 거래 시작 후 TransactionEventRequest(eventType=Updated)의 meterValue를 이용해 CSMS로 충전 차량의 MAC 주소를 전달할 수 있습니다.
| Measurand | Unit | Description | Location | ReadingContext |
|---|---|---|---|---|
| MAC.Address | String | 충전 차량 MAC 주소 (AA-BB-CC-DD-EE-FF) | Body | Other |
포맷: 하이픈 구분 대문자 HEX — AA-BB-CC-DD-EE-FF (17자)