$data · 走行データ

$data は、この機器の入力識別子に従ってデータを提供します。current は現在の入力、history は現在のトリップの最後の 30 秒の入力サンプルです。

読み取り可能なデータ

エディターの上部にあるメーター名をクリックして、メーター設定 → 入力の割り当て を開きます。 パラメータ設定 を使用して、入力の名前、識別子、タイプを定義します。入力バインディングを返してネイティブ値を入力するか、OBD 入力に対して独自の車両パラメーターを選択します。基本データはアプリによって自動的に提供されます。

スクリプトは $data.current.<identifier> 経由で入力にアクセスします。たとえば、ベース速度入力 speed は $data.current.speed を使用し、OBD 入力 coolant は $data.current.coolant を使用します。フィールド名は、車両パラメータの UUID およびデバイス名から独立しています。車両パラメータの変更には再バインドのみが必要です。入力識別子を変更するには、コードを変更する必要があります。

タイプ 構成とスクリプトの読み取り内容
数値 デフォルト値とオプションの上限と下限を設定します。スクリプトは、$data.current.limit などの番号を直接読み取ります。
テキスト デフォルトのテキストを設定します。スクリプトは、$data.current.label などの文字列を直接読み取ります。
スイッチ デフォルトのスイッチ状態を設定します。スクリプトは、$data.current.showUnit などのブール値を直接読み取ります。
選択肢 オプションのテキストとデフォルトを定義します。スクリプトは、$data.current.style などの選択された文字列を読み取ります。
基本データ 速度、G 値、位置、時間などのソースを選択します。読み出し構造はソースによって異なります。
OBD データ 期待値のタイプを定義し、入力バインディングでデバイスと車両のパラメーターを選択します。読み出し値は { value, unit } または null です。

以下のフィールド表では識別子の例を使用していますが、すべてのメーターにこれらのフィールドが自動的に存在することを意味するものではありません。実際のインターフェイスとタイプ プロンプトは、現在の機器の入力定義に基づいて生成されます。

測定値の構造と欠測値

基本数量値と OBD 読み取り値は通常 { value, unit } です。位置、G値、姿勢などの基本データはそれぞれ独自の要素を持ち、記録ステータスはブール値となります。値、テキスト、スイッチ、および選択は、構成された値を直接返します。

OBD がバインドされていない場合、または構成が存在しない場合、入力全体は null になります。バインディングは存在するが一時的に欠落している場合、{ value: null, unit } は保持されます。 reading?.value == null を使用して欠落しているテストをチェックし、有効な 0 を保持します。 OBD の value はマッピング リテラルである可能性があります。型宣言は実行時の変換を実行しないため、数値メソッドを呼び出す前に型をチェックする必要があります。

履歴ウィンドウと時間単位

$data.history は、現在の旅行は 30 秒間続きます の選択されたデータを古いものから新しいものへ並べたものです。ホストは収集されたすべてのデータを統合された方法で保存し、機器の入力パラメータに従って必要に応じてそれを組み立てます。既存のウィンドウは、機器を開くことで読み取ることができます。描画を一時停止したり、レンダリングをスキップしたり、実行中のインスタンスを再作成したりしても、ウィンドウは失われません。トリップの終了または切り替え、または動作モードの切り替え時にリセットします。アクティブな旅行がない場合、履歴ウィンドウは空になります。

履歴は最大 5 Hz でサンプリングされ、隣接するサンプルは少なくとも 200 ミリ秒離れて、最大 151 項目が保持されます。表示環境の変化のみによってサンプリング回数や再描画が繰り返されてもサンプルは増加しません。データが停止した後も、ホストはスクリプトを実行せずに、単調な時間で期限切れのサンプルを消去します。この上限は、current によるこの最新の入力の読み取りを制限したり、追加の OBD クエリを開始したりすることはありません。

各サンプルには current と一致するフィールド構造があり、欠落しているテストが含まれている場合があります。入力定義またはバインディングを変更すると、ウィンドウが再構築されます。値、スイッチ、テキスト、オプションなどの固定パラメータは、現在の設定を使用します。データ更新では、$data.current の実際の内容のみを比較して、JS を実行するかどうかを決定します。値、単位、グループ サブフィールドはすべて比較に関係します。同じ値を持つ新しい応答、履歴の増加またはクリッピング、内部収集時間、および選択されていないソース更新は、個別に実行をトリガーしません。ホストは引き続き完全なウィンドウを維持し、次回 current が変更されると、スクリプトは最新の履歴を取得します。明示的に選択されたタイムスタンプまたは記録された期間は current に属し、値の変更により実行がトリガーされます。 OBD 測定値は、サンプリング時の値、単位、および欠落している測定ステータスを保持し、後続の測定値でバックフィルされることはありません。基本速度は現在の表示単位に応じて換算されます。 elapsed.value は現在の移動中に経過した秒数、timestamp.value はミリ秒のタイムスタンプ、movingTime.value は秒単位の移動時間です。時間曲線を描くときに実際の時間を使用し、測定値の欠落によって生じたブレークポイントを保持します。

例: 速度とOBDパラメータを同時に表示

2 つの入力を定義します。識別子 speed の基本速度入力と、識別子 coolant の OBD 入力です。ネイティブ車両パラメータを後者にバインドします。次の例では、測定値と単位をそれぞれの入力識別子ごとに表示します。デバイスを再バインドするときにサンプル コードを変更する必要はありません。

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

アップデートとデータソース

各スクリプトの実行では最新の入力が使用されます。実際の頻度は、データ ソース、入力の変更、および処理時間によって決まります。 current と history はデータのコピーを返します。これらを変更してもセンサーの読み取り値や車両の構成は変更されません。

基本速度などのフィールドには、有効なトリップ データ置換設定が適用されます。 OBD パラメータを直接読み取る場合は、パラメータ独自の読み取り値と単位が使用されます。クエリ間隔、車両の応答、その他のリクエストは実際の更新に影響します。データの可用性は、測位、認識ステータス、デバイスの接続性によっても影響されます。エディターのプレビューは独立したシミュレーション入力を使用します。

分野

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

選択したデータの最新値

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

過去30秒間の選択したデータ(古い順)

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

速度

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

Gフォース

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

車両の向き

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

位置情報

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

車両の姿勢

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

位置精度

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

標高

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

走行距離

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

走行時間

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

取得時刻

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

記録時間

current.recordingboolean

記録中

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

OBD データ

current.limitnumber

数値

current.labelstring

テキスト

current.showUnitboolean

スイッチ

current.stylestring

選択肢