Zum Hauptinhalt springen

Knoten switch

Der Knoten switch dient der Weiterleitung von Nachrichten basierend auf ihrem Inhalt, ihrer Struktur oder anderen Bedingungen. Dies ist ein leistungsstarkes Werkzeug zur Erstellung von bedingter Logik in Flows.


Einstellungen des Knotens switch

IMG2

1. Name

Feld zur Angabe des Knotennamens.
Der Name wird im Arbeitsbereich angezeigt und hilft, den Knoten leicht zu identifizieren.
Wenn das Feld leer bleibt, wird der Knoten inject genannt.

Beispiel:

  • Knotenname: check status

2. Property

Gibt an, welches Attribut des Nachrichtenobjekts msg zur Überprüfung der Bedingungen verwendet wird.

Beispiel:

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

Auch Umgebungsvariablen (flow, global) und JSONata-Ausdrücke (beginnen mit $) werden unterstützt.


3. Check

  • Überprüfung bis zur ersten Übereinstimmung (Standard):
    Die Nachricht wird nur an den ersten Ausgang gesendet, der die Bedingung erfüllt.
  • Überprüfung aller Übereinstimmungen:
    Die Nachricht kann an mehrere Ausgänge gesendet werden, wenn sie mehreren Bedingungen entspricht.

3. Rules

Definieren die Logik der Weiterleitung. Jede Bedingung ist einem der Ausgänge des Knotens zugeordnet. Die Nachricht wird an den ersten passenden Ausgang gesendet.

Verfügbare Bedingungstypen:

  • ==: Überprüft die Gleichheit des Wertes.
  • !=: Überprüft die Ungleichheit.
  • <: Überprüft, ob der Wert kleiner ist.
  • <=: Überprüft, ob der Wert kleiner oder gleich ist.
  • >: Überprüft, ob der Wert größer ist.
  • >=: Überprüft, ob der Wert größer oder gleich ist.
  • has key: Überprüft, ob das Objekt den angegebenen Schlüssel enthält.
  • between: Überprüft, ob der Wert im angegebenen Bereich liegt (einschließlich).
  • contains: Überprüft, ob die Zeichenkette oder das Array den angegebenen Wert enthält.
  • matches regex: Überprüft, ob die Zeichenkette dem regulären Ausdruck entspricht.
  • equals true: Überprüft, ob der Wert true ist.
  • equals false: Überprüft, ob der Wert false ist.
  • equals null: Überprüft, ob der Wert null ist.
  • not equals null: Überprüft, ob der Wert nicht null ist.
  • is of type: Überprüft, ob der Wert dem angegebenen Typ entspricht (z. B. string, number, boolean).
  • empty: Überprüft, ob die Zeichenkette, das Array oder das Objekt leer ist.
  • not empty: Überprüft, ob die Zeichenkette, das Array oder das Objekt nicht leer ist.
  • else: Wird ausgeführt, wenn keine der anderen Bedingungen erfüllt ist.

Beispiel:

  • msg.payload ist größer als 50

Eingabedaten

Der Knoten akzeptiert das Objekt msg.
Welche spezifischen Eigenschaften überprüft werden, wird im Feld Property festgelegt.


Ausgabedaten

Der Knoten sendet die Nachricht msg an den Ausgang, der der angegebenen Bedingung entspricht.
Wenn die Nachricht keiner Bedingung entspricht, wird sie nicht an die Ausgänge gesendet.


Anwendungsbeispiele

Beispiel 1: Filterung von Temperaturdaten

Aufgabe:
Die Daten in drei Kategorien unterteilen: niedrige, normale und hohe Temperatur.

Flow:

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

Einstellungen des Knotens switch:

  • Property: msg.payload
  • Bedingungen:
    1. is less than 10 → Ausgang 1
    2. is between 10 and 30 → Ausgang 2
    3. is greater than 30 → Ausgang 3

Ergebnis:
Die Temperaturen werden basierend auf ihrem Wert weitergeleitet.