RequestStartTransaction 개요
RequestStartTransaction은 중앙 시스템(CSMS)에서 충전소로 보내는 원격 충전 시작 요청 메시지입니다. 이 메시지를 통해 CSMS는 특정 충전소의 특정 커넥터에서 충전을 원격으로 시작할 수 있으며, 모바일 앱이나 웹 플랫폼을 통한 원격 충전 시작 기능의 핵심이 됩니다.
메시지 구조
Request (CSMS → 충전소)
{
"requestId": 12345,
"idToken": {
"idToken": "RFID123456789",
"type": "ISO14443"
},
"evseId": 1,
"groupIdToken": {
"idToken": "GROUP001",
"type": "Central"
},
"chargingProfile": {
"id": 1,
"stackLevel": 0,
"chargingProfilePurpose": "TxProfile",
"chargingProfileKind": "Absolute",
"chargingSchedule": [
{
"id": 1,
"startSchedule": "2024-08-20T14:00:00.000Z",
"duration": 7200,
"chargingRateUnit": "W",
"chargingSchedulePeriod": [
{
"startPeriod": 0,
"limit": 7400.0
}
]
}
]
}
}
Response (충전소 → CSMS)
{
"status": "Accepted",
"transactionId": "TXN-2024-001235",
"statusInfo": {
"reasonCode": "NoError",
"additionalInfo": "충전이 성공적으로 시작되었습니다"
}
}
주요 필드 설명
Request 필드들
requestId 필드 (필수)
필드명 |
필수여부 |
타입 |
설명 |
requestId |
필수 |
Integer |
고유한 요청 식별자 (추후 RemoteStartTransaction에서 참조) |
idToken 필드 (필수)
필드명 |
필수여부 |
타입 |
설명 |
idToken |
필수 |
String |
인증에 사용할 토큰 값 |
type |
필수 |
Enum |
토큰 타입 |
additionalInfo |
선택사항 |
Array |
추가 토큰 정보 |
idToken.type 값들
값 |
설명 |
Central |
중앙 시스템에서 관리하는 토큰 |
eMAID |
e-Mobility Account Identifier |
ISO14443 |
RFID 카드 (ISO 14443 표준) |
ISO15693 |
RFID 카드 (ISO 15693 표준) |
KeyCode |
키패드 입력 코드 |
Local |
로컬에서 관리하는 토큰 |
MacAddress |
MAC 주소 |
NoAuthorization |
인증 불요 |
evseId 필드 (선택사항)
필드명 |
필수여부 |
타입 |
설명 |
evseId |
선택사항 |
Integer |
충전을 시작할 EVSE ID (지정하지 않으면 충전소에서 선택) |
chargingProfile 필드 (선택사항)
필드명 |
필수여부 |
타입 |
설명 |
id |
필수 |
Integer |
충전 프로파일 ID |
stackLevel |
필수 |
Integer |
스택 레벨 (우선순위) |
chargingProfilePurpose |
필수 |
Enum |
충전 프로파일 목적 |
chargingProfileKind |
필수 |
Enum |
충전 프로파일 종류 |
chargingSchedule |
필수 |
Array |
충전 스케줄 배열 |
chargingProfilePurpose 값들
값 |
설명 |
ChargingStationExternalConstraints |
충전소 외부 제약사항 |
ChargingStationMaxProfile |
충전소 최대 프로파일 |
TxDefaultProfile |
기본 트랜잭션 프로파일 |
TxProfile |
트랜잭션별 프로파일 |
Response 필드들
status 필드 (필수)
값 |
설명 |
Accepted |
승인됨 - 충전 시작 성공 |
Rejected |
거부됨 - 충전 시작 실패 |
transactionId 필드 (선택사항)
필드명 |
필수여부 |
타입 |
설명 |
transactionId |
선택사항 |
String |
시작된 트랜잭션의 ID (status가 Accepted인 경우) |
statusInfo 필드 (선택사항)
필드명 |
필수여부 |
타입 |
설명 |
reasonCode |
선택사항 |
String |
상태 이유 코드 |
additionalInfo |
선택사항 |
String |
추가 정보 |
실제 사용 예제
예제 1: 기본 원격 충전 시작
// Request
{
"requestId": 12345,
"idToken": {
"idToken": "USER123456789",
"type": "Central"
},
"evseId": 1
}
// Response
{
"status": "Accepted",
"transactionId": "TXN-2024-001235",
"statusInfo": {
"reasonCode": "NoError",
"additionalInfo": "원격 충전이 성공적으로 시작되었습니다"
}
}
예제 2: 충전 프로파일과 함께 시작
// Request
{
"requestId": 12346,
"idToken": {
"idToken": "RFID987654321",
"type": "ISO14443"
},
"evseId": 2,
"chargingProfile": {
"id": 100,
"stackLevel": 0,
"chargingProfilePurpose": "TxProfile",
"chargingProfileKind": "Absolute",
"chargingSchedule": [
{
"id": 1,
"startSchedule": "2024-08-20T15:00:00.000Z",
"duration": 3600,
"chargingRateUnit": "W",
"chargingSchedulePeriod": [
{
"startPeriod": 0,
"limit": 11000.0,
"numberPhases": 3
},
{
"startPeriod": 1800,
"limit": 7400.0,
"numberPhases": 3
}
]
}
]
}
}
// Response
{
"status": "Accepted",
"transactionId": "TXN-2024-001236",
"statusInfo": {
"reasonCode": "NoError",
"additionalInfo": "프로파일 적용하여 충전 시작됨"
}
}
예제 3: 충전 시작 거부
// Request
{
"requestId": 12347,
"idToken": {
"idToken": "BLOCKED_USER",
"type": "Central"
},
"evseId": 1
}
// Response
{
"status": "Rejected",
"statusInfo": {
"reasonCode": "InvalidToken",
"additionalInfo": "유효하지 않은 사용자 토큰입니다"
}
}
예제 4: EVSE 지정 없이 요청
// Request
{
"requestId": 12348,
"idToken": {
"idToken": "MOBILE_USER_001",
"type": "Central"
}
}
// Response
{
"status": "Accepted",
"transactionId": "TXN-2024-001237",
"statusInfo": {
"reasonCode": "NoError",
"additionalInfo": "EVSE 2에서 충전이 시작되었습니다"
}
}
예제 5: 그룹 토큰을 사용한 충전 시작
// Request
{
"requestId": 12349,
"idToken": {
"idToken": "EMPLOYEE_001",
"type": "Central"
},
"evseId": 3,
"groupIdToken": {
"idToken": "COMPANY_A",
"type": "Central"
}
}
// Response
{
"status": "Accepted",
"transactionId": "TXN-2024-001238",
"statusInfo": {
"reasonCode": "NoError",
"additionalInfo": "회사 그룹 계정으로 충전 시작"
}
}
처리 흐름
- CSMS 요청: 사용자의 모바일 앱 또는 웹 요청을 받아 RequestStartTransaction 전송
- 충전소 검증:
- 토큰 유효성 확인
- EVSE 사용 가능 여부 확인
- 충전 프로파일 적용 가능 여부 확인
- 충전 시작:
- 승인 시: 트랜잭션 생성 및 충전 시작, TransactionEvent.Started 전송
- 거부 시: 오류 이유와 함께 응답
- 상태 모니터링: 충전 시작 후 TransactionEvent를 통한 지속적인 상태 업데이트
중요 포인트
- RequestStartTransaction은 원격 충전 시작의 핵심 메시지로 모바일 앱 기반 충전 서비스에 필수적입니다
requestId
는 고유해야 하며, 이후 관련 이벤트 추적에 사용됩니다
evseId
를 지정하지 않으면 충전소에서 사용 가능한 커넥터를 자동 선택합니다
- 충전 프로파일을 통해 충전 전력과 스케줄을 세밀하게 제어할 수 있습니다
- 토큰 검증 실패, EVSE 사용 불가 등의 이유로 거부될 수 있습니다
- 성공 시 반환되는
transactionId
는 이후 충전 제어와 추적에 사용됩니다
- 그룹 토큰을 통해 기업 계정 관리와 과금 분리가 가능합니다
이 메시지를 통해 사용자는 물리적으로 충전소에 있지 않아도 원격으로 충전을 시작할 수 있으며, 스마트한 충전 관리 시스템의 핵심 기능을 제공합니다.