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

+20 -20
View File
@@ -22,37 +22,37 @@ $summary = NiroTelemetrySnapshot::summarize([
'availability' => 'online',
'state' => [
'_sample_epoch' => $now - 3,
'meta_system_dumpsys_ok' => 'true',
'meta_hscan_dumpsys_ok' => 'false',
'system_root_ign' => 'true',
'system_root_speed' => '27',
'system_root_gear' => '5',
// These persisted/default fields can disagree with the live root values
// and must never drive the dashboard.
'system_individualdrivemode_vehicle_speed' => '0',
'system_individualdrivemode_gear_status' => 'P(0x0)',
'system_root_mbatterysoc' => '93',
'hev_micom_hevstatus_mtotaldte' => '761',
'hev_micom_hevstatus_mdisplaysoc' => '255',
'hev_micom_hevstatus_odometer' => '2596537',
'bcm_micom_bcmstatus_mdrvopenedstate' => '0',
'datc_micom_datcstatus_mambienttempc' => '25.0',
'mode_root_current_mode_real' => 'BLUETOOTH STREAMING (0x36)',
'cluster_tbt_info_operationstatus' => '1',
'ignition' => 'true',
'speed' => '27',
'gear_code' => '5',
'battery_soc_12v' => '93',
'total_distance_to_empty' => '761',
'odometer' => '259653.7',
'driver_door' => 'false',
'outside_temperature' => '25.0',
'audio_mode' => '54',
'hev_mode_code' => '2',
'head_unit_power' => '0',
'n_framework_available' => 'true',
'n_drive_mode_valid' => 'true',
'n_current_drive_mode_code' => '2',
'n_terrain_supported' => 'false',
],
], ['stale_after' => 20]);
check($summary['available'] === true, 'snapshot is available');
check($summary['online'] === true, 'availability topic is respected');
check($summary['stale'] === false, 'fresh sample is not stale');
check($summary['metric_count'] === 15, 'metric count excludes sample epoch');
check($summary['services'] === ['available' => 1, 'total' => 2], 'service health is counted');
check($summary['metric_count'] === 17, 'only mapped supported metrics are counted');
check($summary['services'] === ['available' => 7, 'total' => 7], 'source families are counted');
check($summary['metrics']['speed']['value'] === '27', 'speed mapping');
check($summary['metrics']['gear']['value'] === '5', 'live root gear mapping');
check($summary['metrics']['outside_temperature']['value'] === '25.0', 'climate mapping');
check($summary['metrics']['driver_door']['supported'] === true, 'zero is supported');
check($summary['metrics']['distance_to_empty']['value'] === '761', 'live HEV range mapping');
check($summary['metrics']['route_guide']['value'] === '1', 'live cluster route state mapping');
check($summary['metrics']['odometer']['value'] === '259653.7', 'odometer is already km');
check($summary['metrics']['n_current_drive_mode']['value'] === '2', 'N readback mapping');
check($summary['metrics']['route_guide']['supported'] === false, 'removed raw route value stays unsupported');
check(!array_key_exists('state', $summary), 'raw snapshot is not exposed');
$stale = NiroTelemetrySnapshot::summarize([