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
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 atrue
.equals false
: Controlla se il valore è uguale afalse
.equals null
: Controlla se il valore è uguale anull
.not equals null
: Controlla se il valore non è uguale anull
.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 di50
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:
is less than 10
→ Uscita 1is between 10 and 30
→ Uscita 2is greater than 30
→ Uscita 3
Risultato:
Le temperature verranno instradate in base al loro valore.