> 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/user/pt-br/guide/account/iot-logic/flow-management/flow-configuration-example.md).

# Exemplo de configuração de fluxo

Um exemplo passo a passo mostrando como criar um fluxo do IoT Logic que coleta telemetria do dispositivo, calcula métricas derivadas e encaminha dados enriquecidos externamente.

Este exemplo demonstra como configurar um fluxo que coleta dados de dispositivos IoT, realiza cálculos para derivar métricas relevantes para o negócio e encaminha os dados enriquecidos para um sistema externo. O exemplo usa um padrão de fluxo linear que pode ser adaptado a vários casos de uso do setor.

## Cenário de negócios

Neste cenário, uma organização implantou dispositivos GPS em seus ativos e precisa processar dados desses dispositivos para análise de negócios. A organização recebe os seguintes parâmetros diretamente de seus dispositivos de rastreamento:

* `velocidade`: Velocidade do veículo em quilômetros por hora
* `temperature`: Temperatura ambiente em Celsius
* `odômetro`: Distância percorrida em quilômetros
* `ignição`: Status de ignição do motor (1 = ligado, 0 = desligado)
* `nível de combustível`: Medição atual do nível de combustível
* `pressão_psi`: Leitura de pressão em PSI
* `tensão`: Tensão da bateria em volts
* `acelerador`: Posição do pedal do acelerador no barramento CAN (0-255)
* `nível_de_Combustível_1`: Primeira medição do nível do tanque de combustível
* `nível_de_Combustível_2`: Segunda medição do nível do tanque de combustível

A organização precisa:

1. Colete dados brutos de telemetria dos dispositivos para manter um registro completo das operações do ativo
2. Converta as unidades de medida para corresponder ao formato padrão de relatório delas (unidades imperiais) para manter a consistência com os sistemas de negócios existentes
3. Calcule métricas baseadas em tempo que indiquem padrões de uso para otimizar a utilização do ativo e os cronogramas de manutenção
4. Crie métricas derivadas para gerar insights operacionais não fornecidos diretamente pelo hardware
5. Encaminhe os dados enriquecidos para um sistema externo de análise para integração com plataformas de business intelligence
6. Envie os dados brutos inalterados para a Navixy para monitoramento

Este fluxo transforma os dados brutos do dispositivo em um formato que oferece suporte direto à tomada de decisão de negócios, mantendo a integridade das medições originais.

## Etapas de configuração do fluxo

Siga estas etapas para criar um fluxo abrangente de transformação e encaminhamento de dados:

{% stepper %}
{% step %}

### Criar um novo fluxo

Abra o IoT Logic. Na página inicial, clique **Criar fluxo**. Insira *Processamento de telemetria do Ativo* como nome do fluxo, adicione uma descrição (*"Coleta dados do dispositivo, calcula métricas derivadas e encaminha para a plataforma de análise."*), e verifique se a **Fluxo ativado** está ativada. Clique **Confirmar** para abrir a tela.
{% endstep %}

{% step %}

### Configurar a Fonte de Dados

1. Arraste um **Fonte de Dados** nó do menu à esquerda para a área de trabalho
2. Clique duas vezes no nó para abrir o painel de configuração dele
3. Em **Nome do nó** tipo *Rastreadores de Ativo*
4. Selecione os dispositivos para incluir neste fluxo na lista filtrada

* Para este exemplo, selecione pelo menos dois dispositivos com capacidades semelhantes

5. Salvar **Aplicar** para salvar a configuração do nó
   {% endstep %}

{% step %}

### Configurar transformações básicas de dados

1. Arraste um **Iniciar Atributo** nó do menu à esquerda para a área de trabalho
2. Conecte o **Fonte de Dados** nó a este **Iniciar Atributo** nó
3. Dê dois cliques no nó para abrir sua configuração
4. Em **Nome do nó** tipo *Conversões de unidades*
5. Crie os seguintes atributos para conversão de unidades (todos os exemplos usam sintaxe curta, referindo-se aos valores mais recentes dos atributos sem verificação de validade):
   1. Adicione um novo atributo para conversão de velocidade (km/h para mph): 1. Nome do atributo: *speed\_mph* 2. Valor: `speed/1.609`
   2. Adicione um novo atributo para conversão de temperatura (Celsius para Fahrenheit): 1. Nome do atributo: *temperature\_F* 2. Valor: `temperature*1.8 + 32`
   3. Adicione um novo atributo para conversão de distância (quilômetros para milhas): 1. Nome do atributo: *distance\_miles* 2. Valor: `Odômetro/1.609`
   4. Adicione um novo atributo para conversão de pressão (PSI para Bar): 1. Nome do atributo: *pressure\_bar* 2. Valor: `pressure_psi * 0.06895`
6. Salvar **Aplicar** para salvar a configuração do nó

{% hint style="info" %}
Para explicações sobre os cálculos introduzidos nesta etapa, consulte [Conversões básicas de unidades](#basic-unit-conversions)
{% endhint %}
{% endstep %}

{% step %}

### Criar métricas calculadas avançadas

1. Arraste outro **Iniciar Atributo** nó do menu à esquerda para a área de trabalho
2. Conecte o primeiro **Iniciar Atributo** nó a este novo
3. Clique duas vezes no nó para abrir sua configuração
4. Em **Nome do nó** tipo *Cálculos avançados*
5. Crie os seguintes atributos para métricas avançadas:
   1. Adicione um atributo para detecção de variação de temperatura:
      1. Nome do atributo: *temperature\_change*
      2. Valor: `value('temperature', 0, 'valid') - value('temperature', 1, 'valid')`
      3. `genTime('temperature', 0, 'valid')`
   2. Adicione um atributo para encontrar o tempo decorrido entre as duas últimas leituras:
      1. Nome do atributo: *time\_between\_readings\_ms*
      2. Valor: `srvTime('speed', 0, 'valid') - srvTime('speed', 1, 'valid')`
      3. Tempo de geração: `genTime('speed', 0, 'valid')`
   3. Adicione um atributo para arredondar a temperatura para o inteiro mais próximo:
      1. Nome do atributo: *temperature\_rounded*
      2. Valor: `math:round(value('temperature', 0, 'valid'))`
   4. Adicionar um atributo para cálculo de valor padronizado (normalizando o nível de Combustível para 0-100%):
      1. Nome do atributo: *nivel\_de\_combustivel\_percentual*
      2. Valor: `(value('Combustível_level', 0, 'valid') - 0) / (100 - 0) * 100`
   5. Adicione um atributo para o cálculo da porcentagem de carga da bateria:
      1. Nome do atributo: *percentual\_da\_bateria*
      2. Valor: `(value('voltage', 0, 'valid') - 11) / (14 - 11) * 100`
   6. Adicionar um atributo para o cálculo da posição do acelerador:
      1. Nome do atributo: *porcentagem do acelerador*
      2. Valor: `value('throttle', 0, 'valid') / 255 * 100`
   7. Adicione um atributo para o nível médio de Combustível de vários sensores:
      1. Nome do atributo: *nível\_médio\_de\_Combustível*
      2. Valor: `(value('combustível_level_1', 0, 'valid') + value('combustível_level_2', 0, 'valid')) / 2`
6. Salvar **Aplicar** para salvar a configuração do nó

{% hint style="info" %}
Para explicações sobre os cálculos introduzidos nesta etapa, consulte [Cálculos avançados de métricas](#advanced-metrics-calculations).
{% endhint %}
{% endstep %}

{% step %}

### Configure o Ponto de Extremidade de Saída

1. Arraste um **Ponto de Extremidade de Saída** nó do menu à esquerda para a área de trabalho
2. Conecte o segundo **Iniciar Atributo** nó a este **Ponto de Extremidade de Saída** nó
3. Clique no Nó para abrir sua configuração
4. Configure as seguintes configurações:
   1. **Tipo de endpoint**: *Ponto de extremidade MQTT*
   2. **Nome do endpoint**: *Plataforma de análises*
   3. **Protocolo**: padrão *Navixy Generic Protocol (JSON)*
   4. **IP/Domínio**: informe o endereço do sistema de destino (por exemplo, "*analytics.example.com*")
   5. **Porta**: *8883* (padrão para MQTT, você pode deixá-lo em branco)
   6. **Ativar SSL**: *ativar*
   7. **Versão MQTT**: *5.0*
   8. **ID do cliente MQTT**: *ativo-telemetry-client*
   9. **Tópico**: *telemetry/assets/raw*
   10. **QoS**: *1*
   11. **Autenticação MQTT**: *Sim* (se exigido pelo seu sistema de destino)
   12. **Login e senha MQTT**: Insira as credenciais, se aplicável
5. Salvar **Criar** para salvar a configuração do nó
   {% endstep %}

{% step %}

### Adicionar o Ponto de Extremidade de Saída padrão

1. Arraste um **Ponto de Extremidade de Saída** nó do menu à esquerda para a área de trabalho
2. Em **Modo** selecione **Ponto de extremidade padrão**
3. Salvar **para salvar o comando. Clique em** para aplicar a configuração do nó
4. Conecte o *Rastreadores de Ativo* (**Fonte de Dados**) nó a ele

Isso garante que os dados brutos sejam enviados para a Navixy diretamente dos dispositivos, sem quaisquer transformações e enriquecimentos.
{% endstep %}

{% step %}

### Salve e teste o fluxo

Sua configuração final ficará assim:

<figure><img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-76943e439a5bab01e5e25fe9f9199d46c99ade30%2Fiot-logic-flow-configuration-example.png?alt=media" alt="Complete flow configuration with all nodes connected in IoT Logic workspace"><figcaption></figcaption></figure>

Enviar **Salvar fluxo** botão no **Nós** painel para armazenar a configuração do seu fluxo.
{% endstep %}
{% endstepper %}

{% hint style="success" %}
Use [Analisador de dados (DSA)](/docs/user/pt-br/guide/account/iot-logic/data-stream-analyzer.md) para monitorar os dados recebidos e verificar:

* Os dispositivos estão enviando dados para o fluxo
* Os cálculos estão funcionando como esperado
* Os dados estão sendo encaminhados para o destino. Por exemplo, vamos verificar se as conversões de velocidade estão sendo calculadas corretamente em um caminhão. Para fazer isso no DSA, selecione o **Volvo** dispositivo e atributos **velocidade** Webhook **speed\_mph**:\ <img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-dd91833c4e91cbf04798d44c3604cd4ef38c0937%2Fimage-20250407-204530.png?alt=media" alt="Speed attributes for one device in Data Stream Analyzer" data-size="original">

Tudo certo! Os dados são recebidos e convertidos com sucesso.
{% endhint %}

## Explicação das transformações de dados

Vamos examinar os principais cálculos usados neste fluxo.

### Conversões básicas de unidades

O primeiro **nó Iniciar Atributo** realiza conversões de unidades simples:

* **Velocidade**: Converte km/h em mph dividindo por 1,609
* **Temperatura**: Converte Celsius em Fahrenheit usando a fórmula °F = °C × 1,8 + 32
* **Distância**: Converte quilômetros em milhas dividindo por 1,609
* **Pressão**: Converte PSI em Bar multiplicando por 0,06895, tornando-o compatível com padrões internacionais de medição de pressão

Essas conversões garantem consistência com formatos padrão de relatórios e tornam os dados imediatamente utilizáveis para análise. As conversões de unidades são particularmente valiosas para organizações multinacionais que operam em regiões com padrões de medição diferentes.

### Cálculos avançados de métricas

O segundo **nó Iniciar Atributo** realiza cálculos mais complexos:

* **Detecção de variação de temperatura**: Calcula a diferença entre as leituras atuais e anteriores de temperatura para identificar mudanças bruscas. Isso ajuda a detectar problemas de equipamento, como falhas de refrigeração em veículos de transporte ou problemas de HVAC em instalações. Por exemplo, um aumento repentino de 5°C em um contêiner refrigerado pode indicar uma falha no sistema de resfriamento que exige atenção imediata.
  * **Tempo de geração**: Ao usar `genTime('temperature', 0, 'valid')` é crucial aqui porque preserva o timestamp exato em que a leitura de temperatura foi gerada pelo dispositivo, garantindo uma análise precisa das mudanças de temperatura baseada no tempo.
  * **Tempo do servidor**: O valor padrão `now()` captura automaticamente quando o servidor recebeu os dados. Esse timestamp não precisa ser modificado; portanto, deixe este campo vazio durante a configuração.
* **Tempo entre leituras**: Mede o intervalo entre transmissões consecutivas de dados comparando timestamps do servidor. Esse cálculo ajuda a identificar problemas de comunicação ou validar se os dispositivos estão reportando nas frequências esperadas. Intervalos irregulares podem indicar problemas de conectividade, enquanto atrasos consistentes podem sugerir congestionamento de rede ou problemas de configuração do dispositivo.
* **Arredondamento de valores**: Aplica arredondamento matemático às leituras de temperatura, reduzindo a precisão decimal para números inteiros. Isso simplifica a visualização de dados e os relatórios, ao mesmo tempo em que reduz os requisitos de armazenamento para dados históricos. Valores arredondados são especialmente úteis para exibições em painéis e alertas baseados em limite, quando a precisão decimal não é necessária.
  * **Tempo de geração**: Ao especificar `genTime('speed', 0, 'valid')` conecta esses metadados diretamente ao timestamp da leitura original, tornando possível analisar tanto o intervalo de tempo quanto o momento em que ela ocorreu.
  * **Tempo do servidor**: O valor padrão `now()` captura automaticamente quando o servidor recebeu os dados. Esse timestamp não precisa ser modificado; portanto, deixe este campo vazio durante a configuração.
* **Cálculo de valor padronizado**: Normaliza leituras brutas de sensores para uma escala percentual (0-100%). Essa padronização facilita comparar leituras entre diferentes tipos de sensor e modelos de veículos. Para gestão de frotas, isso permite relatórios consistentes do nível de combustível independentemente da implementação específica do sensor de combustível em cada modelo de veículo, possibilitando alertas uniformes de baixo combustível e análise de consumo.
* **Cálculo da porcentagem de carga da bateria**: Normaliza leituras de tensão da bateria (faixa de 11V-14V) para uma escala de 0-100% para facilitar o monitoramento. Por exemplo, uma leitura de 12,5V seria normalizada para 50%, fornecendo um indicador intuitivo da saúde da bateria em diferentes tipos de veículos.
* **Cálculo da posição do acelerador**: Converte dados brutos de posição do acelerador (faixa de 0-255) do barramento CAN do veículo para uma escala percentual. Essa padronização ajuda os operadores a entender rapidamente o comportamento do motorista e o desempenho do veículo sem precisar interpretar valores brutos do sensor.
* **Nível médio de combustível de vários sensores**: Combina leituras de dois sensores de combustível separados para produzir uma medição geral do nível de combustível mais precisa. Isso é particularmente valioso para veículos com formatos de tanque complexos ou vários tanques, nos quais um único sensor pode não fornecer leituras confiáveis devido ao deslocamento do combustível durante o movimento.

## Resumo do fluxo de exemplo

Esta configuração de fluxo demonstra várias capacidades importantes do IoT Logic:

1. **Padronização**: Converte leituras específicas do dispositivo em métricas de negócios padronizadas
2. **Enriquecimento**: Cria métricas novas e significativas não disponíveis diretamente nos sensores do dispositivo
3. **Transformação**: Altera unidades para atender aos requisitos de relatórios de negócios
4. **Contexto histórico**: Usa leituras anteriores para calcular métricas baseadas em tendência
5. **Determinação de status**: Cria valores categóricos com base em várias entradas de sensores

Essa combinação de capacidades transforma dados brutos do dispositivo em inteligência de negócios acionável, apoiando diretamente a tomada de decisão operacional enquanto mantém a integridade das medições originais.


---

# 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/user/pt-br/guide/account/iot-logic/flow-management/flow-configuration-example.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.
