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á switch.

Ejemplo:

  • Nombre del nodo: check status

2. Propiedad

Indica qué propiedad del objeto de mensaje msg se utilizará para verificar las condiciones. Por defecto, es payload.

Ejemplo:

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

También se admiten propiedades de contexto (flow, global).


3. Verificación

  • check all rules (por defecto):
    El mensaje puede ser enviado a múltiples salidas si cumple con varias condiciones.
  • stop after first match:
    El mensaje se envía solo a la primera salida que cumpla con la condición.

4. Reglas

Definen la lógica de enrutamiento. Cada regla está vinculada a una de las salidas del nodo: cuántas reglas hay, tantas salidas habrá. Cuántas salidas recibirá el mensaje en caso de múltiples coincidencias, lo determina el campo Check.

Cada regla tiene dos campos: Condition — tipo de condición y Value — valor para comparar. Para las condiciones equals true, equals false, equals null, not equals null, empty y not empty, el campo Value no se muestra.

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 corresponde al 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:

  • Condition: >, Value: 50

Datos de entrada

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


Datos de salida

El nodo envía el mensaje msg a la salida que corresponde a la condición establecida.
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:
Dividir 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:

  • Property: 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.