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. Eingangsmultiplexer?

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Eingangsmultiplexer?

Geplant Angeheftet Gesperrt Verschoben Node-Red
29 Beiträge 3 Kommentatoren 2.4k Aufrufe 3 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.
  • M MyioBroker

    doppelt, gelöscht

    mickymM Offline
    mickymM Offline
    mickym
    Most Active
    schrieb am zuletzt editiert von
    #20

    @myiobroker ???

    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.

    M 1 Antwort Letzte Antwort
    0
    • mickymM mickym

      @myiobroker ???

      M Offline
      M Offline
      MyioBroker
      schrieb am zuletzt editiert von MyioBroker
      #21

      @mickym Hallo, die letzten Aktionen mit meinen mehrfachen Antworten habe ich nicht ganz verstanden? :-( sind aber gelöscht
      Habe mich mit den unterschiedlichen Variablen und deren Gültigkeit beschäftigt aber bei einer "Einfachen(?)" if Abfrage scheitert es wieder :-( Der Ringzähler ist recht kompliziert geworden, also besser einfach, eine Taste erhöht den Wert von flow.switch und die andere bewirkt ein decremet. Soweit so gut aber if (x >5 ) {....} z.B. wird schon als Fehler deklariert. Das ganze soll sich ja in einem definierten Bereich abspielen. Kann mir nicht vorstellen, das es diese Abfrage so kompliziert ist? Syntax- oder Denkfehler? Inzwischen geht es aber auch ohne Funktion-Node :-)

      M mickymM 2 Antworten Letzte Antwort
      0
      • M MyioBroker

        @mickym Hallo, die letzten Aktionen mit meinen mehrfachen Antworten habe ich nicht ganz verstanden? :-( sind aber gelöscht
        Habe mich mit den unterschiedlichen Variablen und deren Gültigkeit beschäftigt aber bei einer "Einfachen(?)" if Abfrage scheitert es wieder :-( Der Ringzähler ist recht kompliziert geworden, also besser einfach, eine Taste erhöht den Wert von flow.switch und die andere bewirkt ein decremet. Soweit so gut aber if (x >5 ) {....} z.B. wird schon als Fehler deklariert. Das ganze soll sich ja in einem definierten Bereich abspielen. Kann mir nicht vorstellen, das es diese Abfrage so kompliziert ist? Syntax- oder Denkfehler? Inzwischen geht es aber auch ohne Funktion-Node :-)

        M Offline
        M Offline
        MyioBroker
        schrieb am zuletzt editiert von
        #22

        @myiobroker Das mit den "link-Nodes" funktioniert auch, aber in Bezug auf die Anzeige gibt es da immer irgendwelche "(Laufzeit-?) Effekte" so das ich das ganze schon auf einen Flow begrenzen möchte. Auch mit diversen delay Anweisungen spinnt die Anzeige hin und wieder-

        1 Antwort Letzte Antwort
        0
        • M MyioBroker

          @mickym Hallo, die letzten Aktionen mit meinen mehrfachen Antworten habe ich nicht ganz verstanden? :-( sind aber gelöscht
          Habe mich mit den unterschiedlichen Variablen und deren Gültigkeit beschäftigt aber bei einer "Einfachen(?)" if Abfrage scheitert es wieder :-( Der Ringzähler ist recht kompliziert geworden, also besser einfach, eine Taste erhöht den Wert von flow.switch und die andere bewirkt ein decremet. Soweit so gut aber if (x >5 ) {....} z.B. wird schon als Fehler deklariert. Das ganze soll sich ja in einem definierten Bereich abspielen. Kann mir nicht vorstellen, das es diese Abfrage so kompliziert ist? Syntax- oder Denkfehler? Inzwischen geht es aber auch ohne Funktion-Node :-)

          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #23

          @myiobroker sagte in Eingangsmultiplexer?:

          Habe mich mit den unterschiedlichen Variablen und deren Gültigkeit beschäftigt aber bei einer "Einfachen(?)" if Abfrage scheitert es wieder Der Ringzähler ist recht kompliziert geworden, also besser einfach, eine Taste erhöht den Wert von flow.switch und die andere bewirkt ein decremet. Soweit so gut aber if (x >5 ) {....} z.B. wird schon als Fehler deklariert. Das ganze soll sich ja in einem definierten Bereich abspielen. Kann mir nicht vorstellen, das es diese Abfrage so kompliziert ist? Syntax- oder Denkfehler? Inzwischen geht es aber auch ohne Funktion-Node

          Das sehe ich nicht was Du machst - bitte Screenshot oder Flow - keine Ahnung - ansonsten If Abfragen - wenn Du nicht programmieren willst - dafür gibts switch Nodes.

          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.

          M 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @myiobroker sagte in Eingangsmultiplexer?:

            Habe mich mit den unterschiedlichen Variablen und deren Gültigkeit beschäftigt aber bei einer "Einfachen(?)" if Abfrage scheitert es wieder Der Ringzähler ist recht kompliziert geworden, also besser einfach, eine Taste erhöht den Wert von flow.switch und die andere bewirkt ein decremet. Soweit so gut aber if (x >5 ) {....} z.B. wird schon als Fehler deklariert. Das ganze soll sich ja in einem definierten Bereich abspielen. Kann mir nicht vorstellen, das es diese Abfrage so kompliziert ist? Syntax- oder Denkfehler? Inzwischen geht es aber auch ohne Funktion-Node

            Das sehe ich nicht was Du machst - bitte Screenshot oder Flow - keine Ahnung - ansonsten If Abfragen - wenn Du nicht programmieren willst - dafür gibts switch Nodes.

            M Offline
            M Offline
            MyioBroker
            schrieb am zuletzt editiert von
            #24

            @mickym Hallo :-) konnte mich mit meinem Projekt nicht wirklich weiter beschäftigen, aber es sieht schon ganz gut aus. Nun scheiter ich an einem wahrscheinlich (?) trivialen Problem. Ich möchte in einem Change Node alle Payloadwerte der "Entertaste" >0 auf 0 setzen. Die negativen Werte (es sind bis jetzt nur Zwei) aber entsprechend ändern (z.B -1 auf -3 und -2 auf -4, das sind bei mir die "Steuerdialoge" für Reset und ShutDown). Klappt prima mit dem Change-Dialog im Change-Node und bei zwei bis drei "Werten" wohl auch so "sauber" machbar ;-)
            Die positiven Werte stehen für jeweils eine "Seite" in einer 2 x 16 Matrix mit diversen Informationen (Spannung, Strom, Leistung etc.) Hier will ich mit der "Entertaste" erstmal einfach nur auf die Seite "0" zurückspringen. Da bietet sich offenbar die RegEx Funktion im Change-Dialog des ChangeNode an aber es funktioniert einfach nicht (z.B. /^([1-9][0-9]*)$/) oder
            oder es gibt eine Fehlermeldung mit "$if(payload > 0, 0, payload)" im Set-Mode und jsonata"-Modus.
            Für >10 positive Payloadwerte wäre es doch nicht Sinnvoll für jede Zahl die gleiche Abfrage mit "Set" zu machen :-(
            Ist es nur eine Syntaxfrage oder liege ich hier mal wieder in einer "Denkschleife"?
            Die Codevorschläge habe ich übrigens aus Chat GPT, da sieht es meistens sehr plausibel aus :thinking_face:

            mickymM 1 Antwort Letzte Antwort
            0
            • M MyioBroker

              @mickym Hallo :-) konnte mich mit meinem Projekt nicht wirklich weiter beschäftigen, aber es sieht schon ganz gut aus. Nun scheiter ich an einem wahrscheinlich (?) trivialen Problem. Ich möchte in einem Change Node alle Payloadwerte der "Entertaste" >0 auf 0 setzen. Die negativen Werte (es sind bis jetzt nur Zwei) aber entsprechend ändern (z.B -1 auf -3 und -2 auf -4, das sind bei mir die "Steuerdialoge" für Reset und ShutDown). Klappt prima mit dem Change-Dialog im Change-Node und bei zwei bis drei "Werten" wohl auch so "sauber" machbar ;-)
              Die positiven Werte stehen für jeweils eine "Seite" in einer 2 x 16 Matrix mit diversen Informationen (Spannung, Strom, Leistung etc.) Hier will ich mit der "Entertaste" erstmal einfach nur auf die Seite "0" zurückspringen. Da bietet sich offenbar die RegEx Funktion im Change-Dialog des ChangeNode an aber es funktioniert einfach nicht (z.B. /^([1-9][0-9]*)$/) oder
              oder es gibt eine Fehlermeldung mit "$if(payload > 0, 0, payload)" im Set-Mode und jsonata"-Modus.
              Für >10 positive Payloadwerte wäre es doch nicht Sinnvoll für jede Zahl die gleiche Abfrage mit "Set" zu machen :-(
              Ist es nur eine Syntaxfrage oder liege ich hier mal wieder in einer "Denkschleife"?
              Die Codevorschläge habe ich übrigens aus Chat GPT, da sieht es meistens sehr plausibel aus :thinking_face:

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #25

              @myiobroker In der Regel machst Du das nicht mit einer Change Node alleine, sondern mit einer Switch Node und mehreren Change Nodes. Das entlastet Dich auf jeden Fall und reduziert die Komplexität in den Change Nodes - da bereits Nachrichten im Vorfeld aussortiert wurden. Sprich Du setzt die payload aller Nachrichten deren payload >= 0 ist auf 0 und bei negativen payload verringerst Du diese um -2. ;)

              1. Empfohlenes Vorgehen:

              e00db72d-b0c9-4fa3-8a78-c067859e47c5-image.png

              Durch das Setzen nach der ersten Regelübereinstimmung stoppen kann man das noch feiner granulieren und spezifische Fälle weiter vorne abarbeiten. So kannst Du in der Switch Node bei einer positiven Zahl eine andere Vorgehensweise wählen und trotzdem falls es eine andere positive Zahl ist noch auf 0 setzen.

              Anhand des Screenshots siehst Du nun - dass alle positiven Werten an den Ausgang 1 gesendet werden, alle negativen Werte an den Ausgang 2. Nun können wir also mit 2 Change Nodes einfach die payload auf 0 bzw. auf payload - 2 setzen.

              Ob Du das Ergebnis dann wieder zusammenfasst, wie in meinem Beispielflow - das ist eine andere Geschichte,

              a19dc814-224e-406a-a7f3-c63b837f56c1-image.png

              Ein weiterer Vorteil der Switch Node für Bedinungen sind auch dass man für Zahlen Bereiche definieren kann:

              2382c89d-f419-4cc8-bf85-b0ba99fe596e-image.png

              Also hier .- schicke alle Nachrichten zwischen 0 und 5 an den Ausgang 1 usw.

              1. RegEx - mit Change Node

              Das ist schon vom Ansatz aus 2 Gründen falsch:

              • RegEx funktioniert nur, wenn man das Ganze als Strings behandelt, man müsste also erst in Strings, dann wieder in Zahlen umwandeln.
              • Ein RegEx matched oder matched nicht und dann kannst Du nur ein fixen Wert setzen, du willst aber bei negativen Werten 2 abziehen.

              Wenn Du aber mit RegEx arbeiten willst (also in String umwandelst), weil Du dann zum Beispiel bestimmte Steuercodes anders behandelt willst, dann kannst Du das wieder in Kombination mit einer Switch Node machen. Der Vorteil hier ist, dass man die payload nur zur Analyse in einen String umwandelt.

              b1204685-e11a-477a-8167-4610b69b4157-image.png

              1. JSONATA funktioniert - weiß aber nicht woher Du diese Syntax hast - hier musst Du aber aufpassen, dass Du nicht wieder ins codieren kommst und bei mehrfachen Bedingungen wird das sehr unübersichtlich. Eine $if Funktion kenne ich in JSONATA nicht. Die einzige Möglichkeite Bedingungen zu formulieren ist den Bedingungsoperator ? zu nutzen.

              b7c2f883-022d-40ab-bb1f-98a50893969c-image.png

              Also:

              payload >= 0 ? 0 : payload - 2
              

              4e21c37b-99ee-42b1-9959-0d761adc7c6c-image.png

              Hier mal alle Beispiele zum Probieren:

              [
                 {
                     "id": "1d32bc03fdc515dc",
                     "type": "switch",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "property": "payload",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "gte",
                             "v": "0",
                             "vt": "num"
                         },
                         {
                             "t": "lt",
                             "v": "0",
                             "vt": "num"
                         }
                     ],
                     "checkall": "false",
                     "repair": false,
                     "outputs": 2,
                     "x": 390,
                     "y": 2600,
                     "wires": [
                         [
                             "e85b8517c1cbf042"
                         ],
                         [
                             "c6a1e0b43e566934"
                         ]
                     ]
                 },
                 {
                     "id": "e85b8517c1cbf042",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "setze 0",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "0",
                             "tot": "num"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 580,
                     "y": 2580,
                     "wires": [
                         [
                             "d764781a1ee41e39"
                         ]
                     ]
                 },
                 {
                     "id": "c6a1e0b43e566934",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "verringere um 2",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload - 2",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 580,
                     "y": 2620,
                     "wires": [
                         [
                             "d764781a1ee41e39"
                         ]
                     ]
                 },
                 {
                     "id": "d764781a1ee41e39",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "Ergebnis",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 780,
                     "y": 2600,
                     "wires": []
                 },
                 {
                     "id": "0649d4923f8fba46",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "3",
                     "payloadType": "num",
                     "x": 210,
                     "y": 2560,
                     "wires": [
                         [
                             "1d32bc03fdc515dc"
                         ]
                     ]
                 },
                 {
                     "id": "2366a9adf3e62193",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "-1",
                     "payloadType": "num",
                     "x": 210,
                     "y": 2620,
                     "wires": [
                         [
                             "1d32bc03fdc515dc"
                         ]
                     ]
                 },
                 {
                     "id": "2a509c433806b76b",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "Ergebnis JSONATA",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 710,
                     "y": 3020,
                     "wires": []
                 },
                 {
                     "id": "2e584db564fb7252",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "3",
                     "payloadType": "num",
                     "x": 210,
                     "y": 3000,
                     "wires": [
                         [
                             "f09adfda10e76f11"
                         ]
                     ]
                 },
                 {
                     "id": "92cdf991baaf6d7b",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "-1",
                     "payloadType": "num",
                     "x": 210,
                     "y": 3060,
                     "wires": [
                         [
                             "f09adfda10e76f11"
                         ]
                     ]
                 },
                 {
                     "id": "9aa12ab2cd5ee494",
                     "type": "comment",
                     "z": "7e6af0015415146d",
                     "name": "Normale Vorgehensweise",
                     "info": "",
                     "x": 210,
                     "y": 2480,
                     "wires": []
                 },
                 {
                     "id": "f09adfda10e76f11",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "Change Node mit JSONATA",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload >= 0 ? 0 : payload - 2",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 460,
                     "y": 3020,
                     "wires": [
                         [
                             "2a509c433806b76b"
                         ]
                     ]
                 },
                 {
                     "id": "8fdd6e49709fa68c",
                     "type": "comment",
                     "z": "7e6af0015415146d",
                     "name": "JSONATA",
                     "info": "",
                     "x": 180,
                     "y": 2940,
                     "wires": []
                 },
                 {
                     "id": "235b4dbf57c0ac2e",
                     "type": "comment",
                     "z": "7e6af0015415146d",
                     "name": "RegEx",
                     "info": "",
                     "x": 170,
                     "y": 2720,
                     "wires": []
                 },
                 {
                     "id": "b055685e0374d29b",
                     "type": "switch",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "property": "$string(payload)",
                     "propertyType": "jsonata",
                     "rules": [
                         {
                             "t": "regex",
                             "v": "^\\d+$",
                             "vt": "str",
                             "case": false
                         },
                         {
                             "t": "regex",
                             "v": "^-\\d+$",
                             "vt": "str",
                             "case": false
                         }
                     ],
                     "checkall": "false",
                     "repair": false,
                     "outputs": 2,
                     "x": 370,
                     "y": 2820,
                     "wires": [
                         [
                             "a8dbb487697dff7a"
                         ],
                         [
                             "958483cb434427fa"
                         ]
                     ]
                 },
                 {
                     "id": "a8dbb487697dff7a",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "setze 0",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "0",
                             "tot": "num"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 560,
                     "y": 2800,
                     "wires": [
                         [
                             "043f4b6a0b3a5766"
                         ]
                     ]
                 },
                 {
                     "id": "958483cb434427fa",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "verringere um 2",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload - 2",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 560,
                     "y": 2840,
                     "wires": [
                         [
                             "043f4b6a0b3a5766"
                         ]
                     ]
                 },
                 {
                     "id": "043f4b6a0b3a5766",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "Ergebnis mit RegEx",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 800,
                     "y": 2820,
                     "wires": []
                 },
                 {
                     "id": "731e10c3a246ea84",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "3",
                     "payloadType": "num",
                     "x": 190,
                     "y": 2780,
                     "wires": [
                         [
                             "b055685e0374d29b"
                         ]
                     ]
                 },
                 {
                     "id": "06edab9528cf2379",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "-1",
                     "payloadType": "num",
                     "x": 190,
                     "y": 2840,
                     "wires": [
                         [
                             "b055685e0374d29b"
                         ]
                     ]
                 }
              ]
              

              Ein letzte Möglichkeit mit JSONATA und fixen Werten kann man mit Übersetzungsobjekten erreichen.

              0d344e57-9335-442d-b001-c0816a28c6d4-image.png

              In diesem Fall definiere ich also jede Zahl als Schlüssel eines Objektes (ich hab es hier mal translate genannt)- 1.Regel. Die payload wird nun über einen Konvertierung zum String und durchsucht das Objekt nachdem entsprechenden Key. -2.Regel
              Die 3.Regel kann man verwenden, um einen Defaultwert zu setzen, wenn ein Wert nicht in der Tabelle enthalten ist.

              [
                 {
                     "id": "d72c33c5f9a3ae48",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "translate",
                             "pt": "msg",
                             "to": "{\"3\":0,\"-1\":-3,\"-2\":-4}",
                             "tot": "json"
                         },
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "$lookup(translate, $string(payload))\t",
                             "tot": "jsonata"
                         },
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "$not($exists(payload))? 0 : payload\t",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 390,
                     "y": 3200,
                     "wires": [
                         [
                             "078c75417a994742"
                         ]
                     ]
                 },
                 {
                     "id": "a78a7970d2b7e564",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "3",
                     "payloadType": "num",
                     "x": 190,
                     "y": 3160,
                     "wires": [
                         [
                             "d72c33c5f9a3ae48"
                         ]
                     ]
                 },
                 {
                     "id": "253464a6e7f4d63c",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "-1",
                     "payloadType": "num",
                     "x": 190,
                     "y": 3220,
                     "wires": [
                         [
                             "d72c33c5f9a3ae48"
                         ]
                     ]
                 },
                 {
                     "id": "078c75417a994742",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "Übersetzungstabelle",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 620,
                     "y": 3200,
                     "wires": []
                 }
              ]
              

              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.

              M 2 Antworten Letzte Antwort
              0
              • mickymM mickym

                @myiobroker In der Regel machst Du das nicht mit einer Change Node alleine, sondern mit einer Switch Node und mehreren Change Nodes. Das entlastet Dich auf jeden Fall und reduziert die Komplexität in den Change Nodes - da bereits Nachrichten im Vorfeld aussortiert wurden. Sprich Du setzt die payload aller Nachrichten deren payload >= 0 ist auf 0 und bei negativen payload verringerst Du diese um -2. ;)

                1. Empfohlenes Vorgehen:

                e00db72d-b0c9-4fa3-8a78-c067859e47c5-image.png

                Durch das Setzen nach der ersten Regelübereinstimmung stoppen kann man das noch feiner granulieren und spezifische Fälle weiter vorne abarbeiten. So kannst Du in der Switch Node bei einer positiven Zahl eine andere Vorgehensweise wählen und trotzdem falls es eine andere positive Zahl ist noch auf 0 setzen.

                Anhand des Screenshots siehst Du nun - dass alle positiven Werten an den Ausgang 1 gesendet werden, alle negativen Werte an den Ausgang 2. Nun können wir also mit 2 Change Nodes einfach die payload auf 0 bzw. auf payload - 2 setzen.

                Ob Du das Ergebnis dann wieder zusammenfasst, wie in meinem Beispielflow - das ist eine andere Geschichte,

                a19dc814-224e-406a-a7f3-c63b837f56c1-image.png

                Ein weiterer Vorteil der Switch Node für Bedinungen sind auch dass man für Zahlen Bereiche definieren kann:

                2382c89d-f419-4cc8-bf85-b0ba99fe596e-image.png

                Also hier .- schicke alle Nachrichten zwischen 0 und 5 an den Ausgang 1 usw.

                1. RegEx - mit Change Node

                Das ist schon vom Ansatz aus 2 Gründen falsch:

                • RegEx funktioniert nur, wenn man das Ganze als Strings behandelt, man müsste also erst in Strings, dann wieder in Zahlen umwandeln.
                • Ein RegEx matched oder matched nicht und dann kannst Du nur ein fixen Wert setzen, du willst aber bei negativen Werten 2 abziehen.

                Wenn Du aber mit RegEx arbeiten willst (also in String umwandelst), weil Du dann zum Beispiel bestimmte Steuercodes anders behandelt willst, dann kannst Du das wieder in Kombination mit einer Switch Node machen. Der Vorteil hier ist, dass man die payload nur zur Analyse in einen String umwandelt.

                b1204685-e11a-477a-8167-4610b69b4157-image.png

                1. JSONATA funktioniert - weiß aber nicht woher Du diese Syntax hast - hier musst Du aber aufpassen, dass Du nicht wieder ins codieren kommst und bei mehrfachen Bedingungen wird das sehr unübersichtlich. Eine $if Funktion kenne ich in JSONATA nicht. Die einzige Möglichkeite Bedingungen zu formulieren ist den Bedingungsoperator ? zu nutzen.

                b7c2f883-022d-40ab-bb1f-98a50893969c-image.png

                Also:

                payload >= 0 ? 0 : payload - 2
                

                4e21c37b-99ee-42b1-9959-0d761adc7c6c-image.png

                Hier mal alle Beispiele zum Probieren:

                [
                   {
                       "id": "1d32bc03fdc515dc",
                       "type": "switch",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "gte",
                               "v": "0",
                               "vt": "num"
                           },
                           {
                               "t": "lt",
                               "v": "0",
                               "vt": "num"
                           }
                       ],
                       "checkall": "false",
                       "repair": false,
                       "outputs": 2,
                       "x": 390,
                       "y": 2600,
                       "wires": [
                           [
                               "e85b8517c1cbf042"
                           ],
                           [
                               "c6a1e0b43e566934"
                           ]
                       ]
                   },
                   {
                       "id": "e85b8517c1cbf042",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "setze 0",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "0",
                               "tot": "num"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 580,
                       "y": 2580,
                       "wires": [
                           [
                               "d764781a1ee41e39"
                           ]
                       ]
                   },
                   {
                       "id": "c6a1e0b43e566934",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "verringere um 2",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload - 2",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 580,
                       "y": 2620,
                       "wires": [
                           [
                               "d764781a1ee41e39"
                           ]
                       ]
                   },
                   {
                       "id": "d764781a1ee41e39",
                       "type": "debug",
                       "z": "7e6af0015415146d",
                       "name": "Ergebnis",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 780,
                       "y": 2600,
                       "wires": []
                   },
                   {
                       "id": "0649d4923f8fba46",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "3",
                       "payloadType": "num",
                       "x": 210,
                       "y": 2560,
                       "wires": [
                           [
                               "1d32bc03fdc515dc"
                           ]
                       ]
                   },
                   {
                       "id": "2366a9adf3e62193",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "-1",
                       "payloadType": "num",
                       "x": 210,
                       "y": 2620,
                       "wires": [
                           [
                               "1d32bc03fdc515dc"
                           ]
                       ]
                   },
                   {
                       "id": "2a509c433806b76b",
                       "type": "debug",
                       "z": "7e6af0015415146d",
                       "name": "Ergebnis JSONATA",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 710,
                       "y": 3020,
                       "wires": []
                   },
                   {
                       "id": "2e584db564fb7252",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "3",
                       "payloadType": "num",
                       "x": 210,
                       "y": 3000,
                       "wires": [
                           [
                               "f09adfda10e76f11"
                           ]
                       ]
                   },
                   {
                       "id": "92cdf991baaf6d7b",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "-1",
                       "payloadType": "num",
                       "x": 210,
                       "y": 3060,
                       "wires": [
                           [
                               "f09adfda10e76f11"
                           ]
                       ]
                   },
                   {
                       "id": "9aa12ab2cd5ee494",
                       "type": "comment",
                       "z": "7e6af0015415146d",
                       "name": "Normale Vorgehensweise",
                       "info": "",
                       "x": 210,
                       "y": 2480,
                       "wires": []
                   },
                   {
                       "id": "f09adfda10e76f11",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "Change Node mit JSONATA",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload >= 0 ? 0 : payload - 2",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 460,
                       "y": 3020,
                       "wires": [
                           [
                               "2a509c433806b76b"
                           ]
                       ]
                   },
                   {
                       "id": "8fdd6e49709fa68c",
                       "type": "comment",
                       "z": "7e6af0015415146d",
                       "name": "JSONATA",
                       "info": "",
                       "x": 180,
                       "y": 2940,
                       "wires": []
                   },
                   {
                       "id": "235b4dbf57c0ac2e",
                       "type": "comment",
                       "z": "7e6af0015415146d",
                       "name": "RegEx",
                       "info": "",
                       "x": 170,
                       "y": 2720,
                       "wires": []
                   },
                   {
                       "id": "b055685e0374d29b",
                       "type": "switch",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "property": "$string(payload)",
                       "propertyType": "jsonata",
                       "rules": [
                           {
                               "t": "regex",
                               "v": "^\\d+$",
                               "vt": "str",
                               "case": false
                           },
                           {
                               "t": "regex",
                               "v": "^-\\d+$",
                               "vt": "str",
                               "case": false
                           }
                       ],
                       "checkall": "false",
                       "repair": false,
                       "outputs": 2,
                       "x": 370,
                       "y": 2820,
                       "wires": [
                           [
                               "a8dbb487697dff7a"
                           ],
                           [
                               "958483cb434427fa"
                           ]
                       ]
                   },
                   {
                       "id": "a8dbb487697dff7a",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "setze 0",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "0",
                               "tot": "num"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 560,
                       "y": 2800,
                       "wires": [
                           [
                               "043f4b6a0b3a5766"
                           ]
                       ]
                   },
                   {
                       "id": "958483cb434427fa",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "verringere um 2",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload - 2",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 560,
                       "y": 2840,
                       "wires": [
                           [
                               "043f4b6a0b3a5766"
                           ]
                       ]
                   },
                   {
                       "id": "043f4b6a0b3a5766",
                       "type": "debug",
                       "z": "7e6af0015415146d",
                       "name": "Ergebnis mit RegEx",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 800,
                       "y": 2820,
                       "wires": []
                   },
                   {
                       "id": "731e10c3a246ea84",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "3",
                       "payloadType": "num",
                       "x": 190,
                       "y": 2780,
                       "wires": [
                           [
                               "b055685e0374d29b"
                           ]
                       ]
                   },
                   {
                       "id": "06edab9528cf2379",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "-1",
                       "payloadType": "num",
                       "x": 190,
                       "y": 2840,
                       "wires": [
                           [
                               "b055685e0374d29b"
                           ]
                       ]
                   }
                ]
                

                Ein letzte Möglichkeit mit JSONATA und fixen Werten kann man mit Übersetzungsobjekten erreichen.

                0d344e57-9335-442d-b001-c0816a28c6d4-image.png

                In diesem Fall definiere ich also jede Zahl als Schlüssel eines Objektes (ich hab es hier mal translate genannt)- 1.Regel. Die payload wird nun über einen Konvertierung zum String und durchsucht das Objekt nachdem entsprechenden Key. -2.Regel
                Die 3.Regel kann man verwenden, um einen Defaultwert zu setzen, wenn ein Wert nicht in der Tabelle enthalten ist.

                [
                   {
                       "id": "d72c33c5f9a3ae48",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "translate",
                               "pt": "msg",
                               "to": "{\"3\":0,\"-1\":-3,\"-2\":-4}",
                               "tot": "json"
                           },
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "$lookup(translate, $string(payload))\t",
                               "tot": "jsonata"
                           },
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "$not($exists(payload))? 0 : payload\t",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 390,
                       "y": 3200,
                       "wires": [
                           [
                               "078c75417a994742"
                           ]
                       ]
                   },
                   {
                       "id": "a78a7970d2b7e564",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "3",
                       "payloadType": "num",
                       "x": 190,
                       "y": 3160,
                       "wires": [
                           [
                               "d72c33c5f9a3ae48"
                           ]
                       ]
                   },
                   {
                       "id": "253464a6e7f4d63c",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "-1",
                       "payloadType": "num",
                       "x": 190,
                       "y": 3220,
                       "wires": [
                           [
                               "d72c33c5f9a3ae48"
                           ]
                       ]
                   },
                   {
                       "id": "078c75417a994742",
                       "type": "debug",
                       "z": "7e6af0015415146d",
                       "name": "Übersetzungstabelle",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 620,
                       "y": 3200,
                       "wires": []
                   }
                ]
                

                M Offline
                M Offline
                MyioBroker
                schrieb am zuletzt editiert von MyioBroker
                #26

                @mickym Hallo :+1: auch diesmal vielen Dank für die schnelle Antwort :-) Das begrenzen der Payload auf Werte <=0 erscheint erst mal ein triviales "Problem" zu sein und ist es offenbar auch, wenn man den Lösungsweg weis ;-) Der Change-Node bietet ja einige Wege an, so dass ich das mit dem Switch-Node gar nicht erst in Erwägung gezogen habe und das man die Ausgänge dann auch wieder einfach vereinen kann sollte man natürlich auch nicht vergessen! Wieder was gelernt um es sich nicht unnötig schwer zu machen :-)
                Das mit den RegEx hat mich schon in anderen Anwendungen fasziniert, wie man mit scheinbar kryptischen Zeichenfolgen komplexe Abfragen machen kann, aber das es eben auch Strings sein müssen muss man halt berücksichtigen, nun weiß ich es erst mal wieder ;-)
                Als Lösung ist aber erst mal die JSONATA Variante (payload >=0 ? 0 : payload-2) genau das geworden was ich gesucht habe :-) Ein Change-Node mit nur einer Regel :-) Es sind allerdings zwei, ich übernehme zuerst natürlich den aktuellen Stand aus dem Wert von flow.switch (Variable für jeweils aktuelle Seite) für msg.payload.
                Solange ich bei den "positiven" Seiten keine "richtige" Anwendung für "Enter" habe (Es soll ja "nur" eine Anzeige der verschiedenen Messwerte sein) reicht es mir auf Seite 0 zu springen um ggf. einen definierten Anzeigezustand zu haben.
                Bei den "negativen" Seiten will ich gezielt "Runterfahren" bzw. "Neustarten" da der RasbPi das ja nicht wirklich hardwaremäßig kann und die SD-Karte nicht unbedingt im falschen Moment "gestreßt" werden sollte, muss man ja nicht im Experimentierstadium noch forcieren!
                Seite -1 und -2 fragen ab ob ich es wirklich möchte (?) und mit "Enter" springe ich zwei Seiten runter wo diese Funktionen an den Ausgängen eines Switch-Node entsprechend verankert sind. Denke das es eine nützliche Funktion ist so wie auch das "Rücksetzen" des Nodes "Pi-LCD" bei "jeder" (?) Gelegenheit (msg.payload => clr:). Es gibt offenbar "Probleme" mit der Anzeige wenn die Syntax bei der Ansteuerung nicht eingehalten wird, was beim "Experimentieren" ja allemal vorkommen kann!
                Deine anderen Tipps werde ich mir noch mal anschauen und sicher auch in das Projekt einfließen lassen :-)

                1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @myiobroker In der Regel machst Du das nicht mit einer Change Node alleine, sondern mit einer Switch Node und mehreren Change Nodes. Das entlastet Dich auf jeden Fall und reduziert die Komplexität in den Change Nodes - da bereits Nachrichten im Vorfeld aussortiert wurden. Sprich Du setzt die payload aller Nachrichten deren payload >= 0 ist auf 0 und bei negativen payload verringerst Du diese um -2. ;)

                  1. Empfohlenes Vorgehen:

                  e00db72d-b0c9-4fa3-8a78-c067859e47c5-image.png

                  Durch das Setzen nach der ersten Regelübereinstimmung stoppen kann man das noch feiner granulieren und spezifische Fälle weiter vorne abarbeiten. So kannst Du in der Switch Node bei einer positiven Zahl eine andere Vorgehensweise wählen und trotzdem falls es eine andere positive Zahl ist noch auf 0 setzen.

                  Anhand des Screenshots siehst Du nun - dass alle positiven Werten an den Ausgang 1 gesendet werden, alle negativen Werte an den Ausgang 2. Nun können wir also mit 2 Change Nodes einfach die payload auf 0 bzw. auf payload - 2 setzen.

                  Ob Du das Ergebnis dann wieder zusammenfasst, wie in meinem Beispielflow - das ist eine andere Geschichte,

                  a19dc814-224e-406a-a7f3-c63b837f56c1-image.png

                  Ein weiterer Vorteil der Switch Node für Bedinungen sind auch dass man für Zahlen Bereiche definieren kann:

                  2382c89d-f419-4cc8-bf85-b0ba99fe596e-image.png

                  Also hier .- schicke alle Nachrichten zwischen 0 und 5 an den Ausgang 1 usw.

                  1. RegEx - mit Change Node

                  Das ist schon vom Ansatz aus 2 Gründen falsch:

                  • RegEx funktioniert nur, wenn man das Ganze als Strings behandelt, man müsste also erst in Strings, dann wieder in Zahlen umwandeln.
                  • Ein RegEx matched oder matched nicht und dann kannst Du nur ein fixen Wert setzen, du willst aber bei negativen Werten 2 abziehen.

                  Wenn Du aber mit RegEx arbeiten willst (also in String umwandelst), weil Du dann zum Beispiel bestimmte Steuercodes anders behandelt willst, dann kannst Du das wieder in Kombination mit einer Switch Node machen. Der Vorteil hier ist, dass man die payload nur zur Analyse in einen String umwandelt.

                  b1204685-e11a-477a-8167-4610b69b4157-image.png

                  1. JSONATA funktioniert - weiß aber nicht woher Du diese Syntax hast - hier musst Du aber aufpassen, dass Du nicht wieder ins codieren kommst und bei mehrfachen Bedingungen wird das sehr unübersichtlich. Eine $if Funktion kenne ich in JSONATA nicht. Die einzige Möglichkeite Bedingungen zu formulieren ist den Bedingungsoperator ? zu nutzen.

                  b7c2f883-022d-40ab-bb1f-98a50893969c-image.png

                  Also:

                  payload >= 0 ? 0 : payload - 2
                  

                  4e21c37b-99ee-42b1-9959-0d761adc7c6c-image.png

                  Hier mal alle Beispiele zum Probieren:

                  [
                     {
                         "id": "1d32bc03fdc515dc",
                         "type": "switch",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "property": "payload",
                         "propertyType": "msg",
                         "rules": [
                             {
                                 "t": "gte",
                                 "v": "0",
                                 "vt": "num"
                             },
                             {
                                 "t": "lt",
                                 "v": "0",
                                 "vt": "num"
                             }
                         ],
                         "checkall": "false",
                         "repair": false,
                         "outputs": 2,
                         "x": 390,
                         "y": 2600,
                         "wires": [
                             [
                                 "e85b8517c1cbf042"
                             ],
                             [
                                 "c6a1e0b43e566934"
                             ]
                         ]
                     },
                     {
                         "id": "e85b8517c1cbf042",
                         "type": "change",
                         "z": "7e6af0015415146d",
                         "name": "setze 0",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "0",
                                 "tot": "num"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 580,
                         "y": 2580,
                         "wires": [
                             [
                                 "d764781a1ee41e39"
                             ]
                         ]
                     },
                     {
                         "id": "c6a1e0b43e566934",
                         "type": "change",
                         "z": "7e6af0015415146d",
                         "name": "verringere um 2",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload - 2",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 580,
                         "y": 2620,
                         "wires": [
                             [
                                 "d764781a1ee41e39"
                             ]
                         ]
                     },
                     {
                         "id": "d764781a1ee41e39",
                         "type": "debug",
                         "z": "7e6af0015415146d",
                         "name": "Ergebnis",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 780,
                         "y": 2600,
                         "wires": []
                     },
                     {
                         "id": "0649d4923f8fba46",
                         "type": "inject",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "3",
                         "payloadType": "num",
                         "x": 210,
                         "y": 2560,
                         "wires": [
                             [
                                 "1d32bc03fdc515dc"
                             ]
                         ]
                     },
                     {
                         "id": "2366a9adf3e62193",
                         "type": "inject",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "-1",
                         "payloadType": "num",
                         "x": 210,
                         "y": 2620,
                         "wires": [
                             [
                                 "1d32bc03fdc515dc"
                             ]
                         ]
                     },
                     {
                         "id": "2a509c433806b76b",
                         "type": "debug",
                         "z": "7e6af0015415146d",
                         "name": "Ergebnis JSONATA",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 710,
                         "y": 3020,
                         "wires": []
                     },
                     {
                         "id": "2e584db564fb7252",
                         "type": "inject",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "3",
                         "payloadType": "num",
                         "x": 210,
                         "y": 3000,
                         "wires": [
                             [
                                 "f09adfda10e76f11"
                             ]
                         ]
                     },
                     {
                         "id": "92cdf991baaf6d7b",
                         "type": "inject",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "-1",
                         "payloadType": "num",
                         "x": 210,
                         "y": 3060,
                         "wires": [
                             [
                                 "f09adfda10e76f11"
                             ]
                         ]
                     },
                     {
                         "id": "9aa12ab2cd5ee494",
                         "type": "comment",
                         "z": "7e6af0015415146d",
                         "name": "Normale Vorgehensweise",
                         "info": "",
                         "x": 210,
                         "y": 2480,
                         "wires": []
                     },
                     {
                         "id": "f09adfda10e76f11",
                         "type": "change",
                         "z": "7e6af0015415146d",
                         "name": "Change Node mit JSONATA",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload >= 0 ? 0 : payload - 2",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 460,
                         "y": 3020,
                         "wires": [
                             [
                                 "2a509c433806b76b"
                             ]
                         ]
                     },
                     {
                         "id": "8fdd6e49709fa68c",
                         "type": "comment",
                         "z": "7e6af0015415146d",
                         "name": "JSONATA",
                         "info": "",
                         "x": 180,
                         "y": 2940,
                         "wires": []
                     },
                     {
                         "id": "235b4dbf57c0ac2e",
                         "type": "comment",
                         "z": "7e6af0015415146d",
                         "name": "RegEx",
                         "info": "",
                         "x": 170,
                         "y": 2720,
                         "wires": []
                     },
                     {
                         "id": "b055685e0374d29b",
                         "type": "switch",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "property": "$string(payload)",
                         "propertyType": "jsonata",
                         "rules": [
                             {
                                 "t": "regex",
                                 "v": "^\\d+$",
                                 "vt": "str",
                                 "case": false
                             },
                             {
                                 "t": "regex",
                                 "v": "^-\\d+$",
                                 "vt": "str",
                                 "case": false
                             }
                         ],
                         "checkall": "false",
                         "repair": false,
                         "outputs": 2,
                         "x": 370,
                         "y": 2820,
                         "wires": [
                             [
                                 "a8dbb487697dff7a"
                             ],
                             [
                                 "958483cb434427fa"
                             ]
                         ]
                     },
                     {
                         "id": "a8dbb487697dff7a",
                         "type": "change",
                         "z": "7e6af0015415146d",
                         "name": "setze 0",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "0",
                                 "tot": "num"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 560,
                         "y": 2800,
                         "wires": [
                             [
                                 "043f4b6a0b3a5766"
                             ]
                         ]
                     },
                     {
                         "id": "958483cb434427fa",
                         "type": "change",
                         "z": "7e6af0015415146d",
                         "name": "verringere um 2",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload - 2",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 560,
                         "y": 2840,
                         "wires": [
                             [
                                 "043f4b6a0b3a5766"
                             ]
                         ]
                     },
                     {
                         "id": "043f4b6a0b3a5766",
                         "type": "debug",
                         "z": "7e6af0015415146d",
                         "name": "Ergebnis mit RegEx",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 800,
                         "y": 2820,
                         "wires": []
                     },
                     {
                         "id": "731e10c3a246ea84",
                         "type": "inject",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "3",
                         "payloadType": "num",
                         "x": 190,
                         "y": 2780,
                         "wires": [
                             [
                                 "b055685e0374d29b"
                             ]
                         ]
                     },
                     {
                         "id": "06edab9528cf2379",
                         "type": "inject",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "-1",
                         "payloadType": "num",
                         "x": 190,
                         "y": 2840,
                         "wires": [
                             [
                                 "b055685e0374d29b"
                             ]
                         ]
                     }
                  ]
                  

                  Ein letzte Möglichkeit mit JSONATA und fixen Werten kann man mit Übersetzungsobjekten erreichen.

                  0d344e57-9335-442d-b001-c0816a28c6d4-image.png

                  In diesem Fall definiere ich also jede Zahl als Schlüssel eines Objektes (ich hab es hier mal translate genannt)- 1.Regel. Die payload wird nun über einen Konvertierung zum String und durchsucht das Objekt nachdem entsprechenden Key. -2.Regel
                  Die 3.Regel kann man verwenden, um einen Defaultwert zu setzen, wenn ein Wert nicht in der Tabelle enthalten ist.

                  [
                     {
                         "id": "d72c33c5f9a3ae48",
                         "type": "change",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "translate",
                                 "pt": "msg",
                                 "to": "{\"3\":0,\"-1\":-3,\"-2\":-4}",
                                 "tot": "json"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$lookup(translate, $string(payload))\t",
                                 "tot": "jsonata"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$not($exists(payload))? 0 : payload\t",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 390,
                         "y": 3200,
                         "wires": [
                             [
                                 "078c75417a994742"
                             ]
                         ]
                     },
                     {
                         "id": "a78a7970d2b7e564",
                         "type": "inject",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "3",
                         "payloadType": "num",
                         "x": 190,
                         "y": 3160,
                         "wires": [
                             [
                                 "d72c33c5f9a3ae48"
                             ]
                         ]
                     },
                     {
                         "id": "253464a6e7f4d63c",
                         "type": "inject",
                         "z": "7e6af0015415146d",
                         "name": "",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "-1",
                         "payloadType": "num",
                         "x": 190,
                         "y": 3220,
                         "wires": [
                             [
                                 "d72c33c5f9a3ae48"
                             ]
                         ]
                     },
                     {
                         "id": "078c75417a994742",
                         "type": "debug",
                         "z": "7e6af0015415146d",
                         "name": "Übersetzungstabelle",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 620,
                         "y": 3200,
                         "wires": []
                     }
                  ]
                  

                  M Offline
                  M Offline
                  MyioBroker
                  schrieb am zuletzt editiert von MyioBroker
                  #27

                  @mickym Um hier im Forum nicht unnötig Fragen zu stellen die vielleicht schon gestellt wurden habe ich mit Chat GPT versucht einiges einfach mal so zu erfragen ohne stundenlanges Studium der Unterlagen. Zum Teil bekommt man recht detailierte Antworten wenn man die Frage entsprechend konkret stellt aber eben auch Antworten die scheinbar nicht viel mit der Frage zu tun haben ???
                  Eine Anfrage zu den RegEx z.B. war auch schnell parat aber das es ein String sein sollte eben nicht und auch zu einigen anderen Codeschnipseln fehlte manchmal der Hintergrund, so dass ich im Grunde nicht wirklich weitergekommen bin :thinking_face:
                  Man sollte also immer noch ein entsprechendes Grundwissen haben um die Ergebnisse zu interpretieren! Aber das war auch schon früher so, als manche meinten mit einem Taschenrechner alles lösen zu könne ohne die Grundregeln der Mathematik zu verstehen ;-)

                  mickymM 1 Antwort Letzte Antwort
                  0
                  • M MyioBroker

                    @mickym Um hier im Forum nicht unnötig Fragen zu stellen die vielleicht schon gestellt wurden habe ich mit Chat GPT versucht einiges einfach mal so zu erfragen ohne stundenlanges Studium der Unterlagen. Zum Teil bekommt man recht detailierte Antworten wenn man die Frage entsprechend konkret stellt aber eben auch Antworten die scheinbar nicht viel mit der Frage zu tun haben ???
                    Eine Anfrage zu den RegEx z.B. war auch schnell parat aber das es ein String sein sollte eben nicht und auch zu einigen anderen Codeschnipseln fehlte manchmal der Hintergrund, so dass ich im Grunde nicht wirklich weitergekommen bin :thinking_face:
                    Man sollte also immer noch ein entsprechendes Grundwissen haben um die Ergebnisse zu interpretieren! Aber das war auch schon früher so, als manche meinten mit einem Taschenrechner alles lösen zu könne ohne die Grundregeln der Mathematik zu verstehen ;-)

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von
                    #28

                    @myiobroker Wie gesagt wenn Du RegEx mal akzeptiert, dass hier Strings analysiert werden - kann ich Dir diese Seite empfehlen, mit der man testen kann und auch eine Erklärung findet.

                    Jedenfalls ist das unter meinen Lesezeichen: https://regex101.com/

                    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.

                    M 1 Antwort Letzte Antwort
                    0
                    • mickymM mickym

                      @myiobroker Wie gesagt wenn Du RegEx mal akzeptiert, dass hier Strings analysiert werden - kann ich Dir diese Seite empfehlen, mit der man testen kann und auch eine Erklärung findet.

                      Jedenfalls ist das unter meinen Lesezeichen: https://regex101.com/

                      M Offline
                      M Offline
                      MyioBroker
                      schrieb am zuletzt editiert von
                      #29

                      @mickym Das ist ein guter Tipp :-) aber ich befürchte das ähnlich ist wie seinerzeit beim Studium. Das "Taschenbuch der Mathematik" von Bronstein -Semendjajew war das Standardwerk für alle unsere "Probleme" mit Integralen usw. aber wenn man es nicht "täglich" benutzt findet man gar nichts (?) zumindest muss man lange suchen ;-)
                      Fürchte auch fast das dieses /mein Projekt (SmartPi als Energiezähler) auch in den Herbst verrschoben werden wird/muss, der Rasenmähroboter will auch wissen wo er gerade mäht, mähen soll und das mit dem GPS ist genauso spannend wie der aktuelle Stromverbrauch. Zum Glück scheint der Rasenmäher ja nicht zu den "Stromfressern" zu gehöhren... aber weiß man das??? Also doch erst mal das SmartPi-PowerProjekt verwirklichen? ein paar Wochen bis zur Saison bleiben ja noch ;-)

                      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

                      378

                      Online

                      32.5k

                      Benutzer

                      81.6k

                      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