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

# Ejemplo de configuración de un flujo

Un ejemplo paso a paso que muestra cómo crear un flujo de IoT Logic que recopila la telemetría del dispositivo, calcula métricas derivadas y reenvía externamente los datos enriquecidos.

Este ejemplo demuestra cómo configurar un flujo que recopila datos de dispositivos IoT, realiza cálculos para derivar métricas relevantes para el negocio y reenvía los datos enriquecidos a un sistema externo. El ejemplo utiliza un patrón de flujo lineal que puede adaptarse a diversos casos de uso de la industria.

## Escenario empresarial

En este escenario, una organización ha desplegado dispositivos GPS en sus activos y necesita procesar datos de estos dispositivos para análisis de negocio. La organización recibe los siguientes parámetros directamente de sus dispositivos de seguimiento:

* `velocidad`: Velocidad del vehículo en kilómetros por hora
* `temperature`: Temperatura ambiental en grados Celsius
* `Odómetro`: Distancia recorrida en kilómetros
* `Ignición`: Estado de ignición del motor (1 = encendido, 0 = apagado)
* `nivel de combustible`: Medición actual del nivel de combustible
* `presión_psi`: Lectura de presión en PSI
* `voltaje`: Voltaje de la batería en voltios
* `acelerador`: Posición del pedal del acelerador en el bus CAN (0-255)
* `nivel de combustible 1`: Primera medición del nivel del tanque de combustible
* `nivel de combustible 2`: Segunda medición del nivel del tanque de combustible

La organización necesita:

1. Recopilar datos brutos de telemetría de los dispositivos para mantener un registro completo de las operaciones de los activos
2. Convertir las unidades de medida para que coincidan con su formato estándar de informes (unidades imperiales) y mantener la coherencia con los sistemas empresariales existentes
3. Calcular métricas basadas en el tiempo que indiquen patrones de uso para optimizar la utilización de los activos y los programas de mantenimiento
4. Crear métricas derivadas para generar información operativa que no proporciona directamente el hardware
5. Reenviar los datos enriquecidos a un sistema externo de análisis para su integración con plataformas de inteligencia empresarial
6. Enviar los datos brutos sin cambios a Navixy para monitoreo

Este flujo transforma los datos brutos del dispositivo en un formato que respalda directamente la toma de decisiones empresariales, al tiempo que mantiene la integridad de las mediciones originales.

## Pasos de configuración del flujo

Siga estos pasos para crear un flujo integral de transformación y reenvío de datos:

{% stepper %}
{% step %}

### Crear un nuevo flujo

Abra IoT Logic. En la página de inicio, haga clic **Crear flujo**. Ingrese *Procesamiento de telemetría de activos* como nombre del flujo, agregue una descripción (*"Recopila datos del dispositivo, calcula métricas derivadas y los reenvía a la plataforma de análisis."*), y asegúrese de que el **Flujo habilitado** esté activado. Haga clic **Confirmar** para abrir el lienzo.
{% endstep %}

{% step %}

### Configurar la fuente de datos

1. Arrastre un **Fuente de datos** nodo del menú izquierdo al espacio de trabajo
2. Haga doble clic en el nodo para abrir su panel de configuración
3. En **Nombre del nodo** tipo *Rastreadores de activos*
4. Seleccione los dispositivos que desea incluir en este flujo de la lista filtrada

* Para este ejemplo, seleccione al menos dos dispositivos con capacidades similares

5. Haga clic en **Aplicar** para guardar la configuración del nodo
   {% endstep %}

{% step %}

### Configure transformaciones básicas de datos

1. Arrastre un **Iniciar atributo** nodo del menú izquierdo al espacio de trabajo
2. Conecte el **Fuente de datos** nodo a este **Iniciar atributo** nodo
3. Haga doble clic en el nodo para abrir su configuración
4. En **Nombre del nodo** tipo *Conversiones de unidades*
5. Cree los siguientes atributos para la conversión de unidades (todos los ejemplos usan sintaxis corta, haciendo referencia a los valores más recientes de los atributos sin verificación de validez):
   1. Agregue un nuevo atributo para la conversión de velocidad (km/h a mph): 1. Nombre del atributo: *speed\_mph* 2. Valor: `speed/1.609`
   2. Agregue un nuevo atributo para la conversión de temperatura (Celsius a Fahrenheit): 1. Nombre del atributo: *temperature\_F* 2. Valor: `temperature*1.8 + 32`
   3. Agregue un nuevo atributo para la conversión de distancia (kilómetros a millas): 1. Nombre del atributo: *distance\_miles* 2. Valor: `Odómetro/1.609`
   4. Agregue un nuevo atributo para la conversión de presión (PSI a Bar): 1. Nombre del atributo: *pressure\_bar* 2. Valor: `pressure_psi * 0.06895`
6. Haga clic en **Aplicar** para guardar la configuración del nodo

{% hint style="info" %}
Para explicaciones sobre los cálculos introducidos en este paso, consulte [Conversiones básicas de unidades](#basic-unit-conversions)
{% endhint %}
{% endstep %}

{% step %}

### Crear métricas calculadas avanzadas

1. Arrastre otro **Iniciar atributo** nodo del menú izquierdo al espacio de trabajo
2. Conecte el primer **Iniciar atributo** Nodo a este nuevo
3. Haga doble clic en el Nodo para abrir su configuración
4. En **Nombre del nodo** tipo *Cálculos avanzados*
5. Cree los siguientes atributos para métricas avanzadas:
   1. Agregue un atributo para la detección de cambios de temperatura:
      1. Nombre del atributo: *temperature\_change*
      2. Valor: `value('temperature', 0, 'valid') - value('temperature', 1, 'valid')`
      3. `genTime('temperature', 0, 'valid')`
   2. Agregue un atributo para calcular el tiempo transcurrido entre las dos últimas lecturas:
      1. Nombre del atributo: *time\_between\_readings\_ms*
      2. Valor: `srvTime('speed', 0, 'valid') - srvTime('speed', 1, 'valid')`
      3. Tiempo de generación: `genTime('speed', 0, 'valid')`
   3. Añada un atributo para redondear la temperatura al entero más cercano:
      1. Nombre del atributo: *temperatura\_redondeada*
      2. Valor: `math:round(value('temperature', 0, 'valid'))`
   4. Agregue un atributo para el cálculo del valor estandarizado (normalizando el nivel de combustible a 0-100%):
      1. Nombre del atributo: *porcentaje\_del\_nivel\_de\_combustible*
      2. Valor: `(value('fuel_level', 0, 'valid') - 0) / (100 - 0) * 100`
   5. Agregue un atributo para el cálculo del porcentaje de carga de la batería:
      1. Nombre del atributo: *porcentaje\_de\_batería*
      2. Valor: `(value('voltage', 0, 'valid') - 11) / (14 - 11) * 100`
   6. Agregue un atributo para el cálculo de la posición del acelerador:
      1. Nombre del atributo: *porcentaje\_del\_acelerador*
      2. Valor: `value('throttle', 0, 'valid') / 255 * 100`
   7. Agregue un atributo para el nivel promedio de combustible de varios sensores:
      1. Nombre del atributo: *nivel\_promedio\_de\_Combustible*
      2. Valor: `(value('Combustible_level_1', 0, 'valid') + value('Combustible_level_2', 0, 'valid')) / 2`
6. Haga clic en **Aplicar** para guardar la configuración del nodo

{% hint style="info" %}
Para explicaciones sobre los cálculos introducidos en este paso, consulte [Cálculos avanzados de métricas](#advanced-metrics-calculations).
{% endhint %}
{% endstep %}

{% step %}

### Configure el Nodo de Salida

1. Arrastre un **Nodo de Salida** nodo del menú izquierdo al espacio de trabajo
2. Conecte el segundo **Iniciar atributo** nodo a este **Nodo de Salida** nodo
3. Haga clic en el Nodo para abrir su configuración
4. Configure los siguientes ajustes:
   1. **Tipo de punto de conexión**: *Nodo de salida MQTT*
   2. **Nombre del punto de conexión**: *Plataforma de análisis*
   3. **Protocolo**: predeterminado *Navixy Generic Protocol (JSON)*
   4. **IP/dominio**: Ingrese la dirección del sistema de destino (por ejemplo, "*analytics.example.com*")
   5. **Puerto**: *8883* (predeterminado para MQTT, puede dejarlo vacío)
   6. **Habilitar SSL**: *activar*
   7. **Versión de MQTT**: *5.0*
   8. **ID de cliente de MQTT**: *activo-telemetría-cliente*
   9. **Tópico**: *telemetría/activos/en-bruto*
   10. **QoS**: *1*
   11. **Autenticación MQTT**: *Sí* (si su sistema de destino lo requiere)
   12. **Usuario y contraseña de MQTT**: Ingrese las credenciales, si corresponde
5. Haga clic en **Crear** para guardar la configuración del nodo
   {% endstep %}

{% step %}

### Agregar el Nodo de Salida predeterminado

1. Arrastre un **Nodo de Salida** nodo del menú izquierdo al espacio de trabajo
2. En **Modo** seleccione **el modo Nodo de salida predeterminado**
3. Haga clic en **Guardar** para aplicar la configuración del Nodo
4. Conecte el *Rastreadores de activos* (**Fuente de datos**) Nodo a él

Esto garantiza que los Datos brutos se envíen a Navixy directamente desde los dispositivos, sin ninguna transformación ni enriquecimiento.
{% endstep %}

{% step %}

### Guardar y probar el flujo

Su configuración final se verá así:

<figure><img src="https://1900701122-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>

Haga clic en el botón **Guardar flujo** botón en el **Nodos** panel para almacenar la configuración de su flujo.
{% endstep %}
{% endstepper %}

{% hint style="success" %}
Use [Analizador de datos (DSA)](/docs/user/es/guide/account/iot-logic/data-stream-analyzer.md) para supervisar los datos entrantes y verificar lo siguiente:

* Los dispositivos están enviando datos al flujo
* Los cálculos están funcionando según lo esperado
* Los datos se están reenviando al destino. Por ejemplo, comprobemos que las conversiones de velocidad se calculan correctamente en un camión. Para hacerlo en DSA, seleccione el **Volvo** dispositivo y atributos **velocidad** y **speed\_mph**:\ <img src="https://1900701122-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">

¡Todo está bien! Los datos se reciben y convierten correctamente.
{% endhint %}

## Explicación de las transformaciones de datos

Examinemos los cálculos clave utilizados en este flujo.

### Conversiones básicas de unidades

El primero **Nodo Iniciar atributo** realiza conversiones directas de unidades:

* **Velocidad**: Convierte km/h a mph dividiendo entre 1.609
* **Temperatura**: Convierte Celsius a Fahrenheit usando la fórmula °F = °C × 1.8 + 32
* **Distancia**: Convierte kilómetros a millas dividiendo entre 1.609
* **Presión**: Convierte PSI a bar multiplicando por 0.06895, lo que lo hace compatible con los estándares internacionales de medición de presión

Estas conversiones garantizan la coherencia con los formatos de informes estándar y hacen que los datos sean inmediatamente utilizables para el análisis. Las conversiones de unidades son especialmente valiosas para organizaciones multinacionales que operan en distintas regiones con diferentes estándares de medición.

### Cálculos avanzados de métricas

El segundo **Nodo Iniciar atributo** realiza cálculos más complejos:

* **Detección de cambios de temperatura**: Calcula la diferencia entre las lecturas de temperatura actuales y anteriores para identificar cambios repentinos. Esto ayuda a detectar problemas en los equipos, como fallas de refrigeración en vehículos de transporte o problemas de HVAC en instalaciones. Por ejemplo, un aumento repentino de 5 °C en un contenedor refrigerado podría indicar una falla del sistema de enfriamiento que requiere atención inmediata.
  * **Tiempo de generación**: El uso de `genTime('temperature', 0, 'valid')` es crucial aquí porque preserva la marca de tiempo exacta en la que la lectura de temperatura fue generada por el dispositivo, lo que garantiza un análisis preciso basado en el tiempo de los cambios de temperatura.
  * **Hora del servidor**: El valor predeterminado `now()` captura automáticamente cuándo el servidor recibió los datos. Esta marca de tiempo no necesita modificarse, así que deje este campo vacío durante la configuración.
* **Tiempo entre lecturas**: Mide el intervalo entre transmisiones de datos consecutivas comparando las marcas de tiempo del servidor. Este cálculo ayuda a identificar problemas de comunicación o a validar que los dispositivos informen con la frecuencia esperada. Los intervalos irregulares podrían indicar problemas de conectividad, mientras que los retrasos constantes podrían sugerir congestión de red o problemas de configuración del dispositivo.
* **Redondear valores**: Aplica redondeo matemático a las lecturas de temperatura, reduciendo la precisión decimal a números enteros. Esto simplifica la visualización y los informes de datos, al mismo tiempo que reduce los requisitos de almacenamiento para los datos históricos. Los valores redondeados son especialmente útiles para las vistas de panel y las alertas basadas en umbrales, donde la precisión decimal no es necesaria.
  * **Tiempo de generación**: Especificar `genTime('speed', 0, 'valid')` conecta estos metadatos directamente con la marca de tiempo original de la lectura, lo que permite analizar tanto el intervalo de tiempo como el momento en que ocurrió.
  * **Hora del servidor**: El valor predeterminado `now()` captura automáticamente cuándo el servidor recibió los datos. Esta marca de tiempo no necesita modificarse, así que deje este campo vacío durante la configuración.
* **Cálculo de valor estandarizado**: Normaliza las lecturas brutas del sensor a una escala porcentual (0-100%). Esta estandarización facilita la comparación de lecturas entre distintos tipos de sensores y modelos de vehículo. Para la gestión de flotas, esto permite un reporte uniforme del nivel de combustible independientemente de la implementación específica del sensor de combustible en cada modelo de vehículo, lo que habilita alertas uniformes de bajo combustible y análisis del consumo.
* **Cálculo del porcentaje de carga de la batería**: Normaliza las lecturas de voltaje de la batería (rango de 11 V a 14 V) a una escala de 0 a 100 % para facilitar el monitoreo. Por ejemplo, una lectura de 12,5 V se normalizaría al 50 %, lo que proporciona un indicador intuitivo del estado de la batería en distintos tipos de vehículos.
* **Cálculo de la posición del acelerador**: Convierte los datos brutos de la posición del acelerador (rango de 0 a 255) del bus CAN del vehículo a una escala porcentual. Esta estandarización ayuda a los operadores a comprender rápidamente el comportamiento del conductor y el rendimiento del vehículo sin necesidad de interpretar valores brutos del sensor.
* **Nivel promedio de combustible de múltiples sensores**: Combina las lecturas de dos sensores de combustible independientes para producir una medición general del nivel de combustible más precisa. Esto es especialmente valioso para vehículos con formas de tanque complejas o con múltiples tanques, donde un solo sensor podría no proporcionar lecturas confiables debido al desplazamiento del combustible durante el movimiento.

## Resumen del flujo de ejemplo

Esta configuración del flujo demuestra varias capacidades clave de IoT Logic:

1. **Estandarización**: Convierte las lecturas específicas del dispositivo en métricas empresariales estandarizadas
2. **Enriquecimiento**: Crea nuevas métricas significativas no disponibles directamente en los sensores del dispositivo
3. **Transformación**: Cambia las unidades para ajustarlas a los requisitos de informes empresariales
4. **Contexto histórico**: Usa lecturas anteriores para calcular métricas basadas en tendencias
5. **Determinación de estado**: Crea valores categóricos basados en múltiples entradas de sensores

Esta combinación de capacidades transforma los datos brutos del dispositivo en inteligencia empresarial accionable, al respaldar directamente la toma de decisiones operativas y mantener la integridad de las mediciones originales.


---

# 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/es/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.
