NEWS
3 Werte vergleichen und über Switch Ausgabe gleich/ungleich
-
Hallo,
ich habe folgenden Flow:

Hierbei möchte ich an der Switch Node vergleichen, ob der Payload von Wert 1 - 3 gleich ist (Ausgang 1). Falls einer davon abweicht = Ausgang 2 am Switch.
Wie vergleiche ich das ganze? Geht das über einen JSONata-Ausdruck?

Anbei der aktuell Flow:
[ { "id": "197a11c1f440578d", "type": "tab", "label": "Flow 6", "disabled": false, "info": "", "env": [] }, { "id": "f0e9aad3a7235f24", "type": "inject", "z": "197a11c1f440578d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Wert1", "payload": "30", "payloadType": "num", "x": 440, "y": 280, "wires": [ [ "5edc115ae5058566" ] ] }, { "id": "b8e4c456e4c046f0", "type": "inject", "z": "197a11c1f440578d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Wert2", "payload": "30", "payloadType": "num", "x": 440, "y": 320, "wires": [ [ "5edc115ae5058566" ] ] }, { "id": "8fe50b86dfbc96e9", "type": "inject", "z": "197a11c1f440578d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Wert3", "payload": "30", "payloadType": "num", "x": 440, "y": 360, "wires": [ [ "5edc115ae5058566" ] ] }, { "id": "5edc115ae5058566", "type": "join", "z": "197a11c1f440578d", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "3", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 650, "y": 320, "wires": [ [] ] } ]Vielen Dank
-
Hallo,
ich habe folgenden Flow:

Hierbei möchte ich an der Switch Node vergleichen, ob der Payload von Wert 1 - 3 gleich ist (Ausgang 1). Falls einer davon abweicht = Ausgang 2 am Switch.
Wie vergleiche ich das ganze? Geht das über einen JSONata-Ausdruck?

Anbei der aktuell Flow:
[ { "id": "197a11c1f440578d", "type": "tab", "label": "Flow 6", "disabled": false, "info": "", "env": [] }, { "id": "f0e9aad3a7235f24", "type": "inject", "z": "197a11c1f440578d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Wert1", "payload": "30", "payloadType": "num", "x": 440, "y": 280, "wires": [ [ "5edc115ae5058566" ] ] }, { "id": "b8e4c456e4c046f0", "type": "inject", "z": "197a11c1f440578d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Wert2", "payload": "30", "payloadType": "num", "x": 440, "y": 320, "wires": [ [ "5edc115ae5058566" ] ] }, { "id": "8fe50b86dfbc96e9", "type": "inject", "z": "197a11c1f440578d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "Wert3", "payload": "30", "payloadType": "num", "x": 440, "y": 360, "wires": [ [ "5edc115ae5058566" ] ] }, { "id": "5edc115ae5058566", "type": "join", "z": "197a11c1f440578d", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "3", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 650, "y": 320, "wires": [ [] ] } ]Vielen Dank
Man muss alle Werte miteinander vergleichen muss aber eine AND Verknüpfung nehmen.
Wert1 = Wert2 = Wert3 funktioniert nicht, da JSONATA immer von links nach rechts arbeitet und deshalb wird hier immer falsch rauskommen, da ein Boolean true mit 30 verglichen wird. ;)
Deswegen solltest Du die Switch Node nicht die payload überprüfen lassen, sondern den JSONATA Ausdruck. ;)

Hier der Rest Deines Flows:
-
Man muss alle Werte miteinander vergleichen muss aber eine AND Verknüpfung nehmen.
Wert1 = Wert2 = Wert3 funktioniert nicht, da JSONATA immer von links nach rechts arbeitet und deshalb wird hier immer falsch rauskommen, da ein Boolean true mit 30 verglichen wird. ;)
Deswegen solltest Du die Switch Node nicht die payload überprüfen lassen, sondern den JSONATA Ausdruck. ;)

Hier der Rest Deines Flows:
-
@mickym Mega. Genau so habe ich mir die Lösung vorgestellt. Ich wusste nur nicht, wie ich das ganze im Switch Node abfragen muss. Aber vielen vielen Dank für die Antwort.
@_r_a_l_f_ sagte in 3 Werte vergleichen und über Switch Ausgabe gleich/ungleich:
@mickym Mega. Genau so habe ich mir die Lösung vorgestellt. Ich wusste nur nicht, wie ich das ganze im Switch Node abfragen muss. Aber vielen vielen Dank für die Antwort.
Hier noch eine Version, die unabhängig von der Anzahl der zu vergleichenden Werte ist.

payload.*#$i.($$.payload.*[0] = $$.payload.*[$i]) ~> $reduce(function($i, $j){$i and $j})Hier der Code:
Hier wird der ERSTE Wert mit allen anderen verglichen.
Dadurch wird ein boolesches Array mit den Ergebnissen erzeugt,
deren Elemente mit UND verknüpft werden und zum Gesamtergebnis führen.

-
@_r_a_l_f_ sagte in 3 Werte vergleichen und über Switch Ausgabe gleich/ungleich:
@mickym Mega. Genau so habe ich mir die Lösung vorgestellt. Ich wusste nur nicht, wie ich das ganze im Switch Node abfragen muss. Aber vielen vielen Dank für die Antwort.
Hier noch eine Version, die unabhängig von der Anzahl der zu vergleichenden Werte ist.

payload.*#$i.($$.payload.*[0] = $$.payload.*[$i]) ~> $reduce(function($i, $j){$i and $j})Hier der Code:
Hier wird der ERSTE Wert mit allen anderen verglichen.
Dadurch wird ein boolesches Array mit den Ergebnissen erzeugt,
deren Elemente mit UND verknüpft werden und zum Gesamtergebnis führen.

Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
