OCPP 2.0.1 RequestStartTransaction 메시지

 

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": "회사 그룹 계정으로 충전 시작"
  }
}

처리 흐름

  1. CSMS 요청: 사용자의 모바일 앱 또는 웹 요청을 받아 RequestStartTransaction 전송
  2. 충전소 검증:
    • 토큰 유효성 확인
    • EVSE 사용 가능 여부 확인
    • 충전 프로파일 적용 가능 여부 확인
  3. 충전 시작:
    • 승인 시: 트랜잭션 생성 및 충전 시작, TransactionEvent.Started 전송
    • 거부 시: 오류 이유와 함께 응답
  4. 상태 모니터링: 충전 시작 후 TransactionEvent를 통한 지속적인 상태 업데이트

중요 포인트

  • RequestStartTransaction은 원격 충전 시작의 핵심 메시지로 모바일 앱 기반 충전 서비스에 필수적입니다
  • requestId는 고유해야 하며, 이후 관련 이벤트 추적에 사용됩니다
  • evseId를 지정하지 않으면 충전소에서 사용 가능한 커넥터를 자동 선택합니다
  • 충전 프로파일을 통해 충전 전력과 스케줄을 세밀하게 제어할 수 있습니다
  • 토큰 검증 실패, EVSE 사용 불가 등의 이유로 거부될 수 있습니다
  • 성공 시 반환되는 transactionId는 이후 충전 제어와 추적에 사용됩니다
  • 그룹 토큰을 통해 기업 계정 관리와 과금 분리가 가능합니다

이 메시지를 통해 사용자는 물리적으로 충전소에 있지 않아도 원격으로 충전을 시작할 수 있으며, 스마트한 충전 관리 시스템의 핵심 기능을 제공합니다.