$data · Dados de condução
$data fornece dados de acordo com o identificador de entrada deste instrumento: current é a entrada atual e history são as amostras de entrada dos últimos 30 segundos do disparo atual.
dados legíveis
Clique no nome do instrumento na parte superior do editor para abrir Ajustes do instrumento → Vínculos de entrada. Engrene em Configuração de parâmetros para definir o nome, identificador e tipo de entrada; retorne a ligação de entrada e preencha os valores nativos ou selecione seus próprios parâmetros de veículo para a entrada OBD. Os dados básicos são fornecidos automaticamente pelo aplicativo.
O script acessa a entrada via $data.current.<identifier>. Por exemplo, a entrada de velocidade base speed usa $data.current.speed e a entrada OBD coolant usa $data.current.coolant. O nome do campo é independente do UUID do parâmetro do veículo e do nome do dispositivo. A alteração dos parâmetros do veículo requer apenas uma religação; modificar o identificador de entrada requer modificar o código.
| tipo | Configuração e o que o script lê |
|---|---|
| Número | Defina o valor padrão e os limites superior e inferior opcionais; o script lê o número diretamente, como $data.current.limit. |
| Texto | Defina o texto padrão; o script lê a string diretamente, como $data.current.label. |
| Interruptor | Defina o estado padrão do switch; o script lê o valor booleano diretamente, como $data.current.showUnit. |
| Seleção | Defina texto opcional e padrões; o script lê a string selecionada, como $data.current.style. |
| Dados básicos | Selecione uma fonte como velocidade, valor G, posição ou tempo; a estrutura de leitura depende da fonte. |
| Dados OBD | Defina o tipo de valor esperado e selecione os parâmetros do dispositivo e do veículo na ligação de entrada; a leitura é { value, unit } ou null. |
A tabela de campos abaixo usa identificadores de exemplo e não significa que cada medidor tenha automaticamente esses campos. A interface real e os prompts de tipo são gerados com base na definição de entrada do instrumento atual.
Estrutura das leituras e valores ausentes
O valor da quantidade básica e a leitura de OBD são geralmente { value, unit }; dados básicos como posição, valor G, atitude, etc. possuem seus próprios componentes, e o status de gravação é um valor booleano. Valores, texto, opções e seleções retornam seus valores configurados diretamente.
Quando OBD não está vinculado ou a configuração não existe, toda a entrada é null; quando a ligação existe, mas está temporariamente ausente, { value: null, unit } é retido. Use reading?.value == null para verificar testes ausentes, mantendo 0 válido. value de OBD pode ser um mapeamento literal; a declaração de tipo não realiza conversão em tempo de execução e o tipo deve ser verificado antes de chamar métodos numéricos.
Janela de histórico e unidade de tempo
$data.history são os dados selecionados de A viagem atual dura 30 segundos, organizados do mais antigo para o mais recente. O host salva todos os dados coletados de forma unificada e depois os monta conforme necessário de acordo com os parâmetros de entrada do instrumento; a janela existente pode ser lida abrindo o instrumento. Pausar o desenho, pular a renderização ou recriar uma instância em execução não perde a janela. Redefinir ao encerrar ou alternar viagens ou alternar modos de operação; a janela do histórico fica vazia quando não há nenhuma viagem ativa.
O histórico é amostrado a um máximo de 5 Hz, com amostras adjacentes separadas por pelo menos 200 ms, e um máximo de 151 itens são retidos. Tempos de amostragem repetidos e redesenhos causados apenas por alterações no ambiente de exibição não aumentarão as amostras; após a interrupção dos dados, o host ainda limpará as amostras expiradas em um tempo monotônico, sem execução de script. Este limite superior não impede current de ler esta entrada mais recente, nem inicia consultas OBD adicionais.
Cada amostra possui uma estrutura de campo consistente com current e pode conter testes ausentes. Modificar definições de entrada ou ligações remonta a janela; parâmetros fixos, como valores, opções, texto e opções, usam a configuração atual. A atualização de dados compara apenas o conteúdo real de $data.current para decidir se deve executar JS. Valores, unidades e subcampos de grupo estão todos envolvidos na comparação; novas respostas com o mesmo valor, crescimento histórico ou recorte, tempo de coleta interno e atualizações de origem não selecionadas não acionarão a execução separadamente. O host continua a manter a janela completa e, na próxima vez que current for alterado, o script obterá o histórico mais recente. Os carimbos de data/hora explicitamente selecionados ou as durações registradas pertencem a current, e as alterações de valor ainda acionarão a execução. OBD A leitura mantém o valor, a unidade e o status de medição faltante no momento da amostragem e não será preenchida com leituras subsequentes; a velocidade básica será convertida de acordo com a unidade de exibição atual. elapsed.value é o número de segundos decorridos durante a viagem atual, timestamp.value é o carimbo de data/hora em milissegundos e movingTime.value é o tempo de viagem em segundos. Use o tempo real ao desenhar curvas de tempo e retenha os pontos de interrupção causados por medições ausentes.
Exemplo: Exibir parâmetros de velocidade e OBD simultaneamente
Defina duas entradas: a entrada de velocidade base com identificador speed e a entrada OBD com identificador coolant. Vincule os parâmetros nativos do veículo a estes últimos. O exemplo a seguir exibe leituras e unidades por seus respectivos identificadores de entrada; nenhuma modificação no código de exemplo é necessária ao religar o dispositivo.
function main() {
const speed = $data.current.speed;
const parameter = $data.current.coolant;
return (
<VStack spacing={8}>
<Text fontSize={40}>
{speed?.value == null ? '—' : speed.value.toFixed(0)}
</Text>
<Text>{speed?.unit ?? $env.speedUnit}</Text>
<Text>
{parameter?.value == null ? '—' : parameter.value.toString()}
</Text>
<Text>{parameter?.unit ?? ''}</Text>
</VStack>
);
}
Atualizações e fontes de dados
Cada execução de script usa a entrada mais recente; a frequência real é determinada pela fonte de dados, alterações de entrada e tempo de processamento. current e history retornam cópias dos dados, modificá-los não alterará as leituras dos sensores ou a configuração do veículo.
Campos como velocidade base terão configurações válidas de substituição de dados de viagem aplicadas. A leitura do parâmetro OBD usa diretamente a leitura e a unidade do próprio parâmetro. Intervalos de consulta, respostas de veículos e outras solicitações afetarão a atualização real. A disponibilidade de dados também é afetada pelo posicionamento, status de reconhecimento e conectividade do dispositivo; as visualizações do editor usam entradas simuladas independentes.
Campo
current{ [identifier: string]: number | string | boolean | object | null }Dados selecionados mais recentes
history{ [identifier: string]: number | string | boolean | object | null }[]Dados selecionados dos últimos 30 segundos, dos mais antigos aos mais recentes
current.speed{ value: number | null; unit: "km/h" | "mph" }Velocidade
current.gForce{ longitudinal: number | null; lateral: number | null; combined: number | null; unit: string }Força G
current.heading{ direction: number | null; accuracy: number | null; unit: string }Direção
current.location{ latitude: number | null; longitude: number | null; unit: string }Localização
current.vehicleAttitude{ roll: number | null; pitch: number | null; unit: string }Atitude do veículo
current.locationAccuracy{ value: number | null; unit: "m" }Precisão da localização
current.altitude{ value: number | null; unit: "m" }Altitude
current.distance{ value: number | null; unit: "m" }Distância
current.movingTime{ value: number | null; unit: "s" }Tempo em movimento
current.timestamp{ value: number | null; unit: "ms" }Hora da captura
current.elapsed{ value: number | null; unit: "s" }Tempo de gravação
current.recordingbooleanGravando
current.coolant{ value: number | string | null; unit: string | null } | nullDados OBD
current.limitnumberNúmero
current.labelstringTexto
current.showUnitbooleanInterruptor
current.stylestringSeleção