Saltar al contenido principal

Nodo switch

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


Configuraciones para el nodo switch

IMG2

1. Nombre

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

Ejemplo:

  • Nombre del nodo: verificar estado

2. Propiedad

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

Ejemplo:

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

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


3. Verificar

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

3. Reglas

Define 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 de valor.
  • !=: Verifica la desigualdad.
  • <: Verifica si el valor es menor.
  • <=: Verifica si el valor es menor o igual a.
  • >: Verifica si el valor es mayor.
  • >=: Verifica si el valor es mayor o igual a.
  • has key: Verifica si el objeto contiene la clave especificada.
  • between: Verifica si el valor está dentro del 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 coincide con el 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

Entrada

El nodo acepta el objeto msg.
Qué propiedades específicas se verificarán se define en el campo Propiedad.


Salida

El nodo envía el mensaje msg a la salida que corresponde a 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: Filtrando datos de temperatura

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

Flujo:

[inject] ---> [function] ---> [switch] ---> [debug (temp baja)]
| [debug (temp normal)]
| [debug (temp alta)]

Configuraciones para el nodo switch:

  • Propiedad: msg.payload
  • Condiciones:
    1. es menor que 10 → Salida 1
    2. está entre 10 y 30 → Salida 2
    3. es mayor que 30 → Salida 3

Resultado:
Las temperaturas se enrutarán en función de su valor.