Przejdź do głównej zawartości

Węzeł switch

Węzeł switch jest przeznaczony do routingu wiadomości w zależności od ich zawartości, struktury lub innych warunków. To potężne narzędzie do tworzenia logiki warunkowej w strumieniach.


Ustawienia węzła switch

IMG2

1. Nazwa

Pole do podania nazwy węzła.
Nazwa jest wyświetlana w obszarze roboczym i pomaga łatwo zidentyfikować węzeł.
Jeśli pozostawisz puste, węzeł będzie nazywał się inject.

Przykład:

  • Nazwa węzła: check status

2. Właściwość

Określa, która właściwość obiektu wiadomości msg będzie używana do sprawdzania warunków.

Przykład:

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

Obsługiwane są również właściwości środowiska (flow, global) oraz wyrażenia JSONata (zaczynające się od $).


3. Sprawdzenie

  • Sprawdzenie do pierwszego dopasowania (Domyślnie):
    Wiadomość jest wysyłana tylko na pierwszy wyjście, które spełnia warunek.
  • Sprawdzenie wszystkich dopasowań:
    Wiadomość może być wysyłana na kilka wyjść, jeśli spełnia kilka warunków.

3. Reguły

Określają logikę routingu. Każdy warunek jest przypisany do jednego z wyjść węzła. Wiadomość zostanie wysłana na pierwsze odpowiednie wyjście.

Dostępne typy warunków:

  • ==: Sprawdza równość wartości.
  • !=: Sprawdza nierówność.
  • <: Sprawdza, czy wartość jest mniejsza.
  • <=: Sprawdza, czy wartość jest mniejsza lub równa.
  • >: Sprawdza, czy wartość jest większa.
  • >=: Sprawdza, czy wartość jest większa lub równa.
  • has key: Sprawdza, czy obiekt zawiera określony klucz.
  • between: Sprawdza, czy wartość znajduje się w określonym zakresie (włącznie).
  • contains: Sprawdza, czy ciąg lub tablica zawiera określoną wartość.
  • matches regex: Sprawdza, czy ciąg odpowiada wyrażeniu regularnemu.
  • equals true: Sprawdza, czy wartość jest równa true.
  • equals false: Sprawdza, czy wartość jest równa false.
  • equals null: Sprawdza, czy wartość jest równa null.
  • not equals null: Sprawdza, czy wartość nie jest równa null.
  • is of type: Sprawdza, czy wartość odpowiada określonemu typowi (np. string, number, boolean).
  • empty: Sprawdza, czy ciąg, tablica lub obiekt jest pusty.
  • not empty: Sprawdza, czy ciąg, tablica lub obiekt nie jest pusty.
  • else: Wykonywane, jeśli żaden z innych warunków nie jest spełniony.

Przykład:

  • msg.payload jest większe niż 50

Wejście

Węzeł przyjmuje obiekt msg.
Jakie właściwości będą sprawdzane, określa pole Właściwość.


Wyjście

Węzeł wysyła wiadomość msg na to wyjście, które odpowiada określonemu warunkowi.
Jeśli wiadomość nie spełnia żadnego warunku, nie jest wysyłana na wyjścia.


Przykłady użycia

Przykład 1: Filtrowanie danych temperatury

Zadanie:
Podzielić dane na trzy kategorie: niska, normalna i wysoka temperatura.

Strumień:

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

Ustawienia węzła switch:

  • Właściwość: msg.payload
  • Warunki:
    1. is less than 10 → Wyjście 1
    2. is between 10 and 30 → Wyjście 2
    3. is greater than 30 → Wyjście 3

Wynik:
Temperatury będą routowane w zależności od ich wartości.