$data · Dữ liệu lái xe
$data cung cấp dữ liệu theo mã định danh đầu vào của thiết bị này: current là đầu vào hiện tại và history là mẫu đầu vào trong 30 giây cuối cùng của chuyến đi hiện tại.
dữ liệu có thể đọc được
Nhấp vào tên đồng hồ ở đầu trình chỉnh sửa để mở Cài đặt đồng hồ → Liên kết đầu vào. Chuyển sang Cấu hình tham số để xác định tên, mã nhận dạng và loại đầu vào; trả về ràng buộc đầu vào và điền vào các giá trị gốc hoặc chọn thông số xe của riêng bạn cho đầu vào OBD. Dữ liệu cơ bản được ứng dụng cung cấp tự động.
Tập lệnh truy cập đầu vào thông qua $data.current.<identifier>. Ví dụ: đầu vào vận tốc cơ bản speed sử dụng $data.current.speed và đầu vào OBD coolant sử dụng $data.current.coolant. Tên trường độc lập với thông số xe UUID và tên thiết bị. Việc thay đổi thông số xe chỉ cần đóng lại; sửa đổi mã định danh đầu vào yêu cầu sửa đổi mã.
| kiểu | Cấu hình và nội dung tập lệnh đọc |
|---|---|
| Số | Đặt giá trị mặc định và giới hạn trên và dưới tùy chọn; tập lệnh đọc số trực tiếp, chẳng hạn như $data.current.limit. |
| Văn bản | Đặt văn bản mặc định; tập lệnh đọc chuỗi trực tiếp, chẳng hạn như $data.current.label. |
| Công tắc | Đặt trạng thái chuyển đổi mặc định; tập lệnh đọc trực tiếp giá trị Boolean, chẳng hạn như $data.current.showUnit. |
| Lựa chọn | Xác định văn bản tùy chọn và mặc định; tập lệnh đọc chuỗi đã chọn, chẳng hạn như $data.current.style. |
| Dữ liệu cơ bản | Chọn một nguồn như vận tốc, giá trị G, vị trí hoặc thời gian; cấu trúc đọc phụ thuộc vào nguồn. |
| Dữ liệu OBD | Xác định loại giá trị mong đợi và chọn thông số thiết bị và phương tiện trong liên kết đầu vào; kết quả là { value, unit } hoặc null. |
Bảng trường bên dưới sử dụng các mã định danh mẫu và không có nghĩa là mọi máy đo đều tự động có các trường này. Giao diện thực tế và lời nhắc loại được tạo dựa trên định nghĩa đầu vào của công cụ hiện tại.
Cấu trúc số đo và giá trị bị thiếu
Giá trị đại lượng cơ bản và số đọc OBD thường là { value, unit }; dữ liệu cơ bản như vị trí, giá trị G, thái độ, v.v. có các thành phần riêng và trạng thái ghi là giá trị Boolean. Các giá trị, văn bản, công tắc và lựa chọn trả về trực tiếp các giá trị được định cấu hình của chúng.
Khi OBD không bị ràng buộc hoặc cấu hình không tồn tại, toàn bộ đầu vào là null; khi liên kết tồn tại nhưng tạm thời bị thiếu, { value: null, unit } được giữ lại. Sử dụng reading?.value == null để kiểm tra các bài kiểm tra bị thiếu, giữ lại 0 hợp lệ. value của OBD có thể là một chữ ánh xạ; khai báo kiểu không thực hiện chuyển đổi thời gian chạy và kiểu này phải được kiểm tra trước khi gọi các phương thức số.
Cửa sổ lịch sử và đơn vị thời gian
$data.history là dữ liệu được chọn của Chuyến đi hiện tại kéo dài 30 giây, được sắp xếp từ cũ nhất đến mới nhất. Máy chủ lưu trữ tất cả dữ liệu được thu thập một cách thống nhất, sau đó tập hợp dữ liệu đó khi cần theo các thông số đầu vào của thiết bị; cửa sổ hiện có có thể được đọc bằng cách mở công cụ. Tạm dừng vẽ, bỏ qua hiển thị hoặc tạo lại phiên bản đang chạy sẽ không làm mất cửa sổ. Đặt lại khi kết thúc hoặc chuyển đổi chuyến đi hoặc chuyển đổi chế độ vận hành; cửa sổ lịch sử trống khi không có chuyến đi nào hoạt động.
Lịch sử được lấy mẫu ở tần số tối đa là 5 Hz, với các mẫu liền kề cách nhau ít nhất 200 ms và tối đa 151 mục được giữ lại. Số lần lấy mẫu lặp đi lặp lại và số lần vẽ lại chỉ do thay đổi môi trường hiển thị sẽ không làm tăng số lượng mẫu; sau khi dữ liệu dừng lại, máy chủ vẫn sẽ xóa các mẫu đã hết hạn trong thời gian đơn điệu mà không thực thi tập lệnh. Giới hạn trên này không giới hạn current đọc thông tin đầu vào mới nhất này cũng như không bắt đầu các truy vấn OBD bổ sung.
Mỗi mẫu có cấu trúc trường phù hợp với current và có thể chứa các bài kiểm tra bị thiếu. Sửa đổi các định nghĩa hoặc ràng buộc đầu vào sẽ tập hợp lại cửa sổ; các tham số cố định như giá trị, công tắc, văn bản và tùy chọn sử dụng cấu hình hiện tại. Cập nhật dữ liệu chỉ so sánh nội dung thực tế của $data.current để quyết định có thực thi JS hay không. Giá trị, đơn vị và trường con nhóm đều liên quan đến việc so sánh; các phản hồi mới có cùng giá trị, tốc độ tăng trưởng hoặc cắt bớt trong lịch sử, thời gian thu thập nội bộ và các cập nhật nguồn không được chọn sẽ không kích hoạt thực thi riêng lẻ. Máy chủ tiếp tục duy trì cửa sổ hoàn chỉnh và lần tiếp theo current thay đổi, tập lệnh sẽ nhận được lịch sử mới nhất. Dấu thời gian hoặc khoảng thời gian được ghi được chọn rõ ràng thuộc về current và những thay đổi về giá trị sẽ vẫn kích hoạt quá trình thực thi. OBD Số đọc vẫn giữ nguyên giá trị, đơn vị và trạng thái đo bị thiếu tại thời điểm lấy mẫu và sẽ không được lấp đầy bằng các số đọc tiếp theo; tốc độ cơ bản sẽ được chuyển đổi theo đơn vị hiển thị hiện tại. elapsed.value là số giây đã trôi qua trong chuyến đi hiện tại, timestamp.value là dấu thời gian tính bằng mili giây và movingTime.value là thời gian di chuyển tính bằng giây. Sử dụng thời gian thực tế khi vẽ đường cong thời gian và giữ lại các điểm dừng do thiếu số đo.
Ví dụ: Hiển thị đồng thời thông số tốc độ và OBD
Xác định hai đầu vào: đầu vào vận tốc cơ sở có mã định danh speed và đầu vào OBD có mã định danh coolant. Liên kết các thông số xe gốc với cái sau. Ví dụ sau hiển thị số đọc và đơn vị theo mã định danh đầu vào tương ứng của chúng; không cần sửa đổi mã ví dụ khi đóng lại thiết bị.
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>
);
}
Cập nhật và nguồn dữ liệu
Mỗi lần thực thi tập lệnh đều sử dụng đầu vào mới nhất; tần số thực tế được xác định bởi nguồn dữ liệu, những thay đổi đầu vào và thời gian xử lý. current và history trả lại các bản sao của dữ liệu, việc sửa đổi chúng sẽ không làm thay đổi chỉ số cảm biến hoặc cấu hình xe.
Các trường như tốc độ cơ bản sẽ áp dụng cài đặt thay thế dữ liệu chuyến đi hợp lệ. Việc đọc tham số OBD trực tiếp sử dụng đơn vị và số đọc của chính tham số đó. Khoảng thời gian truy vấn, phản hồi của xe và các yêu cầu khác sẽ ảnh hưởng đến bản cập nhật thực tế. Tính khả dụng của dữ liệu cũng bị ảnh hưởng bởi vị trí, trạng thái nhận dạng và khả năng kết nối thiết bị; bản xem trước của trình chỉnh sửa sử dụng đầu vào mô phỏng riêng biệt.
Cánh đồng
current{ [identifier: string]: number | string | boolean | object | null }Dữ liệu đã chọn mới nhất
history{ [identifier: string]: number | string | boolean | object | null }[]Dữ liệu đã chọn trong 30 giây gần nhất, từ cũ đến mới
current.speed{ value: number | null; unit: "km/h" | "mph" }Tốc độ
current.gForce{ longitudinal: number | null; lateral: number | null; combined: number | null; unit: string }Lực G
current.heading{ direction: number | null; accuracy: number | null; unit: string }Hướng đầu xe
current.location{ latitude: number | null; longitude: number | null; unit: string }Vị trí
current.vehicleAttitude{ roll: number | null; pitch: number | null; unit: string }Tư thế xe
current.locationAccuracy{ value: number | null; unit: "m" }Độ chính xác vị trí
current.altitude{ value: number | null; unit: "m" }Độ cao
current.distance{ value: number | null; unit: "m" }Quãng đường
current.movingTime{ value: number | null; unit: "s" }Thời gian di chuyển
current.timestamp{ value: number | null; unit: "ms" }Thời điểm đo
current.elapsed{ value: number | null; unit: "s" }Thời gian ghi
current.recordingbooleanĐang ghi
current.coolant{ value: number | string | null; unit: string | null } | nullDữ liệu OBD
current.limitnumberSố
current.labelstringVăn bản
current.showUnitbooleanCông tắc
current.stylestringLựa chọn