fix: consume per-entity Gen5W telemetry

This commit is contained in:
seo-amugae committed 2026-10-20 20:02:36 +09:00
1 parent 5f7f4397a0
commit 5d2a6b2e44
4 files changed
+146 -110

No files matched your search

+4 -4
View File
@@ -81,14 +81,14 @@ Car는 차량 모뎀/게이트웨이에서 받은 상태를 수집해 DB에 저
## Gen5W MQTT 텔레메트리
`NiroTelemetrySnapshot.php`는 차량이 5초마다 발행하는 retained `niro/gen5w/state`와 availability `niro/gen5w/status`를 읽습니다. 브라우저에는 약 2,000개 원시 snapshot 전체를 보내지 않고 운전에 의미 있는 선별 지표와 수집 상태만 반환합니다. 현재 화면은 다음 정보를 결합합니다.
`NiroTelemetrySnapshot.php`는 차량의 Binder callback이 값 변경 시 즉시 발행하는 retained `niro/gen5w/state/{entity-id}`와 availability `niro/gen5w/status`를 읽습니다. 구형 polling v6 rollback을 위해 `niro/gen5w/state` JSON도 함께 해석하지만 운영 기본값은 개별 scalar topic입니다. 브라우저에는 검증된 선별 지표와 수집 상태만 반환합니다. 현재 화면은 다음 정보를 결합합니다.
- 주행 상태, 속도, 기어, 주차 브레이크, 카메라 상태와 주행 가능 거리
- 12V SOC, LDC 충전, HEV 모드·충전 상태, 모터 사용과 누적 주행거리
- 네 도어의 열림·잠금, 트렁크, 등화, 안전벨트와 DTC 경고
- 공조 전원, A/C, AUTO·DUAL, 풍량, 좌우 설정 온도와 외기 온도
- 경로 안내, 다음 회전 거리, 제한 속도, 경로 이탈과 단속 지점 정보
- MICOM 연결, 부팅, 헤드유닛·AV 전원, 미디어 소스와 음량
- 헤드유닛·AV 전원, 미디어 소스와 NMode readback
- 현재 event bridge에서 계약이 없는 경로·단속·음량 값은 이전 raw cache로 채우지 않고 미지원으로 표시
차량 세대상 제공하지 않는 값은 `-1`, `255`, `65535`, `4294967295`, `0xff`, `0xffffffff` sentinel로 구분해 `미지원`으로 표시합니다. 값의 존재만으로 기능이 활성화됐다고 판단하지 않으며, 원시 ECU 쓰기나 제어 명령은 MQTT 경로에서 수행하지 않습니다.
@@ -114,7 +114,7 @@ return [
];
```
`car_dashboard` MQTT 계정은 `niro/gen5w/state`와 `niro/gen5w/status` 두 topic의 read 권한만 가집니다. `NiroTelemetrySnapshot.php`는 같은 웹 요청이 1초마다 반복돼도 broker snapshot은 최대 4초 동안 웹 전용 캐시에서 재사용합니다. 새 수집이 실패하면 직전 cache를 표시하되 `stale`과 cache fallback 상태를 함께 반환합니다.
`car_dashboard` MQTT 계정은 `niro/gen5w/state`, `niro/gen5w/state/#`와 `niro/gen5w/status`만 읽을 수 있습니다. `NiroTelemetrySnapshot.php`는 같은 웹 요청이 반복돼도 broker snapshot은 최대 4초 동안 웹 전용 캐시에서 재사용합니다. 새 수집이 실패하면 직전 cache를 표시하되 `stale`과 cache fallback 상태를 함께 반환하며, availability가 offline이면 마지막 값을 보존하되 즉시 stale로 판정합니다.
요약 계약 회귀시험은 CLI에서만 실행됩니다.