> 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/nodes/initiate-attribute-node/calculation-examples.md).

# Ejemplos de cálculo

Ejemplos prácticos para escribir cálculos de atributos en el lenguaje de expresiones de IoT Logic. Incluye orientación sobre la nomenclatura de atributos y el manejo seguro de valores nulos.

El Nodo Iniciar atributo en IoT Logic admite una amplia gama de cálculos mediante [Lenguaje de expresiones de Navixy IoT Logic](/docs/iot-logic-api/technologies/navixy-iot-logic-expression-language.md). Esta guía proporciona ejemplos prácticos de cálculos comunes para ayudarle a extraer el máximo valor de sus datos de IoT.

## Consideraciones importantes

Al crear cálculos, tenga en cuenta estos puntos:

* **Validez de los nombres de atributos**: Asegúrese de usar nombres de atributos correctos en los cálculos. Puede consultar los nombres de atributos existentes mediante [Analizador de datos](/docs/user/es/guide/account/iot-logic/data-stream-analyzer.md), o insertarlos con [Administrar atributos](/docs/user/es/guide/account/iot-logic/nodes/initiate-attribute-node/managing-attributes.md#short-syntax) usando [autocompletado](/docs/user/es/guide/account/iot-logic/nodes/initiate-attribute-node/managing-attributes.md#autofill-attribute-names).
* **Validez de los datos**: Una fórmula que lee un valor que el paquete no contiene no produce nada, y entonces el atributo no tiene valor para ese paquete. Proteja el cálculo con `!= null`, o sustituya un valor de respaldo con `??`. Consulte [Valores faltantes en expresiones](/docs/user/es/guide/account/iot-logic/nodes/missing-values-in-expressions.md).
* **Impacto en el rendimiento**: Los cálculos complejos con muchas funciones anidadas pueden afectar la velocidad de procesamiento de datos de alta frecuencia
* **Restricciones matemáticas**: Funciones como el logaritmo y la raíz cuadrada requieren valores de entrada positivos
* **Referencias históricas**: Cuando use valores indexados (p. ej., `value('param', 1, 'valid')`), asegúrese de contar con suficientes datos históricos y use [sintaxis completa de expresiones](/docs/user/es/guide/account/iot-logic/nodes/initiate-attribute-node/managing-attributes.md#full-syntax)

{% hint style="info" %}
Las funciones matemáticas pueden aplicarse a cualquier parámetro numérico o atributo calculado previamente. Valide siempre sus cálculos con datos de prueba antes de implementarlos en flujos de producción.
{% endhint %}

{% hint style="info" %}
Para rellenar un atributo con el nombre de la Zona en la que se encuentra un dispositivo, en lugar de con un cálculo, use `geofenceName()`. Es una opción de pago, desactivada de forma predeterminada. Consulte [Funciones de zonas](/docs/user/es/guide/account/iot-logic/nodes/geofence-functions.md).
{% endhint %}

## Cálculos básicos

### Conversiones de unidades

Convertir mediciones entre distintas unidades es una de las operaciones más comunes en el procesamiento de datos de IoT.

#### **Conversión de velocidad (km/h a mph)**

```jexl
can_speed/1.609
```

**Aplicación práctica:** Esta conversión estandariza los datos de velocidad del vehículo para regiones que usan medidas imperiales. Al realizar este cálculo en IoT Logic en lugar de en aplicaciones posteriores, usted garantiza la coherencia en todos los sistemas que consumen los datos.

**Conversión de temperatura (Celsius a Fahrenheit)**

```jexl
temperature * 1.8 + 32
```

**Aplicación práctica:** Esta conversión hace que las lecturas de temperatura sean comprensibles para usuarios más familiarizados con las mediciones en Fahrenheit. Es especialmente valiosa para organizaciones multinacionales que operan en regiones con diferentes estándares de medición.

### Calcular diferencias

Comparar las lecturas actuales con los valores anteriores ayuda a identificar cambios y tendencias en sus datos.

#### **Detección de cambios de temperatura**

```jexl
temperature - value('temperature', 1, 'valid')
```

**Aplicación práctica:** Este cálculo ayuda a detectar fluctuaciones rápidas de temperatura que podrían indicar problemas del equipo o cambios ambientales. Al crear un atributo dedicado para esta diferencia, puede configurar Alertas para cambios repentinos sin un procesamiento complejo posterior.

{% hint style="info" %}
**Ejemplo:** Para una Flota de camiones refrigerados, este cálculo puede identificar de inmediato cuando la temperatura de la carga empieza a subir demasiado rápido, lo que permite a los despachadores contactar a los Conductores antes de que los productos perecederos se vean comprometidos. El atributo puede activar Alertas cuando el cambio de temperatura supera los 3 grados en un período corto, lo que podría indicar una falla del sistema de enfriamiento o que la puerta quedó abierta.
{% endhint %}

## Cálculos basados en el tiempo

Los cálculos de tiempo le ayudan a comprender el comportamiento del dispositivo a lo largo del tiempo y a medir patrones operativos.

### **Encontrar el tiempo transcurrido entre las últimas lecturas válidas**

```jexl
srvTime('avl_25', 0, 'valid') - srvTime('avl_25', 1, 'valid')
```

**Aplicación práctica:** Este cálculo mide el intervalo entre transmisiones de datos consecutivas, lo que puede ayudar a identificar problemas de comunicación o validar que los dispositivos estén reportando con la frecuencia esperada. Este ejemplo muestra el cálculo entre las dos últimas lecturas válidas, pero puede ajustarse para manejar cualesquiera dos valores históricos.

{% hint style="info" %}
**Ejemplo:** Para una Flota de taxis, este cálculo puede ayudar a identificar problemas de conectividad con los rastreadores GPS. Si el tiempo entre lecturas aumenta repentinamente del estándar de 30 segundos a varios minutos, podría indicar áreas con poca cobertura celular o fallas en los dispositivos, lo que permite a los equipos de Mantenimiento abordar los problemas antes de que afecten la calidad del servicio.
{% endhint %}

### **Convirtiendo la marca de tiempo a un formato legible para humanos**

```jexl
dtFormat(genTime('can_fuel_1', 0, 'all'))
```

**Aplicación práctica:** Convertir las marcas de tiempo Unix al formato ISO 8601 hace que los datos sean más legibles en los registros y Reportes. Este formato es ampliamente compatible con herramientas de análisis y bases de datos, lo que simplifica la integración con otros sistemas.

## Funciones matemáticas avanzadas

IoT Logic admite operaciones matemáticas sofisticadas mediante sus funciones matemáticas integradas.

### Redondear valores

**Redondear la temperatura al entero más cercano**

```jexl
math:round(value('temperature_2', 0, 'valid'))
```

**Aplicación práctica:** El redondeo es valioso cuando no se necesita una precisión exacta o cuando desea reducir el ruido en las lecturas de los sensores. Por ejemplo, redondear los datos de sensores ambientales puede ser suficiente para el monitoreo climático general, al mismo tiempo que reduce los requisitos de almacenamiento. Esta función también es útil al crear categorías o bandas de valores (por ejemplo, agrupar las lecturas de temperatura en incrementos de 5 grados).

{% hint style="info" %}
**Ejemplo:** En la gestión de flotas, las lecturas de temperatura del motor suelen incluir decimales que no son relevantes para las alertas del conductor ni para la programación del mantenimiento. Redondear estos valores simplifica la visualización en los paneles y facilita la definición de los umbrales de temperatura. Por ejemplo, las alertas de mantenimiento pueden activarse cuando la temperatura redondeada del motor supera los 90 °C en lugar de trabajar con valores precisos como 89,7 °C.
{% endhint %}

### Cálculos logarítmicos

**Logaritmo natural de un valor**

```jexl
math:log(value('temperature_2', 0, 'valid'))
```

**Aplicación práctica:** Las transformaciones logarítmicas son especialmente útiles para:

* Comprimir datos que abarcan varios órdenes de magnitud en un rango más manejable
* Convertir relaciones exponenciales en lineales para facilitar el análisis
* Trabajar con ciertos tipos de sensores que tienen características de respuesta logarítmica
* Cálculos de nivel de sonido, donde los decibelios son unidades logarítmicas
* Mediciones de pH en el monitoreo ambiental

{% hint style="info" %}
**Ejemplo:** Al analizar el comportamiento del conductor con un Acelerómetro, la función logarítmica puede ayudar a normalizar los datos de aceleración que van desde movimientos leves hasta frenadas bruscas. Esto facilita la creación de una puntuación significativa de seguridad del conductor que no se vea excesivamente sesgada por eventos extremos ocasionales. Otro ejemplo práctico es cuando se trabaja con sensores de combustible que no proporcionan lecturas lineales. Algunos sensores de nivel de combustible tienen valores de resistencia no lineales que corresponden al nivel real de combustible. El uso de cálculos logarítmicos puede ayudar a traducir estas lecturas en porcentajes del nivel de combustible más precisos.
{% endhint %}

### Operaciones de raíz cuadrada

**Calcular la raíz cuadrada de una lectura**

```jexl
math:sqrt(value('temperature_2', 0, 'valid'))
```

**Aplicación práctica:** Las funciones de raíz cuadrada son valiosas para:

* Convertir entre potencia y amplitud en mediciones eléctricas
* Calcular desviaciones estándar en el análisis estadístico de datos del sensor
* Determinar valores de la raíz cuadrática media (RMS) para parámetros eléctricos
* Cálculos de distancia en el espacio multidimensional (por ejemplo, trilateración para posicionamiento)
* Normalizar ciertos tipos de datos del sensor

{% hint style="info" %}
**Ejemplo:** Al calcular la distancia real entre dos puntos GPS (latitud y longitud), debe usar la función de raíz cuadrada como parte de la fórmula de distancia. Por ejemplo, si está calculando la distancia que un vehículo ha recorrido entre dos lecturas GPS usando la fórmula de distancia euclidiana, la función de raíz cuadrada es esencial. Otra aplicación común es calcular la magnitud de eventos de vibración o impacto a partir de múltiples ejes del Acelerómetro (X, Y, Z). La raíz cuadrada de la suma de los valores al cuadrado de cada eje le da la magnitud total de la vibración, lo cual es útil para detectar impactos del vehículo o condiciones de camino en mal estado.
{% endhint %}

## Operaciones combinadas

Puede crear cálculos aún más complejos combinando múltiples funciones y operaciones.

### **Media geométrica con redondeo**

{% code overflow="wrap" %}

```jexl
math:round(math:sqrt(value('temperature_1', 0, 'valid') * value('temperature_2', 0, 'valid')))
```

{% endcode %}

**Aplicación práctica:** Este cálculo obtiene la media geométrica de las lecturas de dos sensores de temperatura y redondea el resultado para proporcionar un valor más limpio. La media geométrica suele ser más adecuada que un promedio aritmético cuando se trabaja con tasas, razones o mediciones en las que la multiplicación es la forma natural de combinar los valores.

{% hint style="info" %}
**Ejemplo:** En un escenario de transporte refrigerado, puede tener múltiples sensores de temperatura colocados a lo largo del área de carga. Este cálculo proporciona una lectura de temperatura equilibrada que toma en cuenta ambos valores y minimiza la influencia de valores atípicos extremos. En lugar de activar alertas basándose solo en un sensor (que podría verse afectado por la apertura de las puertas), este cálculo combinado ofrece una condición general de temperatura más representativa para la carga sensible.
{% endhint %}

### **Cálculo de valor estandarizado**

{% code overflow="wrap" %}

```jexl
(value('sensor_reading', 0, 'valid') - value('sensor_min', 0, 'valid')) / (value('sensor_max', 0, 'valid') - value('sensor_min', 0, 'valid')) * 100
```

{% endcode %}

**Aplicación práctica:** Esto normaliza una lectura del sensor a una escala porcentual de 0-100%, lo que permite comparaciones estandarizadas entre distintos sensores con rangos variados. Esto es especialmente útil para crear paneles uniformes o activar alertas basadas en valores relativos en lugar de mediciones absolutas.

{% hint style="info" %}
**Ejemplo:** Un gerente de flota supervisa vehículos de múltiples fabricantes, cada uno con lecturas distintas de sensores de combustible (ohmios, voltios, valores digitales sin procesar). Al normalizar estas lecturas diversas a una escala porcentual uniforme, el gerente puede aplicar las mismas alertas por bajo combustible en toda la flota y generar reportes estandarizados de consumo de combustible sin tener que considerar las características específicas del sensor de cada modelo de vehículo.
{% endhint %}

## Operaciones de cadenas

Las operaciones de cadenas le permiten combinar varios valores de atributos en una sola salida de texto.

### Unir valores de atributos

Combinar valores de varios atributos es útil cuando necesita consolidar datos de varias fuentes en un solo campo para visualización o transmisión.

```jexl
util:joinNonNull(', ', ble_name_1, ble_name_2, ble_name_3, ble_name_4, ble_name_5, ble_name_6, ble_name_7, ble_name_8)
```

**Aplicación práctica:** Los dispositivos con capacidad de escaneo BLE pueden detectar varios sensores periféricos al mismo tiempo, pero no todos los espacios para sensores están siempre ocupados. Este cálculo produce una lista limpia de sensores activos, separada por comas, omitiendo automáticamente los espacios no emparejados. El resultado está listo para mostrarse o reenviarse a sistemas externos sin limpieza adicional.

{% hint style="info" %}
**Ejemplo**: Un camión refrigerado admite hasta ocho sensores de temperatura BLE colocados en toda el área de carga, pero actualmente solo hay tres instalados. En lugar de producir "Sensor A, Sensor B, Sensor C, , , , , " con entradas vacías para los espacios no utilizados, `util:joinNonNull` devuelve "Sensor A, Sensor B, Sensor C", una lista limpia que se actualiza automáticamente a medida que se agregan o quitan sensores. Si necesita conservar posiciones vacías en la salida, use `util:join` en su lugar, que trata los valores nulos como cadenas vacías en lugar de omitirlos.
{% endhint %}


---

# 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/es/guide/account/iot-logic/nodes/initiate-attribute-node/calculation-examples.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.
