Passa al contenuto principale

Nodo switch

Il nodo switch è progettato per instradare i messaggi in base al loro contenuto, struttura o altre condizioni. È uno strumento potente per creare logica condizionale nei flussi.


Impostazioni del nodo switch

IMG2

1. Nome

Campo per specificare il nome del nodo.
Il nome viene visualizzato nell'area di lavoro e aiuta a identificare facilmente il nodo.
Se lasciato vuoto, il nodo sarà chiamato inject.

Esempio:

  • Nome del nodo: check status

2. Proprietà

Indica quale proprietà dell'oggetto messaggio msg verrà utilizzata per controllare le condizioni.

Esempio:

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

Sono supportate anche le proprietà di contesto (flow, global) e le espressioni JSONata (iniziano con $).


3. Controllo

  • Controllo fino alla prima corrispondenza (Default):
    Il messaggio viene inviato solo alla prima uscita che soddisfa la condizione.
  • Controllo di tutte le corrispondenze:
    Il messaggio può essere inviato a più uscite se soddisfa più condizioni.

3. Regole

Definiscono la logica di instradamento. Ogni condizione è legata a una delle uscite del nodo. Il messaggio verrà inviato alla prima uscita appropriata.

Tipi di condizioni disponibili:

  • ==: Controlla l'uguaglianza del valore.
  • !=: Controlla la disuguaglianza.
  • <: Controlla se il valore è minore.
  • <=: Controlla se il valore è minore o uguale.
  • >: Controlla se il valore è maggiore.
  • >=: Controlla se il valore è maggiore o uguale.
  • has key: Controlla se l'oggetto contiene la chiave specificata.
  • between: Controlla se il valore è compreso nell'intervallo specificato (inclusivo).
  • contains: Controlla se la stringa o l'array contiene il valore specificato.
  • matches regex: Controlla se la stringa corrisponde all'espressione regolare.
  • equals true: Controlla se il valore è uguale a true.
  • equals false: Controlla se il valore è uguale a false.
  • equals null: Controlla se il valore è uguale a null.
  • not equals null: Controlla se il valore non è uguale a null.
  • is of type: Controlla se il valore corrisponde al tipo specificato (ad esempio, string, number, boolean).
  • empty: Controlla se la stringa, l'array o l'oggetto è vuoto.
  • not empty: Controlla se la stringa, l'array o l'oggetto non è vuoto.
  • else: Viene eseguito se nessuna delle altre condizioni è soddisfatta.

Esempio:

  • msg.payload è maggiore di 50

Dati di ingresso

Il nodo accetta un oggetto msg.
Quali proprietà verranno controllate è specificato nel campo Proprietà.


Dati di uscita

Il nodo invia il messaggio msg all'uscita che corrisponde alla condizione specificata.
Se il messaggio non soddisfa alcuna condizione, non viene inviato alle uscite.


Esempi di utilizzo

Esempio 1: Filtraggio dei dati di temperatura

Compito:
Dividere i dati in tre categorie: temperatura bassa, normale e alta.

Flusso:

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

Impostazioni del nodo switch:

  • Proprietà: msg.payload
  • Condizioni:
    1. is less than 10 → Uscita 1
    2. is between 10 and 30 → Uscita 2
    3. is greater than 30 → Uscita 3

Risultato:
Le temperature verranno instradate in base al loro valore.