Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. 3 Werte vergleichen und über Switch Ausgabe gleich/ungleich

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    280

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    591

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

3 Werte vergleichen und über Switch Ausgabe gleich/ungleich

Geplant Angeheftet Gesperrt Verschoben Node-Red
5 Beiträge 2 Kommentatoren 420 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • _ Offline
    _ Offline
    _R_A_L_F_
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich habe folgenden Flow:
    cc7dd508-9f20-49b3-8e51-c2b5ecfb4e01-image.png

    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?
    3508db40-ef25-44c5-808a-3a054f30af4d-image.png

    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

    mickymM 1 Antwort Letzte Antwort
    0
    • _ _R_A_L_F_

      Hallo,
      ich habe folgenden Flow:
      cc7dd508-9f20-49b3-8e51-c2b5ecfb4e01-image.png

      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?
      3508db40-ef25-44c5-808a-3a054f30af4d-image.png

      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

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #2

      @_r_a_l_f_
      59822fa7-31fc-43f3-9c5b-eac84168580e-image.png

      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. ;)

      39fff191-79c7-48ea-9e63-b7a4a6bbe37c-image.png

      Hier der Rest Deines Flows:

      [
         {
             "id": "5986e9485ce40dc3",
             "type": "debug",
             "z": "197a11c1f440578d",
             "name": "wahr",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 690,
             "y": 120,
             "wires": []
         },
         {
             "id": "e9987d83609820b3",
             "type": "debug",
             "z": "197a11c1f440578d",
             "name": "falsch",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 690,
             "y": 180,
             "wires": []
         },
         {
             "id": "44eac2488650b66d",
             "type": "switch",
             "z": "197a11c1f440578d",
             "name": "",
             "property": "(payload.Wert1 = payload.Wert2) and (payload.Wert2 = payload.Wert3)",
             "propertyType": "jsonata",
             "rules": [
                 {
                     "t": "true"
                 },
                 {
                     "t": "false"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 2,
             "x": 470,
             "y": 160,
             "wires": [
                 [
                     "5986e9485ce40dc3"
                 ],
                 [
                     "e9987d83609820b3"
                 ]
             ]
         }
      ]
      

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      _ 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @_r_a_l_f_
        59822fa7-31fc-43f3-9c5b-eac84168580e-image.png

        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. ;)

        39fff191-79c7-48ea-9e63-b7a4a6bbe37c-image.png

        Hier der Rest Deines Flows:

        [
           {
               "id": "5986e9485ce40dc3",
               "type": "debug",
               "z": "197a11c1f440578d",
               "name": "wahr",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 690,
               "y": 120,
               "wires": []
           },
           {
               "id": "e9987d83609820b3",
               "type": "debug",
               "z": "197a11c1f440578d",
               "name": "falsch",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 690,
               "y": 180,
               "wires": []
           },
           {
               "id": "44eac2488650b66d",
               "type": "switch",
               "z": "197a11c1f440578d",
               "name": "",
               "property": "(payload.Wert1 = payload.Wert2) and (payload.Wert2 = payload.Wert3)",
               "propertyType": "jsonata",
               "rules": [
                   {
                       "t": "true"
                   },
                   {
                       "t": "false"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 2,
               "x": 470,
               "y": 160,
               "wires": [
                   [
                       "5986e9485ce40dc3"
                   ],
                   [
                       "e9987d83609820b3"
                   ]
               ]
           }
        ]
        

        _ Offline
        _ Offline
        _R_A_L_F_
        schrieb am zuletzt editiert von
        #3

        @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.

        mickymM 1 Antwort Letzte Antwort
        0
        • _ _R_A_L_F_

          @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.

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #4

          @_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.

          379a1132-627c-4719-a87b-575e9d118461-image.png

          payload.*#$i.($$.payload.*[0] = $$.payload.*[$i]) ~> $reduce(function($i, $j){$i and $j})
          

          Hier der Code:

          [
             {
                 "id": "7a194f84b999469f",
                 "type": "switch",
                 "z": "197a11c1f440578d",
                 "name": "AND?",
                 "property": "payload.*#$i.($$.payload.*[0] = $$.payload.*[$i]) ~> $reduce(function($i, $j){$i and $j})",
                 "propertyType": "jsonata",
                 "rules": [
                     {
                         "t": "true"
                     },
                     {
                         "t": "false"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 2,
                 "x": 630,
                 "y": 340,
                 "wires": [
                     [
                         "3c04406fef7d9523"
                     ],
                     [
                         "baf2ab75bc89e1ae"
                     ]
                 ],
                 "info": "# All properties of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n    \"Office\": true,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n    \"Office\": true,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": true,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false."
             },
             {
                 "id": "3c04406fef7d9523",
                 "type": "debug",
                 "z": "197a11c1f440578d",
                 "name": "wahr",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "payload",
                 "targetType": "msg",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 770,
                 "y": 320,
                 "wires": []
             },
             {
                 "id": "baf2ab75bc89e1ae",
                 "type": "debug",
                 "z": "197a11c1f440578d",
                 "name": "falsch",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "payload",
                 "targetType": "msg",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 770,
                 "y": 360,
                 "wires": []
             }
          ]
          

          Hier wird der ERSTE Wert mit allen anderen verglichen.
          Dadurch wird ein boolesches Array mit den Ergebnissen erzeugt,

          4e3f0f86-2b4c-426e-bb55-2bcd1e13e9de-image.png

          deren Elemente mit UND verknüpft werden und zum Gesamtergebnis führen.

          7a9f2277-6ed8-476a-b88c-6a9170d45b8f-image.png

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          _ 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @_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.

            379a1132-627c-4719-a87b-575e9d118461-image.png

            payload.*#$i.($$.payload.*[0] = $$.payload.*[$i]) ~> $reduce(function($i, $j){$i and $j})
            

            Hier der Code:

            [
               {
                   "id": "7a194f84b999469f",
                   "type": "switch",
                   "z": "197a11c1f440578d",
                   "name": "AND?",
                   "property": "payload.*#$i.($$.payload.*[0] = $$.payload.*[$i]) ~> $reduce(function($i, $j){$i and $j})",
                   "propertyType": "jsonata",
                   "rules": [
                       {
                           "t": "true"
                       },
                       {
                           "t": "false"
                       }
                   ],
                   "checkall": "true",
                   "repair": false,
                   "outputs": 2,
                   "x": 630,
                   "y": 340,
                   "wires": [
                       [
                           "3c04406fef7d9523"
                       ],
                       [
                           "baf2ab75bc89e1ae"
                       ]
                   ],
                   "info": "# All properties of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n    \"Office\": true,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n    \"Office\": true,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": true,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false."
               },
               {
                   "id": "3c04406fef7d9523",
                   "type": "debug",
                   "z": "197a11c1f440578d",
                   "name": "wahr",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 770,
                   "y": 320,
                   "wires": []
               },
               {
                   "id": "baf2ab75bc89e1ae",
                   "type": "debug",
                   "z": "197a11c1f440578d",
                   "name": "falsch",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 770,
                   "y": 360,
                   "wires": []
               }
            ]
            

            Hier wird der ERSTE Wert mit allen anderen verglichen.
            Dadurch wird ein boolesches Array mit den Ergebnissen erzeugt,

            4e3f0f86-2b4c-426e-bb55-2bcd1e13e9de-image.png

            deren Elemente mit UND verknüpft werden und zum Gesamtergebnis führen.

            7a9f2277-6ed8-476a-b88c-6a9170d45b8f-image.png

            _ Offline
            _ Offline
            _R_A_L_F_
            schrieb am zuletzt editiert von
            #5

            @mickym Absoluter Hammer. Wie man darauf nur kommt :D Das ist natürlich die Königslösung ;)

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            492

            Online

            32.5k

            Benutzer

            81.9k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe