Ejemplo de configuración de flujo
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 de negocio
En este escenario, una organización ha desplegado rastreadores IoT en sus activos y necesita procesar los datos de estos dispositivos para análisis empresariales. La organización recibe los siguientes parámetros directamente desde sus dispositivos de seguimiento:
speed: Velocidad del vehículo en kilómetros por horatemperature: Temperatura ambiental en grados Celsiusodometer: Distancia recorrida en kilómetrosignition: Estado de encendido del motor (1 = encendido, 0 = apagado)fuel_level: Medición actual del nivel de combustiblepressure_psi: Lectura de presión en PSIvoltage: Voltaje de la batería en voltiosthrottle: Posición del pedal del acelerador desde el bus CAN (0-255)fuel_level_1: Primera medición del nivel del tanque de combustiblefuel_level_2: Segunda medición del nivel del tanque de combustible
La organización necesita:
Recopilar datos telemétricos sin procesar desde los dispositivos para mantener un registro completo de las operaciones de los activos
Convertir las unidades de medida para que coincidan con su formato estándar de informes (unidades imperiales) para mantener la coherencia con los sistemas empresariales existentes
Calcular métricas basadas en el tiempo que indiquen patrones de uso para optimizar la utilización de activos y los calendarios de mantenimiento
Crear métricas derivadas para generar información operativa que no es proporcionada directamente por el hardware
Reenviar los datos enriquecidos a un sistema externo de análisis para su integración con plataformas de inteligencia empresarial
Enviar los datos sin cambios a Navixy para su monitorización
Este flujo transformará los datos sin procesar del dispositivo a un formato que respalde directamente la toma de decisiones empresariales, manteniendo la integridad de las mediciones originales.
Pasos de configuración del flujo
Siga estos pasos para construir un flujo integral de transformación y reenvío de datos:
Crear un nuevo flujo
Haga clic en el New flow botón en la parte superior de la interfaz de IoT Logic
Introduzca Asset Telemetry Processing 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."
Asegúrese de que el Flow enabled interruptor esté activado
Haga clic en Guardar para crear el flujo

Configurar la fuente de datos
Arrastre un Fuente de datos nodo desde el menú izquierdo al espacio de trabajo
Haga doble clic en el nodo para abrir su panel de configuración
En Nombre del nodo escriba Asset Trackers
Seleccione los dispositivos que desea incluir en este flujo desde la lista filtrada
Para este ejemplo, seleccione al menos dos dispositivos con capacidades similares
Haga clic en Aplicar para guardar la configuración del nodo

Configurar las transformaciones de datos básicas
Arrastre un Iniciar atributo nodo desde el menú izquierdo al espacio de trabajo
Conecte el Fuente de datos nodo a este Iniciar atributo nodo
Haga doble clic en el nodo para abrir su configuración
En Nombre del nodo escriba Conversiones de unidades
Cree los siguientes atributos para la conversión de unidades (todos los ejemplos usan sintaxis corta, refiriéndose a los valores de atributo más recientes sin verificación de validez):
Agregue un nuevo atributo para la conversión de velocidad (km/h a mph): 1. Nombre del atributo: speed_mph 2. Valor:
speed/1.609Agregue un nuevo atributo para la conversión de temperatura (Celsius a Fahrenheit): 1. Nombre del atributo: temperature_F 2. Valor:
temperature*1.8 + 32Agregue un nuevo atributo para la conversión de distancia (kilómetros a millas): 1. Nombre del atributo: distance_miles 2. Valor:
odometer/1.609Agregue 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
Haga clic en Aplicar para guardar la configuración del nodo

Crear métricas calculadas avanzadas
Arrastre otro Iniciar atributo nodo desde el menú izquierdo al espacio de trabajo
Conecte el primer Iniciar atributo nodo a este nuevo
Haga doble clic en el nodo para abrir su configuración
En Nombre del nodo escriba Advanced calculations
Cree los siguientes atributos para métricas avanzadas:
Agregue un atributo para la detección de cambios de temperatura:
Nombre del atributo: temperature_change
Valor:
value('temperature', 0, 'valid') - value('temperature', 1, 'valid')genTime('temperature', 0, 'valid')
Agregue un atributo para encontrar el tiempo transcurrido entre las dos últimas lecturas:
Nombre del atributo: time_between_readings_ms
Valor:
srvTime('speed', 0, 'valid') - srvTime('speed', 1, 'valid')Hora de generación:
genTime('speed', 0, 'valid')
Agregue un atributo para redondear la temperatura al entero más cercano:
Nombre del atributo: temperature_rounded
Valor:
math:round(value('temperature', 0, 'valid'))
Agregue un atributo para el cálculo de valor estandarizado (normalizando el nivel de combustible a 0-100%):
Nombre del atributo: fuel_level_percent
Valor:
(value('fuel_level', 0, 'valid') - 0) / (100 - 0) * 100
Agregue un atributo para el cálculo del porcentaje de carga de la batería:
Nombre del atributo: battery_percentage
Valor:
(value('voltage', 0, 'valid') - 11) / (14 - 11) * 100
Agregue un atributo para el cálculo de la posición del acelerador:
Nombre del atributo: throttle_percentage
Valor:
value('throttle', 0, 'valid') / 255 * 100
Agregue un atributo para el nivel promedio de combustible a partir de múltiples sensores:
Nombre del atributo: avg_fuel_level
Valor:
(value('fuel_level_1', 0, 'valid') + value('fuel_level_2', 0, 'valid')) / 2
Haga clic en Aplicar para guardar la configuración del nodo

Configurar el endpoint de salida
Arrastre un Punto final de salida nodo desde el menú izquierdo al espacio de trabajo
Conecte el segundo Iniciar atributo nodo a este Punto final de salida nodo
Haga clic en el nodo para abrir su configuración
Configure los siguientes ajustes:
Tipo de endpoint: MQTT endpoint
Nombre del endpoint: Analytics Platform
Protocolo: default Navixy Generic Protocol (JSON)
IP/Dominio: Introduzca la dirección del sistema de destino (p. ej., "analytics.example.com")
Puerto: 8883 (por defecto para MQTT, puede dejarlo vacío)
Habilitar SSL: activar el interruptor
Versión de MQTT: 5.0
MQTT Client ID: asset-telemetry-client
Tema: telemetry/assets/raw
QoS: 1
Autenticación MQTT: Sí (si lo requiere su sistema de destino)
Inicio de sesión y contraseña MQTT: Introduzca credenciales si corresponde
Haga clic en Crear para guardar la configuración del nodo

Agregar endpoint de salida predeterminado
Arrastre un Punto final de salida nodo desde el menú izquierdo al espacio de trabajo
En Tipo de endpoint seleccionar Default Endpoint
Haga clic en Guardar para aplicar la configuración del nodo
Conecte el Asset Trackers (Fuente de datos) node to it
Esto garantiza que los datos sin procesar se envíen a Navixy directamente desde los dispositivos, sin ninguna transformación ni enriquecimiento.
Use Data Stream Analyzer (DSA) para supervisar los datos entrantes y verificar:
Los dispositivos están enviando datos al flujo
Los cálculos están funcionando como se espera
Los datos se están reenviando al destino Por ejemplo, verifiquemos que las conversiones de velocidad se calculan correctamente en un camión. Para hacerlo en DSA, seleccione el Volvo dispositivo y atributos speed y speed_mph:

¡Todo bien! Los datos se reciben y se convierten con éxito.
Transformaciones de datos explicadas
Examinemos los cálculos clave utilizados en este flujo.
Basic unit conversions
El primer Initiate attribute node realiza conversiones de unidades sencillas:
Speed: Convierte km/h a mph dividiendo por 1.609
Temperatura: Convierte Celsius a Fahrenheit usando la fórmula °F = °C × 1.8 + 32
Distance: Convierte kilómetros a millas dividiendo por 1.609
Pressure: Convierte PSI a Bar multiplicando por 0.06895, haciéndolo compatible con los estándares internacionales de medición de presión
Estas conversiones garantizan 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 particularmente valiosas para organizaciones multinacionales que operan en regiones con diferentes estándares de medición.
Cálculos de métricas avanzadas
El segundo Initiate attribute node realiza cálculos más complejos:
Detección de cambio de temperatura: Calcula la diferencia entre las lecturas de temperatura actuales y anteriores para identificar cambios bruscos. Esto ayuda a detectar fallos en el equipo, como fallos de refrigeración en vehículos de transporte o problemas HVAC en las 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.
Hora de generación: Usar
genTime('temperature', 0, 'valid')es crucial aquí porque preserva la marca de tiempo exacta cuando la lectura de temperatura fue generada por el dispositivo, asegurando un análisis temporal preciso de los cambios de temperatura.Hora del servidor: El valor predeterminado
now()captura automáticamente cuándo el servidor recibió los datos. Dado que no necesitamos modificar esta marca de tiempo, podemos dejar 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 validar que los dispositivos están reportando con las frecuencias esperadas. Intervalos irregulares podrían indicar problemas de conectividad, mientras que retrasos consistentes podrían sugerir congestión de red o problemas de configuración del dispositivo.
Redondeo de valores: Aplica redondeo matemático a las lecturas de temperatura, reduciendo la precisión decimal a enteros. Esto simplifica la visualización y los reportes de datos mientras reduce los requisitos de almacenamiento para datos históricos. Los valores redondeados son especialmente útiles para pantallas de panel y alertas basadas en umbrales donde la precisión decimal no es necesaria.
Hora de generación: Especificar
genTime('speed', 0, 'valid')conecta estos metadatos directamente con la marca de tiempo de la lectura original, haciendo posible analizar tanto el intervalo de tiempo como cuándo ocurrió.Hora del servidor: El valor predeterminado
now()captura automáticamente cuándo el servidor recibió los datos. Dado que no necesitamos modificar esta marca de tiempo, podemos dejar 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 diferentes tipos de sensores y modelos de vehículo. Para la gestión de flotas, esto permite reportes consistentes del nivel de combustible independientemente de la implementación específica del sensor de combustible en cada modelo de vehículo, posibilitando alertas uniformes de bajo nivel de combustible y análisis de consumo.
Cálculo del porcentaje de carga de la batería: Normaliza las lecturas de voltaje de la batería (rango 11V-14V) a una escala de 0-100% para facilitar la monitorización. Por ejemplo, una lectura de 12.5V se normalizaría a 50%, proporcionando un indicador intuitivo del estado de la batería entre diferentes tipos de vehículos.
Cálculo de la posición del acelerador: Convierte los datos brutos de la posición del acelerador (rango 0-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 de sensor sin procesar.
Nivel promedio de combustible a partir de múltiples sensores: Combina lecturas de dos sensores de combustible separados para producir una medición general del nivel de combustible más precisa. Esto es especialmente valioso para vehículos con formas complejas de tanque o múltiples tanques, donde un único sensor podría no proporcionar lecturas fiables debido al desplazamiento del combustible durante el movimiento.
Resumen del flujo de ejemplo
Esta configuración de flujo demuestra varias capacidades clave de IoT Logic:
Estandarización: Convierte lecturas específicas del dispositivo en métricas empresariales estandarizadas
Enriquecimiento: Crea nuevas métricas significativas que no están disponibles directamente desde los sensores del dispositivo
Transformación: Cambia las unidades para que coincidan con los requisitos de informes comerciales
Contexto histórico: Utiliza lecturas anteriores para calcular métricas basadas en tendencias
Determinación de estado: Crea valores categóricos basados en múltiples entradas de sensores
Esta combinación de capacidades transforma los datos sin procesar del dispositivo en inteligencia empresarial accionable, apoyando directamente la toma de decisiones operativas mientras mantiene la integridad de las mediciones originales.
Última actualización
¿Te fue útil?
