Saltar al contenido principal

Nodo switch

El nodo switch enruta mensajes según su contenido, su estructura u otras condiciones. Sirve para crear lógica condicional en los flujos.


Configuración del nodo switch​

Ventana «Node Information» del nodo switch: campos «Name», «Property», «Check» y reglas «Condition» «==» con el valor «APPROVED» y «else»

1. Name​

Nombre del nodo.
El nombre aparece en el área de trabajo y ayuda a identificar el nodo.
Si lo deja vacío, el nodo se llamará switch.

Ejemplo:

  • Nombre del nodo: check status

2. Property​

Propiedad del objeto de mensaje msg con la que se comprueban las condiciones. El valor predeterminado es payload.

Ejemplo:

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

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


3. Check​

  • check all rules (predeterminado):
    si el mensaje cumple varias condiciones, puede enviarse a varias salidas.
  • stop after first match:
    el mensaje se envía solo a la primera salida cuya condición cumple.

4. Rules​

Las reglas definen la lógica de enrutamiento. Cada regla está vinculada a una salida del nodo, así que el nodo tiene tantas salidas como reglas. Cuando coinciden varias reglas, el campo Check determina a cuántas salidas va el mensaje.

Cada regla tiene dos campos: Condition (tipo de condición) y Value (valor con el que se compara). Con las condiciones equals true, equals false, equals null, not equals null, empty y not empty, el campo Value no se muestra.

Tipos de condición disponibles:

  • ==: comprueba si el valor es igual.
  • !=: comprueba si el valor es distinto.
  • <: comprueba si el valor es menor.
  • <=: comprueba si el valor es menor o igual.
  • >: comprueba si el valor es mayor.
  • >=: comprueba si el valor es mayor o igual.
  • has key: comprueba si el objeto contiene la clave indicada.
  • between: comprueba si el valor está dentro del rango indicado (ambos extremos incluidos).
  • contains: comprueba si la cadena o el arreglo contiene el valor indicado.
  • matches regex: comprueba si la cadena coincide con la expresión regular.
  • equals true: comprueba si el valor es true.
  • equals false: comprueba si el valor es false.
  • equals null: comprueba si el valor es null.
  • not equals null: comprueba si el valor no es null.
  • is of type: comprueba si el valor es del tipo indicado (por ejemplo, string, number, boolean).
  • empty: comprueba si la cadena, el arreglo o el objeto está vacío.
  • not empty: comprueba si la cadena, el arreglo o el objeto no está vacío.
  • else: se aplica si no se cumple ninguna de las demás condiciones.

Ejemplo:

  • Condition: >, Value: 50

Datos de entrada​

El nodo recibe un objeto msg.
Las propiedades que se comprueban se definen en el campo Property.


Datos de salida​

El nodo envía el mensaje msg a la salida cuya condición se cumple.
Si el mensaje no cumple ninguna condición, no se envía a ninguna salida.


Ejemplos de uso​

Ejemplo 1: Filtrado 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)]

Configuración 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:
Cada temperatura se enruta según su valor.