$data · Dati di guida

$data fornisce dati in base all'identificatore di ingresso di questo strumento: current è l'ingresso corrente e history sono i campioni di ingresso degli ultimi 30 secondi del viaggio corrente.

dati leggibili

Fai clic sul nome dello strumento nella parte superiore dell'editor per aprire Impostazioni strumento → Associazioni di ingresso. Inserimento in Configurazione dei parametri per la definizione del nome, identificatore e tipologia dell'input; restituisci l'associazione dell'input e inserisci i valori nativi oppure seleziona i parametri del tuo veicolo per l'input OBD. I dati di base vengono forniti automaticamente dall'app.

Lo script accede all'input tramite $data.current.<identifier>. Ad esempio, l'ingresso della velocità base speed utilizza $data.current.speed e l'ingresso OBD coolant utilizza $data.current.coolant. Il nome del campo è indipendente dall'UUID del parametro del veicolo e dal nome del dispositivo. La modifica dei parametri del veicolo richiede solo la riassociazione; la modifica dell'identificatore di input richiede la modifica del codice.

tipo Configurazione e cosa legge lo script
Numero Imposta il valore predefinito e i limiti superiore e inferiore opzionali; lo script legge direttamente il numero, ad esempio $data.current.limit.
Testo Imposta il testo predefinito; lo script legge direttamente la stringa, ad esempio $data.current.label.
Interruttore Imposta lo stato dell'interruttore predefinito; lo script legge direttamente il valore booleano, ad esempio $data.current.showUnit.
Selezione Definire testo opzionale e valori predefiniti; lo script legge la stringa selezionata, ad esempio $data.current.style.
Dati di base Seleziona una sorgente come velocità, valore G, posizione o tempo; la struttura della lettura dipende dalla sorgente.
Dati OBD Definire il tipo di valore atteso e selezionare i parametri del dispositivo e del veicolo nell'associazione di input; la lettura è { value, unit } o null.

La tabella dei campi riportata di seguito utilizza identificatori di esempio e non significa che ogni contatore disponga automaticamente di questi campi. L'interfaccia effettiva e i prompt del tipo vengono generati in base alla definizione di input dello strumento corrente.

Struttura delle letture e valori mancanti

Il valore della grandezza base e la lettura del OBD sono solitamente { value, unit }; i dati di base come posizione, valore G, assetto, ecc. hanno i propri componenti e lo stato di registrazione è un valore booleano. Valori, testo, opzioni e selezioni restituiscono direttamente i valori configurati.

Quando OBD non è associato o la configurazione non esiste, l'intero input è null; quando l'associazione esiste ma è temporaneamente mancante, viene mantenuto { value: null, unit }. Utilizzare reading?.value == null per verificare la presenza di test mancanti, mantenendo il 0 valido. value di OBD può essere una mappatura letterale; la dichiarazione del tipo non esegue la conversione in fase di esecuzione e il tipo deve essere controllato prima di chiamare metodi numerici.

Finestra della cronologia e unità di tempo

$data.history sono i dati selezionati di Il viaggio attuale dura 30 secondi, organizzati dal più vecchio al più recente. L'host salva tutti i dati raccolti in modo unificato, quindi li assembla secondo necessità in base ai parametri di input dello strumento; la finestra esistente può essere letta aprendo lo strumento. Sospendere il disegno, saltare il rendering o ricreare un'istanza in esecuzione non fa perdere la finestra. Reset alla fine o al cambio di viaggi o al cambio di modalità operative; la finestra della cronologia è vuota quando non vi è alcun viaggio attivo.

La cronologia viene campionata a un massimo di 5 Hz, con campioni adiacenti separati da almeno 200 ms e vengono conservati un massimo di 151 elementi. Tempi di campionamento ripetuti e rieseguimenti causati solo da cambiamenti nell'ambiente di visualizzazione non aumenteranno i campioni; dopo l'interruzione dei dati, l'host eliminerà comunque i campioni scaduti in un tempo monotono, senza esecuzione dello script. Questo limite superiore non impedisce a current di leggere quest'ultimo input, né avvia query OBD aggiuntive.

Ogni campione ha una struttura di campo coerente con current e potrebbe contenere test mancanti. La modifica delle definizioni o dei collegamenti di input riassembla la finestra; i parametri fissi come valori, opzioni, testo e opzioni utilizzano la configurazione corrente. L'aggiornamento dei dati confronta solo il contenuto effettivo di $data.current per decidere se eseguire JS. Valori, unità e sottocampi di gruppo sono tutti coinvolti nel confronto; le nuove risposte con lo stesso valore, crescita storica o ritaglio, tempo di raccolta interna e aggiornamenti di origine non selezionati non attiveranno l'esecuzione separatamente. L'host continua a mantenere la finestra completa e alla successiva modifica del current, lo script ottiene la cronologia più recente. I timestamp o le durate registrate esplicitamente selezionati appartengono a current e le modifiche ai valori attiveranno comunque l'esecuzione. OBD La lettura conserva il valore, l'unità e lo stato di misura mancante al momento del campionamento e non verrà ripristinata con letture successive; la velocità di base verrà convertita in base all'unità di visualizzazione corrente. elapsed.value è il numero di secondi trascorsi durante il viaggio corrente, timestamp.value è il timestamp in millisecondi e movingTime.value è il tempo di viaggio in secondi. Utilizza il tempo reale quando disegni le curve temporali e conserva i punti di interruzione causati dalle misurazioni mancanti.

Esempio: visualizzazione simultanea della velocità e dei parametri OBD

Definire due input: l'input della velocità di base con identificatore speed e l'input OBD con identificatore coolant. Associa a quest'ultimo i parametri nativi del veicolo. L'esempio seguente mostra le letture e le unità in base ai rispettivi identificatori di ingresso; non sono necessarie modifiche al codice di esempio quando si ricollega il 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>
  );
}

Aggiornamenti e fonti dati

Ogni esecuzione dello script utilizza l'input più recente; la frequenza effettiva è determinata dall'origine dati, dalle modifiche dell'input e dal tempo di elaborazione. current e history restituiscono copie dei dati, la loro modifica non modificherà le letture dei sensori o la configurazione del veicolo.

Ai campi come la velocità di base verranno applicate impostazioni di sostituzione dei dati di viaggio valide. La lettura del parametro OBD utilizza direttamente la lettura e l'unità del parametro. Gli intervalli di query, le risposte del veicolo e altre richieste influenzeranno l'aggiornamento effettivo. La disponibilità dei dati è influenzata anche dal posizionamento, dallo stato di riconoscimento e dalla connettività del dispositivo; le anteprime dell'editor utilizzano input simulati separati.

Campo

current{ [identifier: string]: number | string | boolean | object | null }

Ultimi dati selezionati

history{ [identifier: string]: number | string | boolean | object | null }[]

Dati selezionati degli ultimi 30 secondi, dai meno recenti

current.speed{ value: number | null; unit: "km/h" | "mph" }

Velocità

current.gForce{ longitudinal: number | null; lateral: number | null; combined: number | null; unit: string }

Forza G

current.heading{ direction: number | null; accuracy: number | null; unit: string }

Direzione

current.location{ latitude: number | null; longitude: number | null; unit: string }

Posizione

current.vehicleAttitude{ roll: number | null; pitch: number | null; unit: string }

Assetto del veicolo

current.locationAccuracy{ value: number | null; unit: "m" }

Precisione della posizione

current.altitude{ value: number | null; unit: "m" }

Altitudine

current.distance{ value: number | null; unit: "m" }

Distanza

current.movingTime{ value: number | null; unit: "s" }

Tempo in movimento

current.timestamp{ value: number | null; unit: "ms" }

Ora di acquisizione

current.elapsed{ value: number | null; unit: "s" }

Durata della registrazione

current.recordingboolean

Registrazione in corso

current.coolant{ value: number | string | null; unit: string | null } | null

Dati OBD

current.limitnumber

Numero

current.labelstring

Testo

current.showUnitboolean

Interruttore

current.stylestring

Selezione