Saltar al contenido principal

Nodo switch

El nodo switch está diseñado para enrutar mensajes según su contenido, estructura u otras condiciones. Es una herramienta poderosa para crear lógica condicional en flujos.


Configuraciones del nodo switch

IMG2

1. Nombre

Campo para especificar el nombre del nodo.
El nombre se muestra en el área de trabajo y ayuda a identificar fácilmente el nodo.
Si se deja vacío, el nodo se llamará inject.

Ejemplo:

  • Nombre del nodo: check status

2. Propiedad

Indica qué propiedad del objeto del mensaje msg se utilizará para verificar las condiciones.

Ejemplo:

  • msg.payload
  • msg.topic
  • msg.device.temperature

También se admiten propiedades de contexto (flow, global) y expresiones JSONata (que comienzan con $).


3. Verificación

  • Verificación hasta la primera coincidencia (Predeterminado):
    El mensaje se envía solo a la primera salida que cumpla con la condición.
  • Verificación de todas las coincidencias:
    El mensaje puede enviarse a varias salidas si cumple con varias condiciones.

3. Reglas

Definen la lógica de enrutamiento. Cada condición está vinculada a una de las salidas del nodo. El mensaje se enviará a la primera salida adecuada.

Tipos de condiciones disponibles:

  • ==: Verifica la igualdad del valor.
  • !=: Verifica la desigualdad.
  • <: Verifica si el valor es menor.
  • <=: Verifica si el valor es menor o igual.
  • >: Verifica si el valor es mayor.
  • >=: Verifica si el valor es mayor o igual.
  • has key: Verifica si el objeto contiene la clave especificada.
  • between: Verifica si el valor está en el rango especificado (inclusive).
  • contains: Verifica si la cadena o el arreglo contiene el valor especificado.
  • matches regex: Verifica si la cadena coincide con la expresión regular.
  • equals true: Verifica si el valor es igual a true.
  • equals false: Verifica si el valor es igual a false.
  • equals null: Verifica si el valor es igual a null.
  • not equals null: Verifica si el valor no es igual a null.
  • is of type: Verifica si el valor es del tipo especificado (por ejemplo, string, number, boolean).
  • empty: Verifica si la cadena, arreglo u objeto está vacío.
  • not empty: Verifica si la cadena, arreglo u objeto no está vacío.
  • else: Se ejecuta si ninguna de las otras condiciones se cumple.

Ejemplo:

  • msg.payload es mayor que 50

Entradas

El nodo recibe un objeto msg.
Qué propiedades se verificarán se establece en el campo Propiedad.


Salidas

El nodo envía el mensaje msg a la salida que cumple con la condición especificada.
Si el mensaje no cumple con ninguna condición, no se envía a las salidas.


Ejemplos de uso

Ejemplo 1: Filtración de datos de temperatura

Tarea:
Clasificar los datos en tres categorías: temperatura baja, normal y alta.

Flujo:

[inject] ---> [function] ---> [switch] ---> [debug (low temp)]
| [debug (normal temp)]
| [debug (high temp)]

Configuraciones del nodo switch:

  • Propiedad: msg.payload
  • Condiciones:
    1. is less than 10 → Salida 1
    2. is between 10 and 30 → Salida 2
    3. is greater than 30 → Salida 3

Resultado:
Las temperaturas se enrutarán según su valor.