원격 선루프 제어 API 개발자 가이드
서비스 개요
원격 선루프 제어는 사용자가 모바일 애플리케이션을 통해 차량의 선루프를 원격으로 열거나 닫을 수 있는 텔레매틱스 서비스입니다.
서비스 특징
- 원격 선루프 열기/닫기 제어
- 다양한 개방 모드 제공 (전체 개방, 틸트 환기)
- 끼임 방지(Anti-pinch) 안전 기능
- 환경 조건 기반의 안전 검증
- 실시간 상태 모니터링
법적 요구사항
- 차량 Body Domain 제어 관련 안전 규정 준수
- 끼임 방지(Anti-pinch) 안전 기능 적용 의무화
- 개인정보 보호법 준수
- OEM 정책 기반의 안전 수칙 준수
주요 시나리오
시나리오 1: 원격 선루프 제어 요청 및 실행
엔티티별 API 흐름:
📱 앱 (사용자):
- 선루프 제어: 원격 선루프 열기/닫기 제어 요청
- 응답 수신: 202 Accepted 응답 수신
- 푸시 알림: 선루프 제어 결과 푸시 알림 수신
- UI 업데이트: 화면에 제어 결과 표시
🚗 차량 (TCU):
- 명령 수신: ECARUS로부터 선루프 제어 명령 수신
- 안전 검증: 시동 상태, 우천 감지 등 안전 조건 확인
- 모터 구동: 선루프 모더 구동을 통한 제어 실행
- 결과 게시: 성공/실패 결과를 ECARUS로 게시
🏢 콜센터:
- 대리 제어: 고객을 대신하여 선루프 제어
- 상태 확인: 선루프 상태 확인
- 결과 수신: 선루프 제어 결과 수신
시나리오 2: 선루프 제어 실패 및 예외 처리
엔티티별 API 흐름:
📱 앱 (사용자):
- 명령 요청: 선루프 제어 명령 요청
- 실패 알림: 푸시 알림을 통해 실패 원인 수신
- 상태 확인: 현재 선루프 상태 확인
- 명령 취소: 실행 중인 명령 취소
🚗 차량 (TCU):
- 안전 검증: 우천 감지 또는 시동 상태 확인
- 실패 처리: 안전 조건 위반 시 실패 처리
- 결과 게시: 실패 결과 및 에러 코드 게시
- 상태 보고: 현재 선루프 상태 보고
🏢 콜센터:
시나리오 3: 선루프 상태 모니터링 및 설정 관리
엔티티별 API 흐름:
📱 앱 (사용자):
- 상태 조회: 선루프 상태 조회
- 설정 조회: 선루프 설정 조회
- 설정 업데이트: 선루프 설정 업데이트
- 실시간 모니터링: SSE 스트림을 통한 실시간 상태 모니터링
🚗 차량 (TCU):
- 상태 수집: 선루프 상태 데이터 실시간 수집
- 설정 적용: 선루프 설정값 자동 적용
- 상태 전송: 서버로 상태 데이터 전송
- 이벤트 게시: 상태 변경 이벤트 게시
🏢 콜센터:
- 상태 모니터링: 실시간 선루프 상태 확인
- 설정 관리: 고객 설정값 관리 및 선루프 설정 업데이트
- 진단 관리: 시스템 진단 관리
- 이력 관리: 제어 이력 관리
시나리오 4: 선루프 진단 및 이력 관리
엔티티별 API 흐름:
📱 앱 (사용자):
- 진단 조회: 선루프 시스템 진단 조회
- 이력 조회: 선루프 제어 이력 조회
- 설정 확인: 현재 설정 확인
- 상태 확인: 최신 상태 확인
🚗 차량 (TCU):
- 진단 실행: 선루프 관련 부품 상태 진단
- 상태 보고: 부품 상태 서버 보고
- 이력 기록: 제어 이력 상세 기록
- 설정 동기화: 설정 변경 사항 동기화
🏢 콜센터:
- 진단 관리: 시스템 진단 자동 관리
- 이력 관리: 제어 이력 자동 관리
- 설정 지원: 고객 설정 변경 지원 및 선루프 설정 업데이트
- 문제 해결: 진단 결과 기반의 문제 해결
주요 기능
📱 앱 구현 기능
1. 원격 선루프 제어 기능
- 선루프 제어: 원격 선루프 열기/닫기 제어 요청
- 명령 취소: 실행 중인 명령 취소 요청
- 상태 조회: 즉시 선루프 상태 조회
2. 설정 관리 기능
- 설정 조회: 선루프 설정 조회
- 설정 업데이트: 선루프 설정 업데이트
- 환경 설정: 우천 감지, 온도 보호 등 안전 설정 관리
3. 실시간 모니터링 기능
- 실시간 업데이트: SSE 스트림을 통한 실시간 상태 모니터링
- 이벤트 처리: 선루프 상태 변경 이벤트 실시간 처리
- 상태 표시: 선루프 개폐 상태 실시간 표시
4. 알림 및 UI 기능
- 푸시 알림: 선루프 제어 결과 푸시 알림 수신
- 에러 안내: 실패 시 사용자 친화적 에러 메시지 제공
- 상태 시각화: 선루프 상태의 시각적 표현 제공
🏢 콜센터 구현 기능
1. 대리 선루프 제어 기능
- 대리 제어: 고객을 대신하여 선루프 제어
- 명령 취소: 명령 취소 처리
- 상태 확인: 선루프 상태 확인
2. 이력 및 진단 관리 기능
- 이력 조회: 선루프 제어 이력 조회
- 진단 조회: 선루프 시스템 진단 조회
- 통계 생성: 선루프 제어 이용 통계 생성
3. 설정 관리 기능
- 설정 조회: 고객 선루프 설정 확인
- 설정 업데이트: 고객 설정 변경 지원
- 설정 동기화: 차량과의 자동 설정 동기화
4. 고객 지원 기능
- 문제 해결: 선루프 제어 실패 원인 분석
- 설정 지원: 고객 선루프 설정 지원
- 보안 모니터링: 이상 접근 패턴 모니터링
🚗 차량(TCU) 처리 기능
1. 선루프 제어 기능
- 명령 수신: 선루프 제어 명령 수신
- 안전 검증: 시동 상태, 우천 감지 등 안전 조건 확인
- 모터 구동: 선루프 모터 구동을 통한 제어 실행
- 결과 게시: 제어 결과 게시
2. 상태 관리 기능
- 상태 수집: 선루프 상태 데이터 실시간 수집
- 이벤트 게시: 상태 변경 이벤트 게시
- 상태 보고: 현재 선루프 상태 보고
3. 안전 기능
- 우천 감지: 우천 시 자동 닫힘 수행
- 끼임 방지: 끼임 발생 시 자동 정지 수행
- 온도 보호: 과열 시 자동 제한 수행
시퀀스 다이어그램
원격 선루프 제어 시스템 흐름

API 엔드포인트
헤더, 응답 코드 및 에러 형식은 공통 API 사양을 참조하십시오.
선루프 제어 요청
curl -X POST "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/sunroof/control" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Content-Type: application/json" \
-d '{"action": "OPEN", "position": 100}'선루프 상태 조회
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/sunroof/status" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"선루프 제어 취소 요청
curl -X POST "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/sunroof/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/sunroof/history?period=24h&limit=50" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"선루프 제어 설정 조회
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/sunroof/config" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"선루프 제어 설정 업데이트
curl -X PUT "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/sunroof/config" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Content-Type: application/json" \
-d '{"sunroof": {"remoteControlEnabled": true, "autoCloseEnabled": true, "autoCloseDelay": 300, "tiltEnabled": true}, "safety": {"rainProtectionEnabled": true, "temperatureProtectionEnabled": true, "rainSensitivity": "HIGH"}}'선루프 진단 정보 조회
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/sunroof/diagnostics" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"선루프 제어 정보 실시간 업데이트 수신 (SSE)
참고: 브라우저를 통해 접속하거나 전용 SSE 클라이언트 사용을 권장합니다.
curl -X GET "https://api.ecarus.run/api/v1/remotecontrol/vehicles/KMHSH81C7LU123456/sunroof/updates/stream" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Accept: text/event-stream"데이터 모델
선루프 제어 요청 (Control Request)
{
"action": "OPEN",
"position": 100
}action: OPEN, CLOSE, STOP, TILT_UP, TILT_DOWN
position: 0-100 (0=완전 닫힘, 100=완전 열림)
선루프 제어 응답 (Control Response)
{
"commandId": "cmd-uuid-12345",
"vin": "KMHSH81C7LU123456",
"status": "PENDING",
"message": "선루프 제어 명령이 수신되었습니다.",
"estimatedDuration": 15,
"timestamp": "2026-01-12T14:30:00Z"
}status: PENDING, PROCESSING, SUCCESS, FAILED, CANCELLED
선루프 상태 응답 (Status Response)
{
"vin": "KMHSH81C7LU123456",
"isOpen": true,
"position": 85,
"mode": "FULL",
"isMoving": false,
"tiltAngle": 0,
"obstructionDetected": false,
"lastAction": "OPEN",
"timestamp": "2026-01-12T14:30:00Z"
}mode: CLOSED, PARTIAL, FULL, TILT_UP, TILT_DOWN
선루프 취소 요청 (Cancellation Request)
{
"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: 0period: 1h, 24h, 7d, 30d
선루프 제어 이력 응답
{
"vin": "KMHSH81C7LU123456",
"history": [
{
"commandId": "cmd-uuid-12345",
"action": "OPEN",
"position": 100,
"timestamp": "2026-01-12T14:30:00Z",
"status": "SUCCESS",
"executionTime": 15,
"userId": "user-123",
"source": "APP"
}
],
"total": 1,
"hasMore": false
}source: APP, CALL_CENTER, SYSTEM
status: PENDING, PROCESSING, SUCCESS, FAILED, CANCELLED
선루프 제어 설정 응답 (Settings Response)
{
"vin": "KMHSH81C7LU123456",
"sunroof": {
"remoteControlEnabled": true,
"autoCloseEnabled": true,
"autoCloseDelay": 300,
"tiltEnabled": true,
"maxOpenPosition": 100,
"speedControl": "NORMAL"
},
"safety": {
"rainProtectionEnabled": true,
"temperatureProtectionEnabled": true,
"rainSensitivity": "HIGH",
"obstacleDetectionEnabled": true,
"maxOperatingTemperature": 60
},
"updatedTime": "2026-01-12T10:00:00Z"
}rainSensitivity: LOW, MEDIUM, HIGH
speedControl: SLOW, NORMAL, FAST
maxOperatingTemperature: 최대 동작 가능 온도 (°C)
선루프 진단 정보 응답 (Diagnostics Response)
{
"vin": "KMHSH81C7LU123456",
"systemStatus": "NORMAL",
"components": [
{
"name": "Sunroof Motor",
"status": "ACTIVE",
"health": 98,
"lastMaintenance": "2025-06-15T00:00:00Z",
"operatingHours": 1250
},
{
"name": "Rain Sensor",
"status": "ACTIVE",
"health": 95,
"lastCalibration": "2025-12-01T00:00:00Z",
"sensitivityLevel": "HIGH"
},
{
"name": "Obstruction Sensor",
"status": "ACTIVE",
"health": 100,
"lastTest": "2026-01-10T14:30:00Z"
}
],
"alerts": [],
"lastCheck": "2026-01-12T14:30:00Z"
}systemStatus: NORMAL, WARNING, ERROR, OFFLINE
component.status: ACTIVE, INACTIVE, ERROR, MAINTENANCE_REQUIRED
선루프 상태 업데이트 (SSE)
{
"type": "SUNROOF_STATUS_UPDATE",
"vin": "KMHSH81C7LU123456",
"timestamp": "2026-01-12T14:30:15Z",
"data": {
"position": 50,
"mode": "PARTIAL",
"isMoving": false,
"isOpen": true,
"tiltAngle": 0,
"changeType": "POSITION_UPDATE"
}
}type: SUNROOF_STATUS_UPDATE, SUNROOF_COMMAND_RESULT, SUNROOF_SAFETY_ALERT
changeType: POSITION_UPDATE, MODE_CHANGE, SAFETY_STOP, OBSTRUCTION_DETECTED, RAIN_DETECTED
보안 및 프라이버시
인증 및 권한 부여
- 사용자 인증 토큰 필요 (JWT/OAuth2)
- 차량 접근 권한 확인
- 선루프 제어 기능 권한 확인
데이터 보안
- 모든 API 통신은 HTTPS/TLS 암호화
- 명령 위조 방지를 위한 Command Signing 적용
- 안전 관련 데이터의 최우선 처리
프라이버시 보호
- 차량 상태 정보 수집에 대한 명시적 동의
- 환경 센서 데이터 수집 목적 명시
- 명령 실행 이력 보존 기간 정책 준수
접근 제어
- VIN 기반 차량 접근 권한 확인
- 다중 요소 인증(MFA) 요구
- 안전 관련 기능의 최우선 처리
- 이상 접근 패턴 감지 및 차단
예외 처리
네트워크 관련
- 연결 실패: 오프라인 모드 지원, 마지막 상태 캐싱
- 응답 지연: 로딩 인디케이터, 타임아웃 처리
- 서버 다운: 에러 메시지 표시, 재시도 제안
차량 상태 관련
- 차량 오프라인: 명령 전송 실패 알림, 큐 처리
- 안전 조건 미충족: 명령 거부 및 상세 사유 안내
- 환경 제약: 우천 감지 시 기능 제한 알림
안전 관련
- 끼임 방지 작동: 즉시 정지 및 안전 알림 발송
- 우천 감지: 자동 닫힘 및 알림 발송
- 장애물 감지: 즉시 정지 및 사용자 알림 발송
명령 실행 관련
- 일부 성공: 일부 기능만 작동 시 상세 안내
- 안전 정지: 안전 사유 명확히 표시
- 타임아웃: 명령 유효 시간(TTL) 만료 알림
테스트 설정
Base URL: https://api.ecarus.run/api/v1/remotecontrol
인증 토큰: sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d
샘플 VIN: KMHSH81C7LU123456
대화형 API 테스트를 위해 Swagger UI를 사용하십시오.
배포 고려사항
앱 스토어 등록
- 차량 제어 관련 권한 요청
- 생체 인증 권한 요청
- 환경 센서 접근 권한 요청
법규 준수
- 개인정보 보호법 준수
- 차량 Body Domain 제어 관련 규정 확인
- 끼임 방지(Anti-pinch) 안전 기능 관련 법령 준수
차량 호환성
- 다양한 차종 지원
- OEM별 선루프 제어 방식 차이 고려
- 국가별 안전 규정 차이 반영
- 선루프 장착 여부에 따른 기능 제한