> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/analytics/id/iot-query/schema-overview/transformation-layer/common-transformations/rule-based-driver-events.md).

# Peristiwa supir berbasis aturan

Cara tabel peristiwa pengemudi berbasis aturan mengubah aturan peringatan Anda menjadi catatan pelanggaran mengemudi, serta cara menguerinya.

Transformasi peristiwa Supir berbasis aturan mencatat pelanggaran Mengemudi sebagai catatan peristiwa individual, yang dievaluasi terhadap aturan peringatan yang dikonfigurasi pada akun Anda. Setiap baris dalam `data_umum_yang_diproses.peristiwa_supir_berbasis_aturan` mewakili satu pelanggaran: aturan mana yang mendeteksinya, jenis pelanggaran apa itu, kapan dan di mana pelanggaran itu terjadi, dan seberapa cepat kendaraan Bergerak pada saat itu.

Tidak seperti transformasi berbasis pemicu yang digantikannya, yang ini berjalan dengan jadwal tetap. Fungsi penyegaran mengevaluasi ulang jendela data terbaru setiap 15 menit, sehingga baris baru dapat tertinggal hingga 15 menit dari peristiwa di perangkat.

{% hint style="info" %}

* Ambang batas untuk ngebut dan Idle berasal dari aturan peringatan Anda sendiri, bukan dari default seluruh platform. Dua perangkat dapat menghasilkan peristiwa yang berbeda dari Mengemudi yang identik jika aturan yang berbeda berlaku bagi keduanya.
* Peristiwa perangkat keras berulang dengan jenis yang sama dari perangkat yang sama dalam 10 detik digabungkan menjadi satu baris, karena sebuah perangkat dapat mengirim beberapa sinyal untuk satu insiden.
* Peristiwa berbasis akselerometer diabaikan saat kendaraan bergerak di bawah 3 km/jam. Hal ini mencegah getaran akibat pemuatan atau parkir ditandai sebagai pelanggaran.
* Semua cap waktu disimpan dalam UTC.
  {% endhint %}

## Tabel output: processed\_common\_data.rule\_based\_driver\_events

Setiap baris merepresentasikan satu pelanggaran yang terdeteksi. Tabel diindeks berdasarkan `device_id`, `device_time`, `rule_id`, dan `hw_event_id`.

Beberapa kolom merupakan salinan yang didenormalisasi dari nilai yang disimpan di tempat lain, sehingga kueri dasbor yang paling umum sama sekali tidak memerlukan penggabungan: `label Pelacak` berasal dari catatan pelacak, dan `speed_limit`, `event_comment1`, dan `event_comment2` berasal dari aturan yang menghasilkan peristiwa tersebut.

<table><thead><tr><th width="180">Bidang</th><th width="100">Tipe</th><th>Deskripsi</th></tr></thead><tbody><tr><td><code>device_id</code></td><td>integer</td><td>ID perangkat.</td></tr><tr><td><code>object_id</code></td><td>integer</td><td>ID Pelacak (kendaraan atau Aset) yang terkait dengan perangkat pada saat peristiwa.</td></tr><tr><td><code>label Pelacak</code></td><td>text</td><td>Nama pelacak yang dapat dibaca manusia. Sudah didenormalisasi ke dalam tabel ini, jadi tidak perlu penggabungan ke <code>raw_business_data.objects</code> diperlukan.</td></tr><tr><td><code>device_time</code></td><td>timestamp</td><td>Stempel waktu peristiwa, dalam UTC.</td></tr><tr><td><code>rule_id</code></td><td>integer</td><td>Aturan peringatan yang menghasilkan peristiwa. Referensi <code>raw_business_data.rules</code>. Diatur menjadi <code>0</code> untuk <code>rpm_exceeded</code> peristiwa, yang tidak didorong oleh aturan. Lihat <a href="#how-rules-shape-the-output">Cara aturan membentuk output</a>.</td></tr><tr><td><code>event_type</code></td><td>text</td><td>Kategori pelanggaran. Salah satu dari empat nilai. Lihat <a href="#violation-types">Jenis pelanggaran</a> di bawah.</td></tr><tr><td><code>hw_event_id</code></td><td>integer</td><td>Kode peristiwa perangkat keras untuk pelanggaran yang terdeteksi oleh akselerometer dan sensor. <code>0</code> untuk <code>percepatan</code> dan <code>Idle_soft</code>, yang diturunkan, bukan dilaporkan oleh perangkat.</td></tr><tr><td><code>event_comment1</code></td><td>text</td><td>Label teks bebas yang disalin dari aturan. Ditetapkan saat aturan dikonfigurasi, dan berguna untuk mengelompokkan peristiwa berdasarkan kategori Anda sendiri. Null untuk <code>rpm_exceeded</code>.</td></tr><tr><td><code>event_comment2</code></td><td>text</td><td>Label teks bebas kedua yang disalin dari aturan. Null untuk <code>rpm_exceeded</code>.</td></tr><tr><td><code>speed_limit</code></td><td>integer</td><td>Ambang batas yang dikonfigurasi pada aturan, didenormalisasi dari <code>raw_business_data.rules</code>. Untuk <code>percepatan</code> aturan ini adalah batas kecepatan dalam km/jam; untuk <code>Idle_soft</code> aturan ini adalah toleransi idle dalam menit.</td></tr><tr><td><code>speed_kmh</code></td><td>numeric</td><td>Kecepatan kendaraan pada saat peristiwa, dalam km/jam.</td></tr><tr><td><code>duration_sec</code></td><td>integer</td><td>Panjang pelanggaran dalam detik, untuk jenis peristiwa yang berlangsung selama suatu periode waktu, bukan terjadi seketika.</td></tr><tr><td><code>zone_id</code></td><td>integer</td><td>Perimeter tempat peristiwa terjadi, ketika aturan dibatasi pada zona tertentu. Null ketika aturan tidak memiliki zona yang terlampir, dan juga ketika aturan dikonfigurasi untuk memicu di luar zonanya. Lihat <a href="#zone-scoping">Penentuan lingkup zona</a>.</td></tr><tr><td><code>zone_label</code></td><td>text</td><td>Nama Perimeter yang dapat dibaca manusia, didenormalisasi bersama <code>zone_id</code>.</td></tr><tr><td><code>Lintang</code></td><td>presisi ganda</td><td>Lintang dalam derajat.</td></tr><tr><td><code>Bujur</code></td><td>presisi ganda</td><td>Bujur dalam derajat.</td></tr><tr><td><code>extra_value</code></td><td>numeric</td><td>Pengukuran yang bergantung pada konteks, ditetapkan untuk jenis peristiwa yang mencatat pembacaan selain kecepatan. Untuk <code>rpm_exceeded</code> Peristiwa, pembacaan RPM yang memicu peristiwa.</td></tr><tr><td><code>created_at</code></td><td>timestamp</td><td>Saat baris ditulis oleh fungsi penyegaran. Lebih lambat dari <code>device_time</code> hingga sepanjang satu siklus penyegaran.</td></tr></tbody></table>

### Jenis pelanggaran

Tabel di bawah ini mencantumkan setiap jenis pelanggaran yang dicatat transformasi, nilai tepat `event_type` yang disimpan untuknya, dan asal ambang batasnya. Gunakan `event_type` nilai kolom secara langsung saat memfilter atau mengelompokkan kueri.

<table><thead><tr><th width="150">nilai event_type</th><th width="230">Artinya</th><th width="150">hw_event_id</th><th>Ambang batas</th></tr></thead><tbody><tr><td><code>percepatan</code></td><td>Kendaraan melebihi batas kecepatan yang ditetapkan pada aturan</td><td><code>0</code></td><td>Per aturan, dalam km/jam</td></tr><tr><td><code>mengemudi kasar</code></td><td>Akselerometer atau peristiwa perangkat keras yang dilaporkan oleh perangkat: Percepatan kasar, pengereman, belokan, perubahan lajur, dan pelanggaran sabuk pengaman</td><td><code>900</code>, <code>931</code>, <code>987</code>–<code>991</code>, <code>996</code></td><td>Terdeteksi oleh perangkat. Diabaikan di bawah 3 km/jam</td></tr><tr><td><code>Idle_soft</code></td><td>Kendaraan berhenti dengan Pengapian menyala lebih lama daripada yang diizinkan oleh aturan</td><td><code>0</code></td><td>Per aturan, dalam menit</td></tr><tr><td><code>rpm_exceeded</code></td><td>RPM mesin di atas ambang batas platform</td><td><code>9002</code></td><td>Tetap pada 5.000 RPM</td></tr></tbody></table>

{% hint style="warning" %}
Dasbor `event_type` nilai, dan `hw_event_id` penomoran, berbeda dari tabel peristiwa kinerja Supir yang digantikan oleh transformasi ini. Kueri yang ditulis terhadap tabel lama perlu memperbarui nilai filter mereka, bukan hanya nama tabel. Khususnya, pelanggaran sabuk pengaman tidak lagi memiliki jenis peristiwa sendiri: pelanggaran tersebut muncul sebagai `mengemudi kasar` dengan `hw_event_id = 931`.
{% endhint %}

Contoh di bawah menunjukkan pola kueri umum. Kueri dasar mengembalikan pelanggaran terbaru yang diurutkan menurut perangkat dan waktu. Yang kedua menambahkan definisi aturan di balik setiap peristiwa. Yang ketiga memfilter hanya pengemudian kasar yang terdeteksi oleh perangkat keras.

{% tabs %}
{% tab title="Kueri dasar" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    device_id,
    Label pelacak,
    device_time,
    event_type,
    speed_kmh,
    speed_limit,
    lintang,
    Bujur
DARI processed_common_data.rule_based_Supir_events
WHERE device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY device_id, device_time;
```

{% endcode %}
{% endtab %}

{% tab title="Dengan rincian aturan" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    e.device_id,
    e.Pelacak_label,
    e.device_time,
    e.event_type,
    e.speed_kmh,
    e.speed_limit,
    e.event_comment1,
    r.maximum AS rule_threshold
FROM processed_common_data.rule_based_driver_events e
LEFT JOIN raw_business_data.rules r
    ON r.rule_id = e.rule_id
WHERE e.device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY e.device_id, e.device_time;
```

{% endcode %}

Gunakan sebuah `LEFT JOIN` daripada inner join. `rpm_exceeded` peristiwa membawa `rule_id = 0` dan tidak memiliki baris yang cocok di `raw_business_data.rules`, jadi inner join akan menghapusnya tanpa pemberitahuan.
{% endtab %}

{% tab title="Pengemudian kasar saja" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    device_id,
    Label pelacak,
    device_time,
    hw_event_id,
    speed_kmh
DARI processed_common_data.rule_based_Supir_events
DI MANA event_type = 'harsh_Mengemudi'
  AND device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY device_id, device_time;
```

{% endcode %}

Penyaringan pada satu `event_type` nilai menggantikan yang panjang `IN` Daftarkan tabel sebelumnya yang diperlukan, karena semua pelanggaran akselerometer dan perangkat keras kini berbagi satu kategori. Pisahkan dengan `hw_event_id` saat Anda memerlukan manuver individual.
{% endtab %}
{% endtabs %}

## Cara aturan membentuk output

Baris dalam tabel ini tidak dihasilkan oleh logika deteksi seluruh platform. Dengan pengecualian atas `rpm_exceeded`setiap peristiwa merupakan hasil dari aturan peringatan yang dikonfigurasi di akun Anda, dan aturan tersebut menentukan ambang batas sekaligus cakupannya.

{% stepper %}
{% step %}

#### Aturan menetapkan ambang batas

Setiap aturan menyimpan ambang batasnya di `raw_business_data.rules.maximum`: kecepatan dalam km/jam untuk `percepatan` aturan, durasi dalam menit untuk `Idle_soft` aturan. Transformasi menyalin nilai itu ke `speed_limit` pada setiap baris yang ditulisnya, sehingga Anda dapat melihat apa yang menjadi acuan pengukuran kendaraan tanpa kembali menggabungkannya dengan aturan.
{% endstep %}

{% step %}

#### Aturan menetapkan cakupannya

Aturan berlaku untuk Pelacak yang terhubung dengannya melalui `aturan2objek`dan, secara opsional, ke geofence yang terhubung melalui `aturan ke zona`. Perangkat di luar daftar Pelacak sebuah aturan tidak menghasilkan peristiwa untuk aturan itu, bagaimanapun perangkat itu dijalankan.
{% endstep %}

{% step %}

#### Aturan menyediakan labelnya sendiri

`event_comment1` dan `event_comment2` adalah kolom teks bebas yang diisi saat aturan dikonfigurasikan. Kolom ini disalin ke setiap peristiwa sehingga dasbor dapat menampilkan terminologi Anda sendiri tanpa penggabungan.
{% endstep %}

{% step %}

#### Fungsi penyegaran mengevaluasi jendelanya

Setiap 15 menit, `segar_ulang_peristiwa_supir_berdasarkan_aturan` memeriksa kembali jendela data terbaru selama 40 menit dan mencatat setiap peristiwa yang memenuhi syarat. Jendela ini sengaja lebih panjang daripada interval, sehingga catatan yang tiba di platform terlambat masih akan diambil pada proses berikutnya.
{% endstep %}

{% step %}

#### RPM adalah pengecualian

`rpm_exceeded` Peristiwa tidak didorong oleh aturan. Mereka menggunakan ambang batas platform tetap 5.000 RPM, membawa `rule_id = 0`, dan tidak memiliki `event_comment1` atau `event_comment2` nilai.
{% endstep %}
{% endstepper %}

### Penentuan lingkup zona

Ketika suatu aturan memiliki geofence yang dilampirkan melalui `aturan ke zona`, zona-zona tersebut menentukan baik apakah sebuah peristiwa dicatat maupun apakah `zone_id` Diisi. Geometri zona dibaca dari `processed_common_data.zones_geom`, dimaterialisasi dari `raw_business_data.zones`.

<table><thead><tr><th width="260">Konfigurasi aturan</th><th width="200">Peristiwa tercatat</th><th>nilai zone_id</th></tr></thead><tbody><tr><td>Tidak ada zona terlampir</td><td>Di mana-mana</td><td>Null</td></tr><tr><td>Zona terlampir, <code>zone_inverted = false</code></td><td>Hanya di dalam zona</td><td>Zona tempat peristiwa terjadi</td></tr><tr><td>Zona terlampir, <code>zone_inverted = true</code></td><td>Hanya di luar zona</td><td>Null</td></tr></tbody></table>

{% hint style="warning" %}
Sebuah null `zone_id` ambigu dengan sendirinya: artinya bisa jadi aturan tidak memiliki zona, atau aturan dipicu di luar zonanya. Penyaringan dengan `WHERE zone_id IS NULL` akan mencampur kedua kasus menjadi satu. Gabungkan dengan `aturan ke zona` saat Anda perlu membedakannya.
{% endhint %}

<details>

<summary>Konstanta platform tetap</summary>

Nilai-nilai ini sama untuk setiap akun dan tidak dapat dikonfigurasi melalui aturan. Ambang batas yang digerakkan oleh aturan dibahas dalam [Cara aturan membentuk output](#how-rules-shape-the-output).

<table><thead><tr><th width="220">Konstanta</th><th width="160">Nilai</th><th>Deskripsi</th></tr></thead><tbody><tr><td>Kecepatan minimum untuk peristiwa akselerometer</td><td>3 km/jam</td><td>Pelanggaran berbasis akselerometer di bawah kecepatan ini diabaikan, untuk menghindari penandaan getaran saat parkir atau memuat barang.</td></tr><tr><td>Ambang batas RPM</td><td>5.000 RPM</td><td>RPM mesin harus melebihi nilai ini agar sebuah <code>rpm_exceeded</code> peristiwa dicatat.</td></tr><tr><td>Jendela deduplikasi perangkat keras</td><td>10 detik</td><td>Peristiwa perangkat keras berulang dengan jenis yang sama dari perangkat yang sama dalam jendela ini digabung menjadi satu.</td></tr><tr><td>Interval penyegaran</td><td>15 menit</td><td>Seberapa sering fungsi penyegaran dijalankan.</td></tr><tr><td>Jendela lihat balik penyegaran</td><td>40 menit</td><td>Seberapa jauh ke belakang setiap proses memeriksa ulang data, sehingga catatan yang datang terlambat tidak terlewat.</td></tr></tbody></table>

</details>

## Menyesuaikan transformasi

Untuk `percepatan` dan `Idle_soft`, penyesuaian sama sekali tidak memerlukan alur kerja. Kedua ambang batas dibaca dari aturan peringatan, sehingga mengubah aturan mengubah apa yang dicatat transformasi mulai dari penyegaran berikutnya. Hal yang sama berlaku untuk cakupan: sesuaikan objek atau perimeter yang dilampirkan pada aturan untuk mengubah kendaraan dan area mana yang menghasilkan peristiwa.

{% hint style="warning" %}
Fungsi penyegaran yang mengisi `data_umum_yang_diproses.peristiwa_supir_berbasis_aturan` tidak dapat diedit secara langsung. Ambang batas yang tidak digerakkan oleh aturan, seperti ambang minimum akselerometer 3 km/jam atau batas 5.000 RPM, hanya dapat diubah dengan membangun alur kerja paralel di Pembuat transformasi dan menjadwalkannya sebagai transformasi terpisah di `processed_custom_data`. Hal itu tidak mengubah tabel yang dijelaskan di halaman ini.
{% endhint %}

Jika skenario operasional Anda memerlukan ambang batas tetap yang berbeda, hubungi **<iotquery@navixy.com>** untuk meminta templat alur kerja yang sesuai. Setelah Anda memilikinya, muat ke dalam [Pembuat transformasi](/docs/analytics/id/iot-query/schema-overview/transformation-layer/transformation-builder.md), sesuaikan nilai yang relevan, dan jadwalkan alur kerja yang telah dimodifikasi sebagai transformasi kustom.

## Langkah selanjutnya

* [**Transformasi umum**](/docs/analytics/id/iot-query/schema-overview/transformation-layer/common-transformations.md): Kembali ke indeks transformasi.
* [**Perjalanan**](/docs/analytics/id/iot-query/schema-overview/transformation-layer/common-transformations/trips.md): Transformasi saudara yang menghasilkan catatan perjalanan kendaraan dari data telematika mentah.
* [**Agregasi data sensor**](/docs/analytics/id/iot-query/schema-overview/transformation-layer/common-transformations/sensor-data-aggregation.md): Transformasi saudara yang mengagregasikan pembacaan sensor ke dalam kelompok waktu.
* [**Lapisan data mentah**](/docs/analytics/id/iot-query/schema-overview/bronze-layer.md): Jelajahi `tracking_data_core`, `states`, dan `Masukan`, tabel sumber yang menyuplai peristiwa pengemudi berbasis aturan.
* [**Pembuat transformasi**](/docs/analytics/id/iot-query/schema-overview/transformation-layer/transformation-builder.md): Pelajari cara membuat versi kustom dari transformasi ini.
* [**Dasbor Skor mengemudi**](https://github.com/Navixy/navixy-iot-query-dashboard/blob/main/schemas/12-driver-performance-dashboard.md): Menggunakan peristiwa pengemudi berbasis aturan untuk penilaian keselamatan mengemudi di seluruh armada.
* [**Dasbor dampak perilaku**](https://github.com/Navixy/navixy-iot-query-dashboard/blob/main/schemas/13-behavior-impact-dashboard.md): Menggunakan peristiwa pengemudi berbasis aturan untuk melacak tren perilaku dari waktu ke waktu.
* [**Dasbor Keselamatan & Keamanan**](https://github.com/Navixy/navixy-iot-query-dashboard/blob/main/schemas/10-premium-safety-security-dashboard.md): Menggunakan peristiwa pengemudi berbasis aturan bersama data perimeter dan perjalanan.
* [**Dasbor leasing**](https://github.com/Navixy/navixy-iot-query-dashboard/blob/main/schemas/06-leasing-dashboard.md): Menggunakan kueri Pengemudian kasar dan kueri deteksi mesin diam dari peristiwa Supir berbasis aturan.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://navixy.com/docs/analytics/id/iot-query/schema-overview/transformation-layer/common-transformations/rule-based-driver-events.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
