$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초 동안 이루어졌습니다.**에서 선택한 데이터로, 가장 오래된 것부터 최신 것 순으로 정렬됩니다. 호스트는 수집된 모든 데이터를 통일된 방식으로 저장한 다음 기기 입력 매개변수에 따라 필요에 따라 이를 조립합니다. 기존 창은 기기를 열어 읽을 수 있습니다. 그리기를 일시 중지하거나, 렌더링을 건너뛰거나, 실행 중인 인스턴스를 다시 생성해도 창이 사라지지 않습니다. 트립을 종료하거나 전환하거나 작동 모드를 전환할 때 재설정합니다. 활성 여행이 없으면 기록 창은 비어 있습니다.

기록은 최대 5Hz로 샘플링되며 인접 샘플은 최소 200ms 간격으로 분리되며 최대 151개 항목이 유지됩니다. 디스플레이 환경의 변화로 인해 샘플링 횟수가 반복되고 다시 그려지는 경우에는 샘플이 증가하지 않습니다. 데이터가 중지된 후에도 호스트는 스크립트 실행 없이 단조로운 시간 내에 만료된 샘플을 계속 지웁니다. 이 상한은 current이 최신 입력을 읽는 것을 제한하지 않으며 추가 OBD 쿼리를 시작하지도 않습니다.

각 샘플에는 current과 일치하는 필드 구조가 있으며 누락된 테스트가 포함될 수 있습니다. 입력 정의 또는 바인딩을 수정하면 창이 다시 어셈블됩니다. 값, 스위치, 텍스트, 옵션 등의 고정 매개변수는 현재 구성을 사용합니다. 데이터 업데이트는 $data.current의 실제 내용만 비교하여 JS 실행 여부를 결정합니다. 값, 단위 및 그룹 하위 필드가 모두 비교에 포함됩니다. 동일한 값, 기록 증가 또는 클리핑, 내부 수집 시간 및 선택되지 않은 소스 업데이트를 포함하는 새 응답은 별도로 실행을 트리거하지 않습니다. 호스트는 전체 창을 계속 유지하며 다음에 current이 변경될 때 스크립트는 최신 기록을 가져옵니다. 명시적으로 선택된 타임스탬프 또는 기록된 기간은 current에 속하며 값 변경은 여전히 ​​실행을 트리거합니다. OBD 판독값은 샘플링 당시의 값, 단위 및 누락된 측정 상태를 유지하며 후속 판독값으로 다시 채워지지 않습니다. 기본 속도는 현재 표시 단위에 따라 변환됩니다. elapsed.value는 현재 이동 중에 경과된 초 수이고, timestamp.value은 밀리초 타임스탬프, movingTime.value는 이동 시간(초)입니다. 시간 곡선을 그릴 때 실제 시간을 사용하고 측정 누락으로 인한 중단점을 유지하십시오.

예: 속도와 OBD 매개변수를 동시에 표시

두 개의 입력을 정의합니다: 식별자가 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

선택 항목