> 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).

# Eventos de alteração de entrada

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

A transformação de eventos de alteração de entrada registra toda vez que a entrada discreta de um dispositivo muda de estado e essa alteração corresponde a uma `input_change` regra. Cada linha em `processed_common_data.input_change_events` representa uma alteração correspondente: qual entrada foi alterada, qual é o novo valor, quando e onde isso aconteceu e qual regra ela satisfez.

Assim como os eventos de Motorista baseados em regras, os eventos de alteração de entrada são executados em um agendamento fixo, 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 ficar até 15 minutos atrás da alteração de entrada real no dispositivo.

{% hint style="info" %}

* Todos os carimbos de data e hora são armazenados em UTC.
* Somente as alterações 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`, só não é exibida aqui.
  {% endhint %}

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

Cada linha representa uma alteração de entrada detectada que correspondeu a uma `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>integer</td><td>Identificador do dispositivo.</td></tr><tr><td><code>Objeto_id</code></td><td>integer</td><td>Identificador do Objeto (veículo/Ativo) associado ao dispositivo.</td></tr><tr><td><code>rótulo_do_objeto</code></td><td>texto</td><td>Nome legível do Objeto. Já está desnormalizado nesta tabela, então, diferentemente de Viagens, não é necessária nenhuma junção para <code>raw_business_data.objects</code> exibi-lo.</td></tr><tr><td><code>device_time</code></td><td>carimbo de data e hora</td><td>Momento em que a alteração de entrada ocorreu no dispositivo.</td></tr><tr><td><code>rule_id</code></td><td>integer</td><td>Identificador da <code>input_change</code> regra correspondente.</td></tr><tr><td><code>input_number</code></td><td>integer</td><td>Número da entrada, começando em 1, correspondente à posição em <code>discrete_inputs</code> a sequência de bits em <code>raw_telematics_data.additional_data</code>.</td></tr><tr><td><code>input_value</code></td><td>integer</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>integer</td><td>Identificador da zona de geocerca em que o dispositivo estava quando a alteração ocorreu. Nulo se a regra não estiver vinculada a uma zona.</td></tr><tr><td><code>zone_label</code></td><td>texto</td><td>Nome dessa zona. Nulo se a regra não estiver vinculada a uma zona.</td></tr><tr><td><code>latitude</code></td><td>numeric</td><td>Latitude no momento da alteração, em graus.</td></tr><tr><td><code>longitude</code></td><td>numeric</td><td>Longitude no momento da alteração, em graus.</td></tr><tr><td><code>created_at</code></td><td>carimbo de data e hora</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 de entrada recentes ordenadas por dispositivo e horário. A segunda filtra para um número de entrada e valor específicos. A terceira filtra para uma regra específica.

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

```sql
SELECT
    device_id,
    Objeto_label,
    device_time,
    input_number,
    input_value,
    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,
    Objeto_label,
    device_time,
    input_value,
    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,
    Objeto_label,
    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 contra o ú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

As sequências atuais de bits de cada `discrete_inputs` e `discrete_outputs` são comparadas, bit a bit, com o estado registrado na atualização anterior. Somente os bits que de fato mudaram são considerados em seguida.
{% endstep %}

{% step %}

#### Correspondência com regras

Um bit alterado se torna um evento candidato se o número da entrada e o novo valor corresponderem à condição configurada em uma `input_change` regra. Consulte [Acionamento de entrada](https://gitlab.navixy.dev/docs/user-docs/-/tree/main/docs/user-guide/guide/events-and-notifications/inputs-and-outputs/input-triggering.md) para ver como essas regras são configuradas, e a [Referência dos tipos de regra](https://navixy.com/docs/navixy-api/user-api/backend-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 a uma zona pulam essa verificação.
{% endstep %}

{% step %}

#### Atualizando o último estado conhecido

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

## Personalização

A transformação Eventos de alteração de entrada não é personalizada por meio de um fluxo de trabalho do Transformation Builder da forma como Viagens é. As linhas que aparecem aqui refletem diretamente quais `input_change` regras estão configuradas na sua conta: para mudar o que é registrado, adicione, edite ou remova as regras correspondentes em vez de um modelo de transformação. Consulte [Acionamento de entrada](https://gitlab.navixy.dev/docs/user-docs/-/tree/main/docs/user-guide/guide/events-and-notifications/inputs-and-outputs/input-triggering.md) para ver como configurar essas regras.

## Próximas etapas

* [**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 agendamento 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 agendamento 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 os eventos de alteração de entrada.
* [**Acionamento de entrada**](https://gitlab.navixy.dev/docs/user-docs/-/tree/main/docs/user-guide/guide/events-and-notifications/inputs-and-outputs/input-triggering.md): Configure as `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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/analytics/pt-br/iot-query/schema-overview/transformation-layer/common-transformations/input-change-events.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
