Skip to content

원격 창문 제어 API 개발자 가이드

서비스 개요

원격 창문 제어는 사용자가 모바일 애플리케이션을 통해 차량의 창문을 원격으로 닫거나, 특정한 경우 열 수 있는 텔레매틱스 서비스입니다.

서비스 특징

  • 원격 창문 닫기 기능 중심
  • 제한적인 창문 열기 기능 제공 (환기 모드)
  • 끼임 방지(Anti-pinch) 안전 기능
  • 실시간 안전 모니터링
  • 지역별 규제 및 OEM 정책 준수

법적 요구사항

  • 차량 창문 제어 관련 안전 규정 준수
  • 끼임 방지(Anti-pinch) 안전 기능 적용 의무화
  • 개인정보 보호법 준수
  • 지역별 규제 차이 반영

주요 시나리오

시나리오 1: 원격 창문 잠금 요청 및 실행

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 창문 잠금: 원격 창문 잠금 제어 요청
  2. 응답 수신: 202 Accepted 응답 수신
  3. 푸시 알림: 창문 잠금 결과 푸시 알림 수신
  4. UI 업데이트: 화면에 제어 결과 표시

🚗 차량 (TCU):

  1. 명령 수신: ECARUS로부터 창문 잠금 명령 수신
  2. 안전 검증: 시동 상태, 하드웨어 오버라이드 감지 확인
  3. BCM 제어: BCM으로 창문 잠금 신호 전송
  4. 결과 게시: 성공/실패 결과를 ECARUS로 게시

🏢 콜센터:

  1. 대리 잠금: 고객을 대신하여 창문 잠금
  2. 상태 확인: 창문 잠금 상태 확인
  3. 결과 수신: 창문 잠금 결과 수신

시나리오 2: 창문 잠금 해제 및 상태 모니터링

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 창문 잠금 해제: 원격 창문 잠금 해제 제어 요청
  2. 응답 수신: 202 Accepted 응답 수신
  3. 푸시 알림: 창문 잠금 해제 결과 푸시 알림 수신
  4. 상태 조회: 창문 잠금 상태 확인

🚗 차량 (TCU):

  1. 명령 수신: 창문 잠금 해제 명령 수신
  2. BCM 제어: BCM으로 창문 잠금 해제 신호 전송
  3. 상태 전송: 잠금 해제 상태 서버 전송
  4. 이벤트 게시: 상태 변경 이벤트 게시

🏢 콜센터:

  1. 대리 해제: 고객을 대신하여 창문 잠금 해제
  2. 상태 모니터링: 실시간 창문 잠금 상태 확인
  3. 이력 조회: 창문 제어 이력 조회

시나리오 3: 창문 설정 관리 및 진단

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 설정 조회: 창문 설정 조회
  2. 설정 업데이트: 창문 설정 업데이트
  3. 사양 조회: 창문 사양 정보 조회
  4. 진단 조회: 창문 시스템 진단 조회

🚗 차량 (TCU):

  1. 설정 적용: 창문 설정값 자동 적용
  2. 사양 보고: 창문 사양 정보를 서버로 보고
  3. 진단 실행: 창문 관련 부품 상태 진단
  4. 상태 보고: 현재 창문 상태 보고

🏢 콜센터:

  1. 설정 관리: 고객 설정값 관리창문 설정 업데이트
  2. 사양 관리: 창문 사양 정보 자동 관리
  3. 진단 관리: 시스템 진단 자동 관리
  4. 이력 관리: 제어 이력 자동 관리

시나리오 4: 창문 제어 실패 및 예외 처리

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 명령 요청: 창문 잠금/해제 명령 요청
  2. 실패 알림: 푸시 알림을 통해 실패 원인 수신
  3. 상태 확인: 현재 창문 상태 확인
  4. 명령 취소: 실행 중인 명령 취소

🚗 차량 (TCU):

  1. 안전 검증: 시동 상태, 하드웨어 오버라이드 감지 확인
  2. 실패 처리: 안전 조건 위반 시 실패 처리
  3. 결과 게시: 실패 결과 및 에러 코드 게시
  4. 상태 보고: 현재 창문 상태 보고

🏢 콜센터:

  1. 이력 조회: 실패 이력 조회
  2. 진단 확인: 시스템 진단 확인
  3. 고객 지원: 실패 원인 분석 및 고객 안내

주요 기능

📱 앱 구현 기능

1. 원격 창문 제어 기능

2. 설정 관리 기능

3. 실시간 상태 모니터링 기능

4. 알림 및 UI 기능

  • 푸시 알림: 창문 제어 결과 푸시 알림 수신
  • 에러 안내: 실패 시 사용자 친화적 에러 메시지 제공
  • 상태 시각화: 창문 상태의 시각적 표현 제공

🏢 콜센터 구현 기능

1. 대리 창문 제어 기능

2. 이력 및 진단 관리 기능

3. 설정 관리 기능

4. 고객 지원 기능

  • 문제 해결: 창문 제어 실패 원인 분석
  • 설정 지원: 고객 창문 설정 지원
  • 보안 모니터링: 이상 접근 패턴 모니터링

🚗 차량(TCU) 처리 기능

1. 창문 제어 기능

  • 명령 수신: 창문 제어 명령 수신
  • 안전 검증: 시동 상태, 하드웨어 오버라이드 감지 확인
  • BCM 제어: BCM으로 창문 잠금/해제 신호 전송
  • 결과 게시: 제어 결과 게시

2. 상태 관리 기능

  • 상태 수집: 창문 상태 데이터 실시간 수집
  • 이벤트 게시: 상태 변경 이벤트 게시
  • 상태 보고: 현재 창문 상태 보고

3. 안전 기능

  • 하드웨어 오버라이드 감지: 물리 스위치 우선순위 감지
  • 끼임 방지: 끼임 발생 시 자동 정지 수행
  • 시동 상태 확인: 시동/ACC 상태 확인

시퀀스 다이어그램

원격 창문 제어 시스템 흐름

원격 창문 제어

API 엔드포인트

헤더, 응답 코드 및 에러 형식은 공통 API 사양을 참조하십시오.

창문 잠금 요청

bash
curl -X POST "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/lock" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
     -H "Content-Type: application/json" \
     -d '{"action": "LOCK", "target": "REAR_WINDOWS"}'

창문 잠금 해제 요청

bash
curl -X POST "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/unlock" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
     -H "Content-Type: application/json" \
     -d '{"action": "UNLOCK", "target": "REAR_WINDOWS"}'

창문 잠금 상태 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/lock-status" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

창문 제어 취소 요청

bash
curl -X POST "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/cancel" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
     -H "Content-Type: application/json" \
     -d '{"correlationId": "uuid-12345678", "reason": "사용자 취소", "force": false}'

창문 제어 이력 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/history?period=24h&limit=50" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

창문 사양 정보 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/spec" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

창문 제어 설정 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/config" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

창문 제어 설정 업데이트

bash
curl -X PUT "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/config" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
     -H "Content-Type: application/json" \
     -d '{"window": {"remoteControlEnabled": true, "childLockDefault": true, "autoLockEnabled": false, "individualControl": false}, "safety": {"hardwareOverrideDetection": true, "mainSwitchPriority": true, "interferenceTimeout": 3.0}}'

창문 진단 정보 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/diagnostics" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

창문 제어 정보 실시간 업데이트 수신 (SSE)

참고: 브라우저를 통해 접속하거나 전용 SSE 클라이언트 사용을 권장합니다.

bash
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/window/updates/stream" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
     -H "Accept: text/event-stream"

데이터 모델

창문 제어 요청 (Control Request)

json
{
  "action": "LOCK",
  "target": "REAR_WINDOWS"
}

action: OPEN, CLOSE, LOCK, UNLOCK, STOP
target: FRONT_LEFT, FRONT_RIGHT, REAR_LEFT, REAR_RIGHT, FRONT_WINDOWS, REAR_WINDOWS, ALL_WINDOWS

창문 제어 응답 (Control Response)

json
{
  "commandId": "cmd-uuid-12345",
  "vin": "KMHSH81C7LU123456",
  "status": "PENDING",
  "message": "창문 제어 명령이 수신되었습니다.",
  "estimatedDuration": 8,
  "timestamp": "2026-01-12T14:30:00Z"
}

status: PENDING, PROCESSING, SUCCESS, FAILED, CANCELLED

창문 잠금 상태 응답 (Status Response)

json
{
  "vin": "KMHSH81C7LU123456",
  "windows": {
    "frontLeft": {"isLocked": true, "position": 0},
    "frontRight": {"isLocked": true, "position": 0},
    "rearLeft": {"isLocked": false, "position": 25},
    "rearRight": {"isLocked": false, "position": 50}
  },
  "childSafetyLock": {
    "isEngaged": true,
    "controlledWindows": ["REAR_LEFT", "REAR_RIGHT"]
  },
  "timestamp": "2026-01-12T14:30:00Z"
}

position: 0-100% (0=완전 닫힘, 100=완전 열림)

창문 취소 요청 (Cancellation Request)

json
{
  "correlationId": "uuid-12345678",
  "reason": "사용자 취소",
  "force": false
}

reason: User cancellation, Safety stop, System error, Emergency stop
force: 강제 취소 여부 (true인 경우 즉시 정지)

창문 제어 이력 요청 (History Request)

vin: KMHSH81C7LU123456
period: 24h
limit: 50
offset: 0

period: 1h, 24h, 7d, 30d

창문 제어 이력 응답

json
{
  "vin": "KMHSH81C7LU123456",
  "history": [
    {
      "commandId": "cmd-uuid-12345",
      "action": "LOCK",
      "target": "REAR_WINDOWS",
      "timestamp": "2026-01-12T14:30:00Z",
      "status": "SUCCESS",
      "executionTime": 8,
      "userId": "user-123",
      "source": "APP"
    }
  ],
  "total": 1,
  "hasMore": false
}

source: APP, CALL_CENTER, SYSTEM
status: PENDING, PROCESSING, SUCCESS, FAILED, CANCELLED

창문 사양 정보 응답 (Specification Response)

json
{
  "vin": "KMHSH81C7LU123456",
  "windowTypes": ["POWER_WINDOWS", "SUNROOF"],
  "maxWindows": 4,
  "hasAutoLock": true,
  "hasChildSafetyLock": true,
  "supportedActions": ["OPEN", "CLOSE", "LOCK", "UNLOCK", "STOP"],
  "safetyFeatures": ["ANTI_PINCH", "CHILD_SAFETY_LOCK", "OBSTACLE_DETECTION"]
}

windowTypes: MANUAL, POWER_WINDOWS, ELECTRIC
supportedActions: 지원 가능한 동작 목록

창문 제어 설정 응답 (Settings Response)

json
{
  "vin": "KMHSH81C7LU123456",
  "window": {
    "remoteControlEnabled": true,
    "childLockDefault": true,
    "autoLockEnabled": false,
    "individualControl": false,
    "maxOpenPosition": 100,
    "speedControl": "NORMAL"
  },
  "safety": {
    "hardwareOverrideDetection": true,
    "mainSwitchPriority": true,
    "interferenceTimeout": 3.0,
    "pinchSensitivity": "HIGH"
  },
  "updatedTime": "2026-01-12T10:00:00Z"
}

speedControl: SLOW, NORMAL, FAST
pinchSensitivity: LOW, MEDIUM, HIGH
maxOpenPosition: 최대 열림 위치 (0-100%)

창문 진단 정보 응답 (Diagnostics Response)

json
{
  "vin": "KMHSH81C7LU123456",
  "systemStatus": "NORMAL",
  "components": [
    {
      "name": "Window Motor Front Left",
      "status": "ACTIVE",
      "health": 98,
      "lastMaintenance": "2025-06-15T00:00:00Z",
      "operatingHours": 1250
    },
    {
      "name": "Window Motor Front Right",
      "status": "ACTIVE",
      "health": 97,
      "lastMaintenance": "2025-06-15T00:00:00Z",
      "operatingHours": 1180
    },
    {
      "name": "Anti-Pinch Sensor",
      "status": "ACTIVE",
      "health": 95,
      "lastCalibration": "2025-12-01T00:00:00Z",
      "sensitivityLevel": "HIGH"
    }
  ],
  "alerts": [],
  "lastCheck": "2026-01-12T14:30:00Z"
}

systemStatus: NORMAL, WARNING, ERROR, OFFLINE
component.status: ACTIVE, INACTIVE, ERROR, MAINTENANCE_REQUIRED

창문 상태 업데이트 (SSE)

json
{
  "type": "WINDOW_STATUS_UPDATE",
  "vin": "KMHSH81C7LU123456",
  "timestamp": "2026-01-12T14:30:15Z",
  "data": {
    "windowId": "FRONT_LEFT",
    "position": 25,
    "isMoving": false,
    "isLocked": false,
    "changeType": "OPENED"
  }
}

type: WINDOW_STATUS_UPDATE, WINDOW_COMMAND_RESULT, WINDOW_SAFETY_ALERT
changeType: OPENED, CLOSED, LOCKED, UNLOCKED, STOPPED, OBSTRUCTION_DETECTED, SAFETY_STOP

보안 및 프라이버시

인증 및 권한 부여

  • 사용자 인증 토큰 필요 (JWT/OAuth2)
  • 차량 접근 권한 확인
  • 창문 제어 기능 권한 확인

데이터 보안

  • 모든 API 통신은 HTTPS/TLS 암호화
  • 명령 위조 방지를 위한 Command Signing 적용
  • 안전 관련 데이터의 최우선 처리

프라이버시 보호

  • 차량 상태 정보 수집에 대한 명시적 동의
  • 창문 제어 이력 수집 목적 명시
  • 명령 실행 이력 보존 기간 정책 준수

접근 제어

  • VIN 기반 차량 접근 권한 확인
  • 다중 요소 인증(MFA) 요구
  • Command Nonce 및 ID 사용
  • 멱등성(Idempotency) 기반의 중복 명령 방지

예외 처리

네트워크 관련

  • 연결 실패: 오프라인 모드 지원, 마지막 상태 캐싱
  • 응답 지연: 로딩 인디케이터, 타임아웃 처리
  • 서버 다운: 에러 메시지 표시, 재시도 제안

차량 상태 관련

  • 차량 오프라인: 명령 전송 실패 알림, 큐 처리
  • 안전 조건 미충족: 명령 거부 및 상세 사유 안내
  • 규제 제약: 지역별 규제에 따른 기능 제한 알림

안전 관련

  • 끼임 방지 작동: 즉시 정지 및 안전 알림 발송
  • 과전류 감지: 즉시 정지 및 보호 알림 발송
  • 센서 에러: 기능 제한 및 알림 발송

명령 실행 관련

  • 일부 성공: 일부 창문만 제어된 경우 상세 안내
  • 안전 정지: 안전 사유 명확히 표시
  • 타임아웃: 명령 유효 시간(TTL) 만료 알림

테스트 설정

Base URL: https://api.ecarus.run/api/v1/remotecontrol
인증 토큰: sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d
샘플 VIN: KMHSH81C7LU123456

대화형 API 테스트를 위해 Swagger UI를 사용하십시오.

배포 고려사항

앱 스토어 등록

  • 차량 제어 관련 권한 요청
  • 생체 인증 권한 요청
  • 근거리 통신(NFC/BLE 등) 권한 요청

법규 준수

  • 개인정보 보호법 준수
  • 차량 창문 제어 관련 규정 확인
  • 지역별 규제 차이 반영
  • 끼임 방지(Anti-pinch) 안전 기능 관련 법령 준수

차량 호환성

  • 다양한 차종 지원
  • OEM별 창문 제어 방식 차이 고려
  • 지역별 규제 차이 반영
  • 창문 구성 차이 (2도어/4도어 등) 반영

Released under the MIT License.