> 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

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 monitoramento:

* `velocidade`: Velocidade do veículo em quilômetros por hora
* `temperature`: Temperatura ambiente em graus Celsius
* `odômetro`: Distância percorrida em quilômetros
* `ignição`: Status da 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 do 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. Coletar dados brutos de telemetria dos dispositivos para manter um registro completo das operações dos ativos
2. Converter as unidades de medida para corresponder ao seu formato padrão de relatórios (unidades imperiais), para manter a consistência com os sistemas de negócios existentes
3. Calcular métricas baseadas em tempo que indiquem padrões de uso para otimizar a utilização dos ativos e os cronogramas de manutenção
4. Criar métricas derivadas para gerar insights operacionais não fornecidos diretamente pelo hardware
5. Encaminhar os dados enriquecidos para um sistema externo de análise para integração com plataformas de business intelligence
6. Enviar os dados brutos inalterados para a Navixy para monitoramento

Este fluxo transforma os dados brutos dos dispositivos em um formato que apoia diretamente a 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 de ativos* como nome do fluxo, adicione uma descrição (*"Coleta dados dos dispositivos, calcula métricas derivadas e encaminha para a plataforma de análise."*), e certifique-se de que o **fluxo ativado** alternador esteja ativado. Clique **Confirmar** para abrir a tela.
{% endstep %}

{% step %}

### Configurar a fonte de dados

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

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

5. Clique em **Aplicar** para salvar a configuração do Nó
   {% endstep %}

{% step %}

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

1. Arraste um **Iniciar Atributo** nó do menu esquerdo para a área de trabalho
2. Conecte o **Fonte de Dados** Nó a este **Iniciar Atributo** Nó
3. Clique duas vezes 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: *velocidade\_mph* 2. Valor: `speed/1.609`
   2. Adicionar um novo atributo para conversão de temperatura (Celsius para Fahrenheit): 1. Nome do atributo: *temperatura\_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: *distância\_em\_milhas* 2. Valor: `odômetro/1.609`
   4. Adicionar um novo atributo para conversão de pressão (PSI para bar): 1. Nome do atributo: *pressão\_bar* 2. Valor: `pressure_psi * 0.06895`
6. Clique em **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 esquerdo para a área de trabalho
2. Conecte o primeiro **Iniciar Atributo** Nó a este novo
3. Dê um duplo clique 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 mudança 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 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. Adicionar um atributo para arredondar a temperatura para o inteiro mais próximo:
      1. Nome do atributo: *temperatura arredondada*
      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: *percentual do nível de Combustível*
      2. Valor: `(value('fuel_level', 0, 'valid') - 0) / (100 - 0) * 100`
   5. Adicionar 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. Adicione 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. Adicionar 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('fuel_level_1', 0, 'valid') + value('fuel_level_2', 0, 'valid')) / 2`
6. Clique em **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 esquerdo 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 do ponto de extremidade**: *Ponto de extremidade MQTT*
   2. **Nome do ponto de extremidade**: *Plataforma de análise*
   3. **Protocolo**: padrão *Navixy Generic Protocol (JSON)*
   4. **IP/Domínio**: Insira 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-telemetria-cliente*
   9. **Tópico**: *telemetria/Ativos/bruto*
   10. **QoS**: *1*
   11. **Autenticação MQTT**: *Sim* (se exigido pelo sistema de destino)
   12. **Login e senha do MQTT**: Insira as credenciais, se aplicável
5. Clique em **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 esquerdo para a área de trabalho
2. Em **Modo** selecionar **Ponto de extremidade padrão**
3. Clique em **Salvar** para aplicar a configuração do nó
4. Conecte o *Rastreadores de ativos* (**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="/files/4ef1e4fd41a59dba8565f98848ad8ab49953ac60" alt="Complete flow configuration with all nodes connected in IoT Logic workspace"><figcaption></figcaption></figure>

Clique no **Salvar fluxo** botão no **Nós** painel para armazenar sua configuração do 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 ao destino. Por exemplo, vamos verificar se as conversões de velocidade estão calculadas corretamente em um caminhão. Para fazer isso no DSA, selecione o **Volvo** dispositivo e atributos **velocidade** e **velocidade\_mph**:\ <img src="/files/c9cd7dfb21912980a7f05351111372bdf1c601ba" 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 %}

## Transformações de dados explicadas

Vamos examinar os principais cálculos usados neste fluxo.

### Conversões básicas de unidades

O primeiro **Nó Iniciar Atributo** executa conversões simples de unidades:

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

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

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

O segundo **Nó Iniciar Atributo** executa cálculos mais complexos:

* **Detectar variações de temperatura**: Calcula a diferença entre as leituras de temperatura atual e anterior para identificar mudanças súbitas. Isso ajuda a detectar problemas em equipamentos, como falhas de refrigeração em veículos de transporte ou problemas de HVAC em instalações. Por exemplo, um aumento súbito de 5°C em um contêiner refrigerado pode indicar uma falha no sistema de refrigeração que exige atenção imediata.
  * **Tempo de geração**: 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 enviando dados 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.
* **Arredondar valores**: Aplica arredondamento matemático às leituras de temperatura, reduzindo a precisão decimal para números inteiros. Isso simplifica a visualização e os relatórios de dados, ao mesmo tempo em que reduz os requisitos de armazenamento de dados históricos. Os valores arredondados são especialmente úteis para exibições em painéis e alertas baseados em limites, nos quais a precisão decimal não é necessária.
  * **Tempo de geração**: 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 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 a comparação entre leituras de 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 nível de 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 a 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 da posição do acelerador (faixa de 0 a 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 múltiplos 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ócio padronizadas
2. **Enriquecimento**: Cria métricas novas e significativas não disponíveis diretamente nos sensores do dispositivo
3. **Transformação**: Altera unidades para corresponder aos requisitos de relatórios de negócios
4. **Contexto histórico**: Usa leituras anteriores para calcular métricas baseadas em tendências
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ões operacionais 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 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/user/pt-br/guide/account/iot-logic/flow-management/flow-configuration-example.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.
