> 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/pt-br/iot-query/schema-overview/transformation-layer/common-transformations/input-change-events.md).

# Input change events

Como a tabela Input change events detecta alterações discretas de entrada e como consultá-la.

A transformação Input change events registra toda vez que a entrada discreta de um dispositivo muda de estado e essa mudança corresponde a uma `input_change` regra. Cada linha em `processed_common_data.input_change_events` representa uma mudança correspondente: qual entrada mudou, seu novo valor, quando e onde aconteceu, e qual regra ela satisfez.

Assim como os eventos de Motorista baseados em regra, Input change events é executado em uma programação fixa, em vez de continuamente. Uma função de atualização reavalia uma janela de dados brutos a cada 15 minutos, então uma nova linha pode atrasar até 15 minutos em relação à mudança real da entrada no dispositivo.

{% hint style="info" %}

* Todos os carimbos de data e hora são armazenados em UTC.
* Somente as mudanças que correspondem a uma `input_change` regra configurada geram uma linha. A atividade de entrada discreta que não corresponde a nenhuma regra ainda está disponível em `raw_telematics_data.additional_data`, apenas não exposta aqui.
  {% endhint %}

## Tabela de saída: processed\_common\_data.input\_change\_events

Cada linha representa uma alteração de entrada detectada que correspondeu a um `input_change` regra. A tabela é indexada por `device_id`, `device_time`, e `rule_id`.

<table><thead><tr><th width="180">Campo</th><th width="100">Tipo</th><th>Descrição</th></tr></thead><tbody><tr><td><code>device_id</code></td><td>inteiro</td><td>Identificador do dispositivo.</td></tr><tr><td><code>object_id</code></td><td>inteiro</td><td>Identificador do Objeto (veículo/Ativo) associado ao dispositivo.</td></tr><tr><td><code>object_label</code></td><td>texto</td><td>Nome do Objeto legível para humanos. Já desnormalizado nesta tabela, portanto, ao contrário de Viagens, sem junção com <code>raw_business_data.objects</code> é necessário para exibi-lo.</td></tr><tr><td><code>device_time</code></td><td>timestamp</td><td>Momento em que a alteração da entrada ocorreu no dispositivo.</td></tr><tr><td><code>rule_id</code></td><td>inteiro</td><td>Identificador da <code>input_change</code> regra correspondente.</td></tr><tr><td><code>input_number</code></td><td>inteiro</td><td>Número da entrada, baseado em 1, correspondente à posição em <code>discrete_inputs</code> cadeia de bits em <code>raw_telematics_data.additional_data</code>.</td></tr><tr><td><code>input_value</code></td><td>inteiro</td><td>Novo valor da entrada após a alteração: <code>0</code> ou <code>1</code>.</td></tr><tr><td><code>event_type</code></td><td>texto</td><td>Sempre <code>input_change</code>.</td></tr><tr><td><code>event_comment1</code></td><td>texto</td><td>Primeiro comentário configurado na regra correspondente.</td></tr><tr><td><code>event_comment2</code></td><td>texto</td><td>Segundo comentário configurado na regra correspondente.</td></tr><tr><td><code>zone_id</code></td><td>inteiro</td><td>Identificador da zona de Geocerca em que o dispositivo estava quando a alteração ocorreu. Null se a regra não estiver vinculada à zona.</td></tr><tr><td><code>zone_label</code></td><td>texto</td><td>Nome dessa zona. Null se a regra não estiver vinculada à zona.</td></tr><tr><td><code>latitude</code></td><td>numérico</td><td>Latitude no momento da alteração, em graus.</td></tr><tr><td><code>longitude</code></td><td>numérico</td><td>Longitude no momento da alteração, em graus.</td></tr><tr><td><code>created_at</code></td><td>timestamp</td><td>Quando a linha foi gravada pela atualização agendada.</td></tr></tbody></table>

Os exemplos abaixo mostram padrões comuns de consulta. A consulta básica retorna alterações recentes de entrada ordenadas por dispositivo e hora. A segunda filtra um número e um valor específicos de entrada. A terceira filtra uma regra específica.

{% tabs %}
{% tab title="Consulta básica" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    device_id,
    rótulo_do_objeto,
    device_time,
    input_number,
    valor de entrada,
    zone_label
FROM processed_common_data.input_change_events
WHERE device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY device_id, device_time;
```

{% endcode %}
{% endtab %}

{% tab title="Filtrar por entrada" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    device_id,
    rótulo_do_objeto,
    device_time,
    valor de entrada,
    zone_label
FROM processed_common_data.input_change_events
WHERE input_number = 3
  AND input_value = 1
  AND device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY device_id, device_time;
```

{% endcode %}
{% endtab %}

{% tab title="Filtrar por regra" %}
{% code overflow="wrap" expandable="true" %}

```sql
SELECT
    device_id,
    rótulo_do_objeto,
    device_time,
    input_number,
    input_value
FROM processed_common_data.input_change_events
WHERE rule_id = 12345
  AND device_time >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY device_id, device_time;
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Como as alterações de entrada são detectadas

Uma linha nesta tabela não é gravada no instante em que uma entrada muda no dispositivo. Ela é gravada na próxima atualização agendada, que reavalia uma janela de dados brutos em relação ao último estado conhecido de cada dispositivo.

{% stepper %}
{% step %}

#### Atualização agendada

A cada 15 minutos, a função de atualização lê a janela mais recente de linhas de `raw_telematics_data.additional_data`.
{% endstep %}

{% step %}

#### Comparando com o último estado conhecido

O estado atual de cada dispositivo `discrete_inputs` e `discrete_outputs` strings de bits são comparadas, bit a bit, com o estado registrado na atualização anterior. Somente os bits que realmente alternaram são considerados adiante.
{% endstep %}

{% step %}

#### Correspondência com regras

Um bit alternado torna-se um evento candidato se o número de entrada e o novo valor corresponderem à condição configurada em uma `input_change` regra. Veja [Disparo de entradas](/docs/user/pt-br/guide/events-and-notifications/inputs-and-outputs/input-triggering.md) para ver como essas regras são configuradas, e o [Referência de tipos de regras](https://navixy.com/docs/navixy-api/user-api/resources/tracking/tracker/rules/rule_types) para a lista completa de tipos de regra.
{% endstep %}

{% step %}

#### Verificação de zona

Se a regra correspondente estiver vinculada a uma Geocerca, a atualização confirma que o dispositivo estava dentro dessa zona no momento da alteração antes de gravar uma linha. Regras que não estão vinculadas à zona pulam essa verificação.
{% endstep %}

{% step %}

#### Atualizando o último estado conhecido

Quando uma atualização é concluída, o estado de bit mais recente de cada dispositivo é registrado para comparação na próxima execução.
{% endstep %}
{% endstepper %}

## Personalização

Os eventos de alteração de entrada não são personalizados por meio de um fluxo de trabalho do Construtor de Transformações da mesma forma que Viagens. As linhas que aparecem aqui refletem diretamente quaisquer `input_change` regras estão configuradas na sua conta: para alterar o que é registrado, adicione, edite ou remova as regras correspondentes em vez de um modelo de transformação. Veja [Disparo de entradas](/docs/user/pt-br/guide/events-and-notifications/inputs-and-outputs/input-triggering.md) como configurar estas regras.

## Próximos passos

* [**Transformações comuns**](/docs/analytics/pt-br/iot-query/schema-overview/transformation-layer/common-transformations.md): Voltar ao índice de transformações.
* [**Viagens**](/docs/analytics/pt-br/iot-query/schema-overview/transformation-layer/common-transformations/trips.md): Uma transformação irmã que também é executada em um cronograma sobre dados telemáticos brutos.
* [**Eventos de Motorista baseados em regras**](/docs/analytics/pt-br/iot-query/schema-overview/transformation-layer/common-transformations/rule-based-driver-events.md): Uma transformação irmã que registra violações de Condução no mesmo cronograma de 15 minutos.
* [**Camada de dados brutos**](/docs/analytics/pt-br/iot-query/schema-overview/bronze-layer.md): Explorar `additional_data`, a tabela de origem que alimenta eventos de alteração de entrada.
* [**Disparo de entradas**](/docs/user/pt-br/guide/events-and-notifications/inputs-and-outputs/input-triggering.md): Configure a `input_change` regras que determinam quais alterações de entrada são registradas aqui.


---

# 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/pt-br/iot-query/schema-overview/transformation-layer/common-transformations/input-change-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.
