52 lines
4.2 KiB
Markdown
52 lines
4.2 KiB
Markdown
# 구조와 경계
|
|
|
|
이 문서는 개인 접속 주소나 운영 비밀값 없이 전체 설계를 설명합니다. 본 공개본에 모든 구성 요소가 구현·포함돼 있다는 뜻은 아닙니다.
|
|
|
|
## 데이터가 흐르는 경로
|
|
|
|
```text
|
|
차량 ECU / MICOM / HSCAN
|
|
↓ 원래 헤드유닛이 수신하는 정보
|
|
Android 4.4 계열 서비스·Binder·순정 앱·내비 native
|
|
├─ 순정 화면: 날씨 / 캘린더 / 스포츠 / RPM / 위치공유
|
|
├─ 제한된 HTTPS 연동 → 개인 백엔드 → 외부 데이터 공급자
|
|
└─ 검증된 변화값 → MQTT → Home Assistant / 모니터 / 차계부
|
|
```
|
|
|
|
핵심은 Android의 root 권한과 차량 ECU의 권한을 구분하는 것입니다. 헤드유닛에서 root를 얻어도 모든 차량 신호가 수신되는 것은 아니며, 모든 ECU 제어가 가능한 것도 아닙니다.
|
|
|
|
TApp는 일부 텔레매틱스 요청의 broker이지 모든 앱의 유일한 인터넷 프록시가 아닙니다. DMB/TPEG는 별도 방송 수신·decoder·교통 서비스·내비 경로를 거치며, MQTT는 차량에서 이미 받은 값을 운반합니다. 외부 공급자가 없는 도로 정보나 수신하지 못한 연료 잔량을 통신 방식만 바꿔 만들 수는 없습니다.
|
|
|
|
## 세 가지 위치·목적지 흐름
|
|
|
|
| 흐름 | 보내는 대상과 데이터 | 구분 |
|
|
|---|---|---|
|
|
| 내 차 위치 공유 | 사람에게 최신 차량 위치·허용 차량정보의 수신자별 링크 | 이동하면서 갱신, 개별 중지·만료 |
|
|
| 목적지 문자 공유 | 사람에게 선택한 목적지의 정적 지도 링크 | 현재 차량 상태·이동 GPS와 분리 |
|
|
| Send to Car | 웹에서 차량의 순정 POI 저장·알림·ACK 경로 | 외부 경로 형상을 순정 안내에 이식하는 기능은 아님 |
|
|
|
|
차계부는 신선한 모뎀·차량 관측과 영속 상태를 사용하는 별도 서버 소비자입니다. HA의 화면 참고용 `last_known` 센서나 오래된 시동값으로 주행을 확정하지 않으며, 개인 장부·금융·영수증 데이터는 공개 소스의 시험 입력에 포함하지 않습니다.
|
|
|
|
## 세 가지 코드 계층
|
|
|
|
| 계층 | 역할 | 공개본의 범위 |
|
|
|---|---|---|
|
|
| 순정 앱과 ODEX | 화면·요청·callback·서비스 진입 | 설명만, 제조사 원본·수정 전체 앱 제외 |
|
|
| 내비 네이티브 | 지도·경로 계산·교통·카메라·렌더링 | 설명과 과거 단일 변경 생성기 예제 |
|
|
| 독립 수집·변환 코드 | 수신 검증·요청 제어·MQTT·서버 계약 변환 | 검토한 일부 소스와 합성 시험 |
|
|
|
|
운영 배포는 동일 버전 확인과 해시 검증을 거친 작은 변경을 우선했습니다. 일부 앱은 원본 APK를 유지하고 ODEX payload를 bind하는 방식, 내비는 해당 엔진에 맞는 제한된 native 변경을 사용했습니다. 이 방법도 버전 의존성이 있으므로 범용 설치법이 아닙니다.
|
|
|
|
## 원천값과 표시값
|
|
|
|
- RPM decoder는 도착한 프레임을 검증한 뒤 callback을 호출합니다. 이벤트 반영은 화면 렌더링 시간이 0이라는 뜻이 아닙니다.
|
|
- 내비 차속 보정은 내비의 내부 소비값을 바꾸는 것입니다. 차량 ECU·계기판·OBD의 원시 속도를 변경하지 않습니다.
|
|
- MQTT는 이미 확인한 값을 운반하는 수단입니다. 초기값이나 잘못된 해석을 MQTT가 정답으로 만들어 주지 않습니다.
|
|
- 연결이 끊긴 실시간 센서와 마지막 관측값은 서로 구분해야 합니다. 오래된 속도·기어·시동값을 현재 제어 판단에 쓰지 않습니다.
|
|
|
|
## 서버 인증과 저장
|
|
|
|
운영 서버는 차량 인증, 관리자 세션, CSRF, 명령 상태기계, 수신자별 공유 링크와 만료·폐기를 따로 관리합니다. 실제 키·개인정보·DB·원문 요청 로그는 공개하지 않습니다. 백엔드 변환기는 정식 서비스 가입·결제·차량 인증을 대신하지 않으며, SOS·결제의 가짜 성공을 제공하지 않습니다.
|
|
|
|
헤드유닛의 전원이 완전히 꺼져 Android와 네트워크가 정지하면 이 경로로 원격 명령을 받을 수 없습니다. 별도 저전력 수신기와 검증된 wake 연동은 독립적인 하드웨어 과제입니다.
|