원격 도어 제어 API 개발자 가이드
서비스 개요
원격 도어 제어는 사용자가 모바일 애플리케이션을 통해 차량의 도어를 원격으로 잠그거나 잠금 해제할 수 있는 텔레매틱스 서비스입니다.
서비스 특징
- 원격 도어 잠금/잠금 해제 기능
- 키 분실 또는 차내 잠김 상황 대응
- 모바일 기반의 차량 접근 제어 제공
- 비동기 명령(Command) 기반 아키텍처
- 실시간 상태 업데이트 및 알림
법적 요구사항
- 차량 접근 제어 기능에 따른 강력한 보안 정책 필수
- 개인정보 보호법 준수
- End-to-End 인증 의무화
- 명령 실행 감사 로그(Audit Log) 기록
주요 시나리오
시나리오 1: 원격 도어 제어 요청 및 실행
엔티티별 API 흐름:
📱 앱 (사용자):
- 도어 잠금 해제 요청: Correlation ID 생성 후 요청
- 응답 수신: 202 Accepted 응답 수신
- 푸시 알림: 도어 제어 결과 푸시 알림 수신
- UI 업데이트: 30초 이내 응답 시 UI 업데이트, 타임아웃 시 무시
🚗 차량 (TCU):
- 명령 수신: ECARUS로부터 도어 제어 명령 수신
- 도어 제어 실행: 잠금/해제 액추에이터 제어
- 결과 게시: 성공/실패 결과를 ECARUS로 게시
🏢 콜센터:
- 대리 요청: Correlation ID 생성 후 대리 요청
- 응답 수신: 202 Accepted 응답 수신
- WebSocket 이벤트: 도어 제어 결과 실시간 수신
시나리오 2: 도어 제어 실패 및 예외 처리
엔티티별 API 흐름:
📱 앱 (사용자):
- 명령 요청: 도어 잠금/해제 명령 요청
- 실패 알림: 푸시 알림을 통해 실패 원인 수신
- 상태 확인: 현재 도어 상태 확인
- 명령 취소: 실행 중인 명령 취소
🚗 차량 (TCU):
- 안전 검증: 도어 제어 실행 조건 검증
- 실패 처리: 실행 불가 시 실패 사유 생성
- 결과 게시: 실패 결과를 ECARUS로 게시
🏢 콜센터:
시나리오 3: 도어 상태 모니터링 및 설정 관리
엔티티별 API 흐름:
📱 앱 (사용자):
- 상태 조회: 실시간 도어 상태 확인
- 설정 조회: 도어 설정값 확인
- 설정 업데이트: 자동 잠금 등 설정 변경
- 실시간 모니터링: SSE 스트림을 통한 상태 변경 모니터링
🚗 차량 (TCU):
- 상태 수집: 도어, 잠금, 창문 상태 실시간 수집
- 상태 전송: 수집된 상태 데이터를 ECARUS로 전송
- 설정 적용: 사용자 설정에 따른 자동 잠금 등 기능 수행
🏢 콜센터:
- 상태 모니터링: 실시간 차량 상태 확인
- 설정 지원: 사용자 설정값 지원 및 환경 설정 업데이트
- 진단 관리: 정기적 시스템 진단 수행
주요 기능
📱 앱 구현 기능
1. 원격 도어 제어 기능
- 도어 잠금 해제: 원격 도어 잠금 해제 요청
- 도어 잠금: 원격 도어 잠금 요청
- 명령 취소: 실행 중인 명령 취소 요청
2. 상태 모니터링 기능
- 상태 조회: 즉시 도어 상태 조회
- 실시간 업데이트: SSE 스트림을 통한 실시간 상태 모니터링
3. 설정 관리 기능
- 설정 조회: 도어 설정 조회
- 설정 업데이트: 자동 잠금, 잠금 해제 모드 등 설정 변경
4. 알림 및 UI 기능
- 푸시 알림: 도어 제어 결과 푸시 알림 수신
- 타이머 관리: 30초 타임아웃 기반의 응답 처리
- Correlation ID: 요청 추적을 위한 고유 ID 생성
🏢 콜센터 구현 기능
1. 대리 제어 기능
- 대리 잠금 해제: 고객을 대신하여 도어 잠금 해제
- 대리 잠금: 고객을 대신하여 도어 잠금
2. 이력 관리 기능
- 이력 조회: 도어 제어 이력 조회
- 실패 분석: 실패 원인 분석 및 리포트
3. 진단 및 모니터링 기능
- 진단 조회: 도어 시스템 진단 조회
- 상태 확인: 차량 도어 상태 확인
- WebSocket 연결: 실시간 이벤트 수신
4. 고객 지원 기능
- 설정 지원: 사용자 설정값 지원 및 환경 설정 업데이트
- 문제 해결: 시스템 진단 기반의 문제 해결 지원
- 보안 모니터링: 이상 접근 패턴 모니터링
🚗 차량(TCU) 처리 기능
1. 명령 실행 기능
- 도어 제어: 잠금/해제 액추에이터 제어
- 안전 검증: 차량 상태에 따른 실행 조건 검증
- 결과 게시: MQTT를 통한 실행 결과 게시
2. 상태 관리 기능
- 상태 수집: 도어, 잠금, 창문 상태 수집
- 상태 전송: 실시간 상태 데이터 전송
- 설정 적용: 자동 잠금 등 설정값 적용
시퀀스 다이어그램
원격 도어 제어 시스템 흐름

API 엔드포인트
헤더, 응답 코드 및 에러 형식은 공통 API 사양을 참조하십시오.
도어 잠금 해제 요청
curl -X POST "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/unlock" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Content-Type: application/json" \
-d '{"targetDoors": ["all"], "unlockMode": "NORMAL"}'도어 잠금 요청
curl -X POST "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/lock" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Content-Type: application/json" \
-d '{"targetDoors": ["all"], "lockMode": "SECURE"}'도어 상태 조회
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/status" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"도어 제어 취소 요청
curl -X POST "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/cancel" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Content-Type: application/json" \
-d '{"correlationId": "uuid-12345678", "reason": "사용자 취소", "force": false}'도어 제어 이력 조회
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/history?period=24h&limit=50" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"도어 제어 설정 조회
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/config" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"도어 제어 설정 업데이트
curl -X PUT "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/config" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Content-Type: application/json" \
-d '{"autoLockEnabled": true, "autoLockDelay": 30, "unlockMode": "DRIVER_ONLY", "childLockEnabled": false}'도어 제어 진단 정보 조회
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/diagnostics" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"도어 상태 실시간 업데이트 스트림 (SSE)
참고: 브라우저를 통해 접속하거나 전용 SSE 클라이언트 사용을 권장합니다.
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/door/updates/stream" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Accept: text/event-stream"데이터 모델
도어 잠금 해제 요청 (Unlock Request)
{
"targetDoors": ["all"],
"unlockMode": "NORMAL"
}targetDoors: all, driver, passenger, rearLeft, rearRight, trunk
unlockMode: NORMAL, EMERGENCY
도어 잠금 요청 (Lock Request)
{
"targetDoors": ["all"],
"lockMode": "SECURE"
}targetDoors: all, driver, passenger, rearLeft, rearRight, trunk
lockMode: SECURE, NORMAL
도어 제어 응답 (Control Response)
{
"commandId": "cmd-uuid-12345",
"vin": "KMHSH81C7LU123456",
"status": "PENDING",
"message": "명령 수신됨",
"estimatedDuration": 5,
"timestamp": "2026-01-12T14:30:00Z"
}status: PENDING, IN_PROGRESS, SUCCESS, FAILED, TIMEOUT
estimatedDuration: 예상 실행 시간 (초)
도어 상태 응답 (Status Response)
{
"vin": "KMHSH81C7LU123456",
"doors": {
"driver": {
"locked": true,
"open": false,
"windowOpen": false,
"childLock": false
},
"passenger": {
"locked": true,
"open": false,
"windowOpen": false
},
"rearLeft": {
"locked": true,
"open": false,
"windowOpen": false,
"childLock": true
},
"rearRight": {
"locked": true,
"open": false,
"windowOpen": false,
"childLock": true
},
"trunk": {
"locked": true,
"open": false
},
"hood": {
"locked": true,
"open": false
}
},
"ignitionStatus": "OFF",
"vehicleSpeed": 0,
"gearPosition": "P",
"timestamp": "2026-01-12T14:30:00Z"
}도어 취소 요청 (Cancellation Request)
{
"correlationId": "uuid-12345678",
"reason": "사용자 취소",
"force": false
}reason: User cancellation, Emergency stop, System error, Timeout
force: 강제 취소 여부 (기본값: false)
도어 이력 요청 (History Request)
period: 24h
limit: 50
offset: 0
action: UNLOCKperiod: 1h, 24h, 7d, 30d
action: UNLOCK, LOCK, CANCEL, STATUS_CHECK
도어 이력 응답 (History Response)
{
"vin": "KMHSH81C7LU123456",
"history": [
{
"commandId": "cmd-uuid-12345",
"action": "UNLOCK",
"targetDoors": ["all"],
"status": "SUCCESS",
"timestamp": "2026-01-12T14:30:00Z",
"executionTime": 2.5,
"userId": "user-123",
"source": "MOBILE_APP",
"failureReason": null
}
],
"total": 1,
"hasMore": false
}status: SUCCESS, FAILED, TIMEOUT, CANCELLED
source: MOBILE_APP, CALL_CENTER, WEB, VOICE_ASSISTANT
도어 설정 응답 (Settings Response)
{
"vin": "KMHSH81C7LU123456",
"autoLockEnabled": true,
"autoLockDelay": 30,
"unlockMode": "DRIVER_ONLY",
"childLockEnabled": false,
"speedBasedLockEnabled": true,
"speedLockThreshold": 15,
"parkingAutoUnlock": true,
"updatedTime": "2026-01-12T10:00:00Z"
}unlockMode: ALL, DRIVER_ONLY, SEQUENCE
speedLockThreshold: 속도 감응 잠금 임계치 (km/h)
도어 진단 응답 (Diagnostics Response)
{
"vin": "KMHSH81C7LU123456",
"systemStatus": "NORMAL",
"components": [
{
"id": "driver_actuator_01",
"name": "Driver Door Actuator",
"status": "ACTIVE",
"health": 98,
"lastMaintenance": "2025-06-15T00:00:00Z",
"errorCodes": []
},
{
"id": "lock_module_01",
"name": "Door Lock Module",
"status": "ACTIVE",
"health": 95,
"lastMaintenance": "2025-06-15T00:00:00Z",
"errorCodes": []
}
],
"alerts": [],
"lastCheck": "2026-01-12T14:30:00Z"
}status: ACTIVE, INACTIVE, ERROR, MAINTENANCE_REQUIRED
health: 0-100 점수
도어 상태 업데이트 (SSE)
{
"type": "DOOR_STATUS_UPDATE",
"vin": "KMHSH81C7LU123456",
"timestamp": "2026-01-12T14:30:18Z",
"data": {
"doorId": "driver",
"locked": true,
"open": false,
"windowOpen": false,
"changeType": "LOCKED",
"previousState": {
"locked": false,
"open": false
}
}
}type: DOOR_STATUS_UPDATE, COMMAND_STATUS_UPDATE, SYSTEM_ALERT
changeType: LOCKED, UNLOCKED, OPENED, CLOSED, WINDOW_OPENED, WINDOW_CLOSED
보안 및 프라이버시
인증 및 권한 부여
- 사용자 인증 토큰 필요 (JWT/OAuth2)
- 차량 접근 권한 확인
- 도어 제어 권한 확인 (소유자/공유 사용자/디지털 키)
데이터 보안
- 모든 API 통신은 HTTPS/TLS 암호화
- 명령 위조 방지를 위한 Command Signing 적용
- mTLS 기반의 통신 보안 강화
- 엔드 투 엔드(End-to-End) 암호화 적용
프라이버시 보호
- 차량 출입 이력 수집에 대한 명시적 동의
- 위치 정보 수집 목적 명시
- 명령 실행 이력 보존 기간 정책 준수
접근 제어
- VIN 기반 차량 접근 권한 확인
- 다중 요소 인증(MFA) 요구
- 명령 호출 제한(Rate Limit) 적용
- 이상 접근 패턴 감지 및 차단
예외 처리
네트워크 관련
- 연결 실패: 오프라인 모드 지원, 마지막 상태 캐싱
- 응답 지연: 로딩 인디케이터, 타임아웃 처리
- 서버 다운: 에러 메시지 표시, 재시도 제안
차량 상태 관련
- 차량 오프라인: 명령 전송 실패 알림, 큐 처리
- 도어 열림 상태: 잠금 명령 실패 시 사유 안내
- 엔진 시동 중: 일부 제어 기능 제한 안내
보안 관련
- 인증 실패: 재인증 요청, 보안 강화 안내
- 권한 없음: 권한 부족 사유 명확히 표시
- 의심스러운 접근: 계정 잠금 및 알림
명령 실행 관련
- 일부 성공: 일부 도어만 제어된 경우 상세 안내
- 실패: 실패 원인 명확히 표시
- 타임아웃: 명령 유효 시간(TTL) 만료 알림
테스트 설정
Base URL: https://api.ecarus.run/api/v1/remotecontrol
인증 토큰: sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d
샘플 VIN: KMHSH81C7LU123456
대화형 API 테스트를 위해 Swagger UI를 사용하십시오.
배포 고려사항
앱 스토어 등록
- 차량 제어 관련 권한 요청
- 생체 인증 권한 요청
- 위치 정보 수집에 대한 명확한 설명
법규 준수
- 개인정보 보호법 준수
- 차량 접근 제어 관련 법규 확인
- 보안 인증 관련 법령 준수
차량 호환성
- 다양한 차종 지원
- OEM별 도어 제어 방식 차이 고려
- 디지털 키(Digital Key) 표준 호환성 확보