i99dash docs
BYD API

The brand-neutral catalog

Every signal name the host's v2 bridge exposes — read by name, write by actionId. Filter, search, and copy into a `client.car.read(...)` call.

The catalog is the brand-neutral name set the host's v2 bridge exposes to every mini-app. Each entry is a single car-data signal — a door state, an AC fan level, a tyre pressure — keyed by a stable name like ac_cabin_temp or door_lf. The catalog below is the literal payload client.car.list() returns at runtime, plus the same name set you pass to client.car.read([...]) and client.car.subscribe({names}). One source of truth.

This page is generated from byd_catalog.dart — the single source of truth in car-i99dash. Each entry pairs a brand-neutral name with its underlying BYD framework name (host- side only) and the UI metadata you see in the table below.

Two regen paths land the data into this site, both producing the identical public/data/catalog.json:

  • dart run tool/dump_catalog.dart from car-i99dash — calls the same BydPublicCatalog.build() the host runs at boot, so the JSON matches client.car.list() byte-for-byte.
  • node scripts/import-byd-catalog.mjs from this repo — Dart-free fallback that parses byd_catalog.dart with a tolerant regex. CI uses this; nothing to install beyond Node.

Other brands (Tesla, NIO, Geely) will live alongside BYD here once their host adapters ship; the controller surface is brand-agnostic already.

The framework integer feature ids (BYD's BYDAutoFeatureIds constants) are deliberately not carried across the bridge and not surfaced here. They drift across DiLink ROM revisions and between brands. The catalog name is the stable contract; the host adapts each name to the right framework key per car at boot.

Use it

import { MiniAppClient } from 'i99dash';

const client = MiniAppClient.fromWindow();

// One-shot snapshot — up to 64 names per call.
const { values } = await client.car.read(['ac_power', 'ac_cabin_temp']);

// Push stream — host fans out on actual change, not on every poll.
const off = await client.car.subscribe({
  names: ['speed_kmh', 'door_lf', 'door_rf'],
  onEvent: (e) => console.log(e.name, '=', e.value, 'at', e.at),
});

To write, use the writeActionId shown in the table — client.car.command(actionId, args?) routes through the host's CarCommandRouter (rate limit, stationary-speed gate, integrity chain). The same row tells you whether the host has wired a write action at all.

The catalog now ships with 1,036 entries across 14 categories. New names land when the host adapter onboards a new signal; existing names never drop. If you depend on a name not in the list, file an issue and the next docs build will include it.

Categories

CategoryWhat it coversUse it for
climateAC, defrost, fan modes, recirc, vents, scheduled pre-heat / pre-cool, cabin air qualityClimate-control mini-apps, comfort presets, scheduler integrations
adasLDW / AEB / ACC / LKA / BSD / 360 cam / FCW / front + rear cross-trafficDriver-assistance dashboards, ADAS settings panels, ride-quality apps
propulsionBattery SoC, EV / fuel range, motor RPM + torque, engine speed, energy state, regen, gearboxRange estimators, efficiency coaches, gauge clusters, the Battery Analyzer sample
doorsAll 4 doors / windows / locks / child locks, sunroof + position, hood, trunk, fuel cap, mirrorsLock state mini-apps, walk-away auto-lock, 3D car-model viewers
safetyTPMS pressure + temperature, seat belts, wipers + washer, radar obstacle distances, airbag, hazardPre-drive checks, walk-around inspection, parking aids
lightsHeadlights, fog, DRL, turn signals, ambient zones, foot / dome / reading lights, hazard, reverseTheatre / welcome modes, light-show experiences, 3D viewers
chargingCharger state, AC + DC port detection, target SoC, ETA, fault codes, scheduled appointmentsCharge schedulers, energy dashboards, the Battery Analyzer sample
mediaVolume, source, BT state, EQ, surround, 3D-audio cueAudio dashboards, music apps, voice integrations
statisticsLifetime + trip + instant energy / fuel / mileage, cell V/T spread, BMS healthTrip summaries, eco-driving coaches, fleet telematics
systemOTA state, 12V health, screen brightness, time, HUD, GB cellularHealth-check mini-apps, OTA banners, diagnostic widgets
cabinMassage, ambient lighting, fragrance, seat memory positions, rear refrigeratorComfort presets, "movie mode", driver-profile recall
dynamicsSpeed, accelerator / brake position, cruise, AVH, steering angle, yaw, slopePerformance widgets, dyno-style gauges, telemetry recorders
sensorsPM2.5 (in + out), CO₂, AQS, humidity, light, slope, rain detectionAir-quality widgets, weather-aware automation
settingsUnits, language, screen brightness, soundProfile import / export, theming, accessibility apps

Browse

Use the table below to search, filter by category, or restrict to the 3D-friendly subset (signals useful as animation drivers for a 3D car-model viewer). Click a name to copy it into a client.car.read([…]) call.

Loading catalog…

On this page