기기 데이터
$data을 통해 현재 운전 데이터와 과거 샘플을 읽고 텍스트, 그래픽 및 곡선에 대한 결과를 사용합니다. 이 문서에서는 데이터 구성, 읽기 구조, OBD 매개변수 및 업데이트 규칙에 대해 설명합니다.
데이터 인터페이스
계측기는 $data을 통해 정의된 입력을 사용합니다. $data.current은 현재 입력을 제공하고 $data.history는 현재 트립의 마지막 30초에 대한 샘플링 시퀀스를 제공합니다. 필드 이름은 계측기의 입력 식별자에서 나옵니다. 예를 들어 기본 속도 입력 이름을 speed로 지정하고 $data.current.speed를 통해 읽습니다. OBD 입력 이름을 coolant로 지정하고 $data.current.coolant을 통해 읽습니다.
속도, 거리, 시간 및 OBD에 해당하는 값에는 value 및 unit이 포함됩니다. 예를 들어 { value: 42.3, unit: 'km/h' }에는 숫자 값과 단위가 포함됩니다. 위치 및 G 값과 같은 필드는 해당 구성 요소를 제공합니다. 숫자 값, 텍스트, 스위치 및 선택 항목은 value 레이어를 래핑하지 않고 숫자, 문자열 또는 부울 값을 직접 반환합니다. 전체 규칙은 $data API를 참조하세요.
입력 및 기본 바인딩 정의
편집기 상단의 계기 이름을 클릭하여 계기 설정 → 입력 바인딩을 엽니다. 입력의 이름, 식별자 및 유형을 정의하려면 매개변수 설정을 사용하십시오. 입력 바인딩을 반환하고 기본 값을 입력하거나 OBD 입력에 대한 자체 차량 매개변수를 선택하세요. 기본 데이터는 앱에서 자동으로 제공됩니다.
| 유형 | 구성 및 스크립트가 읽는 내용 |
|---|---|
| 숫자 | 기본값과 선택적 상한 및 하한을 설정합니다. 스크립트는 $data.current.limit과 같은 숫자를 직접 읽습니다. |
| 텍스트 | 기본 텍스트를 설정합니다. 스크립트는 $data.current.label과 같은 문자열을 직접 읽습니다. |
| 스위치 | 기본 스위치 상태를 설정합니다. 스크립트는 $data.current.showUnit과 같은 부울 값을 직접 읽습니다. |
| 선택 항목 | 선택적 텍스트와 기본값을 정의합니다. 스크립트는 $data.current.style과 같은 선택된 문자열을 읽습니다. |
| 기본 데이터 | 속도, G 값, 위치 또는 시간과 같은 소스를 선택합니다. 판독 구조는 소스에 따라 다릅니다. |
| OBD 데이터 | 예상 값 유형을 정의하고 입력 바인딩에서 장치 및 차량 매개변수를 선택합니다. 판독값은 { value, unit } 또는 null입니다. |
입력식별자는 1~100자의 영문자와 숫자로 이루어져 있으며, 문자로 시작하며, 동일 계기 내에서 중복될 수 없습니다. 각 계기에는 최대 256개의 입력이 있습니다. 이름은 인터페이스 표시에 사용되고 식별자는 코드에 사용됩니다. 표시 이름을 수정해도 액세스 경로는 변경되지 않지만 식별자를 수정하려면 코드도 동시에 수정해야 합니다.
예를 들어, coolant을 사용하여 냉각수 온도를 나타내고 다양한 장치의 해당 매개변수를 바인딩한 후에도 코드는 여전히 $data.current.coolant을 읽습니다. 편집기는 입력 정의를 기반으로 식 및 유형 힌트를 제공합니다. 숫자 기본값은 상한 및 하한 내에 있어야 하며 선택 항목에는 중복되지 않고 비어 있지 않은 옵션과 유효한 기본 항목이 있어야 합니다. 오류 메시지를 저장할 때 먼저 해당 필드를 수정하세요.
현재 독서
새 기기에는 이미 식별자 speed 및 소스 속도의 기본 데이터 입력이 포함되어 있습니다. 기존 작품은 매개변수 설정에서 이 정의를 확인할 수 있습니다. main()에서 $data.current.speed을 구하고, 이 속도의 값과 단위를 사용할 수 있습니다. 다음 예에서는 상단의 반올림된 값과 하단의 단위를 보여줍니다. 사용 가능한 속도가 없으면 —이 표시됩니다.
올바르게 구성된 기본 속도 입력은 항상 객체를 유지하고, 누락된 경우 value은 null이고, unit는 설정에서 km/h 또는 mph로 유지됩니다. == null 값이 누락되었는지 확인하세요. 속도가 0이면 여전히 0이 표시됩니다. 필드 이름은 입력 식별자에 따라 결정됩니다. vehicleSpeed로 변경되면 코드도 $data.current.vehicleSpeed로 변경되어야 합니다.
function main() {
const speed = $data.current.speed;
return (
<VStack spacing={8}>
<Text fontSize={64} color={$env.foreground}>
{speed?.value == null ? '—' : Math.round(speed.value)}
</Text>
<Text fontSize={16} color={$env.accent}>
{speed?.unit ?? $env.speedUnit}
</Text>
</VStack>
);
}
OBD 매개변수
먼저 OBD 장치를 연결하고 대상 매개변수가 유효한 판독값을 생성하는지 확인합니다. 매개변수 설정로 이동하여 OBD 데이터 입력을 추가합니다. 이름 "냉각수 온도", 식별자 coolant, 예상 유형 숫자 선택. 입력 바인딩로 돌아가 장치 아래에서 냉각수 온도 매개변수를 선택합니다. 다음 예에서는 차량 매개변수 UUID를 스크립트 필드 이름으로 사용하지 않고 $data.current.coolant을 통해 읽습니다.
바인드되고 구성된 읽기에는 항상 value 및 unit이 포함됩니다. 장치가 연결되지 않거나 판독이 만료되거나 쿼리가 실패하면 value는 null이고 unit는 여전히 선택한 장치에 저장된 매개변수 구성을 사용합니다. 단위 없는 매개변수는 unit: null를 사용합니다. 바인드되지 않거나 장치 및 매개변수 구성이 더 이상 존재하지 않는 경우 전체 입력은 null입니다.
value은 숫자이거나 텍스트 매핑된 문자열일 수 있습니다. 예상되는 유형은 프롬프트 편집에 사용됩니다. 바인딩은 다른 유형을 반환하는 인수를 요구할 수 있지만 여전히 바인딩 가능하며 실제 값은 결과로 캐스팅되지 않습니다. 숫자 서식을 지정하기 전에 유형을 확인해야 합니다. 어댑터를 변경하거나 다른 사람의 작업을 가져온 후 해당 입력을 다시 바인딩하여 원본 코드를 유지하세요.
function main() {
const reading = $data.current.coolant;
const value = reading?.value;
const text =
value == null
? '—'
: typeof value === 'number'
? value.toFixed(1)
: value.toString();
return (
<VStack spacing={8}>
<Text fontSize={48} color={$env.foreground}>
{text}
</Text>
<Text fontSize={16} color={$env.accent}>
{reading?.unit ?? ''}
</Text>
</VStack>
);
}
업데이트 및 기록 샘플링
사용자 정의 미터에는 균일하게 고정된 새로 고침 빈도가 없습니다. 현재 입력, 입력 정의 또는 디스플레이 환경이 변경되면 CapDrive는 스크립트를 다시 실행하고 main()을 호출합니다. 동일한 입력은 건너뜁니다. 스크립트는 순차적으로 실행되며 처리 중에 보류 중인 최신 입력만 유지됩니다. 애니메이션은 프레임별로 스크립트를 실행하지 않고 센서나 OBD의 샘플링 빈도를 높이지 않고 그리기 측면에서 독립적으로 수행됩니다.
앱은 현재 여행의 마지막 30초 동안 수집된 데이터를 균일하게 유지하며, 5Hz에서 최대 151개 항목을 샘플링하고 유지합니다. 기존 창을 읽으려면 기기를 엽니다. 창을 잃지 않고 그리기를 일시 중지하거나 실행 중인 인스턴스를 다시 빌드하고, 여행이 끝나면 재설정하고, 여행이나 실행 모드를 전환하세요. 기록 증가 또는 만료 정리는 스크립트를 별도로 트리거하지 않습니다. 시간이 지남에 따라 곡선이 진행되도록 하려면 식별자 elapsed과 녹음 기간인 소스를 사용하여 기본 입력을 정의할 수 있습니다.
speed 및 elapsed 입력을 정의한 후 각 과거 샘플의 elapsed.value을 가로좌표로, speed.value을 세로좌표로 사용할 수 있습니다. 타임스탬프는 밀리초를 사용하고 기록된 기간은 초를 사용합니다. 후속 OBD 값으로 기록을 채우지 않고 누락된 테스트 간격을 유지합니다. 미리보기에서는 시뮬레이션된 입력을 사용하고 대시보드에서는 실제 데이터를 사용합니다.
데이터 유효성
null은 현재 사용 가능한 판독값이 없음을 의미하며 0은 유효한 값입니다. 이 두 가지 상태를 유지함으로써 계측기는 주차, 연결 중단 또는 일시적인 테스트 부재를 실제로 표시할 수 있습니다. value || 0을 통해 누락된 모든 측정값이 0으로 표시되는 것을 방지하기 위해 value == null ? '—' : value을 사용하여 값을 처리할 수 있습니다.
텍스트 매핑은 빈 문자열을 생성하거나 매개변수 구성에 따라 일치하는 항목이 없는 경우 숫자 또는 null을 반환할 수 있습니다. 리터럴을 허용하는 View은 문자열을 표시할 수 있습니다. 계산 및 숫자 서식에 관련된 값은 먼저 유형을 확인해야 합니다.
누락된 측정값 문제를 해결할 때 해당 필드에 해당하는 데이터 소스에 따라 확인하십시오. 위치 지정 상태를 보기 위한 기본 속도; OBD 매개변수를 사용하면 현재 장치, 테스트 판독 결과 및 매개변수 구성을 볼 수 있습니다. 데이터 소스가 정상화되면 계측기에서 선택한 필드와 코드 표현식을 확인합니다.