$data · Fahrdaten

$data liefert Daten entsprechend der Eingangskennung dieses Instruments: current ist der aktuelle Eingang und history sind die Eingangsproben der letzten 30 Sekunden der aktuellen Fahrt.

lesbare Daten

Klicken Sie oben im Editor auf den Instrumentennamen, um Instrumenteneinstellungen → Eingabezuordnungen zu öffnen. Wechseln Sie zu Parameterkonfiguration, um den Namen, die Kennung und den Typ der Eingabe zu definieren. Geben Sie die Eingabebindung zurück und geben Sie native Werte ein oder wählen Sie Ihre eigenen Fahrzeugparameter für die Eingabe OBD aus. Die Grunddaten werden automatisch von der App bereitgestellt.

Das Skript greift über $data.current.<identifier> auf die Eingabe zu. Beispielsweise verwendet die Basisgeschwindigkeitseingabe speed $data.current.speed und die OBD-Eingabe coolant verwendet $data.current.coolant. Der Feldname ist unabhängig von der Fahrzeugparameter-UUID und dem Gerätenamen. Das Ändern von Fahrzeugparametern erfordert lediglich eine erneute Bindung; Das Ändern der Eingabekennung erfordert eine Änderung des Codes.

Typ Konfiguration und was das Skript liest
Zahl Legen Sie den Standardwert und optionale Ober- und Untergrenzen fest; Das Skript liest die Nummer direkt, z. B. $data.current.limit.
Text Legen Sie den Standardtext fest. Das Skript liest die Zeichenfolge direkt, z. B. $data.current.label.
Schalter Legen Sie den Standardschalterzustand fest. Das Skript liest den booleschen Wert direkt, z. B. $data.current.showUnit.
Auswahl Definieren Sie optionalen Text und Standardwerte. Das Skript liest die ausgewählte Zeichenfolge, z. B. $data.current.style.
Basisdaten Wählen Sie eine Quelle wie Geschwindigkeit, G-Wert, Position oder Zeit; Die Auslesestruktur hängt von der Quelle ab.
OBD-Daten Definieren Sie den erwarteten Werttyp und wählen Sie die Geräte- und Fahrzeugparameter in der Eingabebindung aus. Die Anzeige lautet { value, unit } oder null.

Die folgende Feldtabelle verwendet Beispielkennungen und bedeutet nicht, dass jeder Zähler automatisch über diese Felder verfügt. Die tatsächlichen Schnittstellen- und Typaufforderungen werden basierend auf der Eingabedefinition des aktuellen Instruments generiert.

Struktur der Messwerte und fehlende Werte

Der Grundmengenwert und der OBD-Wert sind normalerweise { value, unit }; Grunddaten wie Position, G-Wert, Haltung usw. haben eigene Komponenten und der Aufzeichnungsstatus ist ein boolescher Wert. Werte, Texte, Schalter und Auswahlen geben ihre konfigurierten Werte direkt zurück.

Wenn OBD nicht gebunden ist oder die Konfiguration nicht vorhanden ist, ist die gesamte Eingabe null; Wenn die Bindung vorhanden ist, aber vorübergehend fehlt, wird { value: null, unit } beibehalten. Verwenden Sie reading?.value == null, um nach fehlenden Tests zu suchen und behalten Sie dabei den gültigen 0 bei. value von OBD kann ein Mapping-Literal sein; Die Typdeklaration führt keine Laufzeitkonvertierung durch und der Typ sollte vor dem Aufruf numerischer Methoden überprüft werden.

Verlaufsfenster und Zeiteinheit

$data.history sind die ausgewählten Daten von Die aktuelle Fahrt dauert 30 Sekunden, geordnet vom ältesten zum neuesten. Der Host speichert alle gesammelten Daten auf einheitliche Weise und stellt sie dann nach Bedarf entsprechend den Eingabeparametern des Instruments zusammen. Das vorhandene Fenster kann durch Öffnen des Gerätes ausgelesen werden. Durch das Anhalten des Zeichnens, das Überspringen des Renderns oder das Neuerstellen einer laufenden Instanz geht das Fenster nicht verloren. Zurücksetzen beim Beenden oder Wechseln von Fahrten oder Wechseln der Betriebsarten; Das Verlaufsfenster ist leer, wenn keine aktive Fahrt vorliegt.

Der Verlauf wird mit maximal 5 Hz abgetastet, wobei benachbarte Abtastwerte mindestens 200 ms voneinander entfernt sind und maximal 151 Elemente gespeichert werden. Wiederholte Sampling-Zeiten und Neuzeichnungen, die nur durch Änderungen in der Anzeigeumgebung verursacht werden, erhöhen die Samples nicht; Nachdem die Daten gestoppt wurden, löscht der Host weiterhin abgelaufene Samples in einer monotonen Zeit, ohne dass ein Skript ausgeführt wird. Diese Obergrenze schränkt current nicht beim Lesen dieser neuesten Eingabe ein und initiiert auch keine zusätzlichen OBD-Abfragen.

Jede Stichprobe hat eine Feldstruktur, die mit current übereinstimmt, und kann fehlende Tests enthalten. Durch Ändern von Eingabedefinitionen oder Bindungen wird das Fenster neu zusammengesetzt. Feste Parameter wie Werte, Schalter, Texte und Optionen verwenden die aktuelle Konfiguration. Die Datenaktualisierung vergleicht nur den tatsächlichen Inhalt von $data.current, um zu entscheiden, ob JS ausgeführt werden soll. Werte, Einheiten und Gruppenunterfelder sind alle am Vergleich beteiligt; Neue Antworten mit demselben Wert, demselben historischen Wachstum oder derselben Beschneidung, derselben internen Erfassungszeit und nicht ausgewählten Quellaktualisierungen lösen die Ausführung nicht separat aus. Der Host verwaltet weiterhin das vollständige Fenster und bei der nächsten Änderung von current ruft das Skript den neuesten Verlauf ab. Explizit ausgewählte Zeitstempel oder aufgezeichnete Dauern gehören zu current, und Wertänderungen lösen weiterhin die Ausführung aus. OBD Der Messwert behält den Wert, die Einheit und den fehlenden Messstatus zum Zeitpunkt der Probenahme bei und wird nicht mit nachfolgenden Messwerten aufgefüllt; Die Grundgeschwindigkeit wird entsprechend der aktuellen Anzeigeeinheit umgerechnet. elapsed.value ist die Anzahl der während der aktuellen Fahrt verstrichenen Sekunden, timestamp.value ist der Millisekunden-Zeitstempel und movingTime.value ist die Fahrzeit in Sekunden. Verwenden Sie beim Zeichnen von Zeitkurven die tatsächliche Zeit und behalten Sie Haltepunkte bei, die durch fehlende Messungen verursacht wurden.

Beispiel: Geschwindigkeit und OBD-Parameter gleichzeitig anzeigen

Definieren Sie zwei Eingänge: den Basisgeschwindigkeitseingang mit der Kennung speed und den Eingang OBD mit der Kennung coolant. Binden Sie native Fahrzeugparameter an Letzteres. Im folgenden Beispiel werden Messwerte und Einheiten nach ihren jeweiligen Eingabebezeichnern angezeigt. Beim erneuten Binden des Geräts sind keine Änderungen am Beispielcode erforderlich.

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>
  );
}

Updates und Datenquellen

Bei jeder Skriptausführung wird die neueste Eingabe verwendet. Die tatsächliche Häufigkeit wird durch die Datenquelle, Eingabeänderungen und Verarbeitungszeit bestimmt. current und history geben Kopien der Daten zurück. Durch deren Änderung werden weder die Sensorwerte noch die Fahrzeugkonfiguration geändert.

Auf Felder wie die Grundgeschwindigkeit werden gültige Einstellungen für die Ersetzung von Reisedaten angewendet. Beim direkten Lesen des Parameters OBD werden der eigene Messwert und die Einheit des Parameters verwendet. Abfrageintervalle, Fahrzeugantworten und andere Anfragen wirken sich auf die tatsächliche Aktualisierung aus. Die Datenverfügbarkeit wird auch durch die Positionierung, den Erkennungsstatus und die Gerätekonnektivität beeinflusst; Editor-Vorschauen verwenden separate simulierte Eingaben.

Feld

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

Aktuelle ausgewählte Daten

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

Ausgewählte Daten der letzten 30 Sekunden, älteste zuerst

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

Geschwindigkeit

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

G-Kraft

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

Richtung

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

Standort

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

Fahrzeuglage

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

Positionsgenauigkeit

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

Höhe

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

Strecke

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

Fahrzeit

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

Erfassungszeit

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

Aufzeichnungsdauer

current.recordingboolean

Aufzeichnung läuft

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

OBD-Daten

current.limitnumber

Zahl

current.labelstring

Text

current.showUnitboolean

Schalter

current.stylestring

Auswahl