Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. String aufteilen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    String aufteilen

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      hafo @mickym last edited by

      @mickym Hier das inject

      [
         {
             "id": "5a297e8e.abb9d8",
             "type": "inject",
             "z": "f70e8494.8c2a98",
             "name": "Payload",
             "props": [
                 {
                     "p": "payload"
                 },
                 {
                     "p": "min",
                     "v": "45",
                     "vt": "num"
                 },
                 {
                     "p": "lauf",
                     "v": "20",
                     "vt": "num"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "8",
             "payloadType": "num",
             "x": 240,
             "y": 360,
             "wires": [
                 [
                     "7f2b9df4.d30d04",
                     "d45a1c2a.6a7508",
                     "c93fa4d4.3573a"
                 ]
             ]
         },
         {
             "id": "7f2b9df4.d30d04",
             "type": "debug",
             "z": "f70e8494.8c2a98",
             "name": "",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "false",
             "statusVal": "",
             "statusType": "auto",
             "x": 460,
             "y": 300,
             "wires": []
         },
         {
             "id": "d45a1c2a.6a7508",
             "type": "debug",
             "z": "f70e8494.8c2a98",
             "name": "",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "min",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 470,
             "y": 360,
             "wires": []
         },
         {
             "id": "c93fa4d4.3573a",
             "type": "debug",
             "z": "f70e8494.8c2a98",
             "name": "",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "lauf",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 460,
             "y": 400,
             "wires": []
         }
      ]
      


      Ich habe im Changenod einmal Payload * 60000 getestet und ein etwas seltsames Resultat erhalten.

      Ich habe gerade keine Ahnung was du mit dem Haken in der Adapterkonfig meinst.
      Gemäss Beschreibung dient das Aggregator Node eher zum sammeln von Nachrichten über einen längeren Zeitraum.

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @mickym last edited by

        @hafo

        Ich habe noch ein bisschen mit der sort Node rumgespielt und dabei ein paar ganz gute Erkenntnisse gewonnen. Wenn Du willst dann poste ich sie hier mal im Thread - später. 😉

        H mickym 2 Replies Last reply Reply Quote 0
        • mickym
          mickym Most Active @hafo last edited by

          @hafo sagte in String aufteilen:

          @mickym Hier das inject

          [
             {
                 "id": "5a297e8e.abb9d8",
                 "type": "inject",
                 "z": "f70e8494.8c2a98",
                 "name": "Payload",
                 "props": [
                     {
                         "p": "payload"
                     },
                     {
                         "p": "min",
                         "v": "45",
                         "vt": "num"
                     },
                     {
                         "p": "lauf",
                         "v": "20",
                         "vt": "num"
                     }
                 ],
                 "repeat": "",
                 "crontab": "",
                 "once": false,
                 "onceDelay": 0.1,
                 "topic": "",
                 "payload": "8",
                 "payloadType": "num",
                 "x": 240,
                 "y": 360,
                 "wires": [
                     [
                         "7f2b9df4.d30d04",
                         "d45a1c2a.6a7508",
                         "c93fa4d4.3573a"
                     ]
                 ]
             },
             {
                 "id": "7f2b9df4.d30d04",
                 "type": "debug",
                 "z": "f70e8494.8c2a98",
                 "name": "",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "false",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 460,
                 "y": 300,
                 "wires": []
             },
             {
                 "id": "d45a1c2a.6a7508",
                 "type": "debug",
                 "z": "f70e8494.8c2a98",
                 "name": "",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "min",
                 "targetType": "msg",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 470,
                 "y": 360,
                 "wires": []
             },
             {
                 "id": "c93fa4d4.3573a",
                 "type": "debug",
                 "z": "f70e8494.8c2a98",
                 "name": "",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "lauf",
                 "targetType": "msg",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 460,
                 "y": 400,
                 "wires": []
             }
          ]
          


          Ich habe im Changenod einmal Payload * 60000 getestet und ein etwas seltsames Resultat erhalten.

          Ich habe gerade keine Ahnung was du mit dem Haken in der Adapterkonfig meinst.
          Gemäss Beschreibung dient das Aggregator Node eher zum sammeln von Nachrichten über einen längeren Zeitraum.

          Und damit führe ich jetzt die 4 Rechenoperationen von unten aus?

          1 Reply Last reply Reply Quote 0
          • H
            hafo @mickym last edited by

            @mickym Genau, damit bin ich gerade fertig geworden. Ich habe nun den Flow gelöscht welcher die Flow Variable bei einem Neustart neu initialisiert. Aber der String wird immer noch richtig generiert, von daher habe ich das Sort Node einfach zum sicher sein eingebaut.

            H 1 Reply Last reply Reply Quote 0
            • H
              hafo @hafo last edited by

              @hafo Moment, ich bereite dir gerade den original Flow vor.

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @hafo last edited by

                @hafo sagte in String aufteilen:

                @hafo Moment, ich bereite dir gerade den original Flow vor.

                Na brauchst nicht - ich mach Dir für jeder Operation eine Change Node und von mir aus zum Schluss nochmal ein mit allen zusammen.

                H 1 Reply Last reply Reply Quote 0
                • H
                  hafo @mickym last edited by

                  @mickym Ich hätte es sonst hier

                  [
                     {
                         "id": "5a297e8e.abb9d8",
                         "type": "inject",
                         "z": "f70e8494.8c2a98",
                         "name": "Payload",
                         "props": [
                             {
                                 "p": "payload"
                             },
                             {
                                 "p": "min",
                                 "v": "45",
                                 "vt": "num"
                             },
                             {
                                 "p": "lauf",
                                 "v": "20",
                                 "vt": "num"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "8",
                         "payloadType": "num",
                         "x": 260,
                         "y": 520,
                         "wires": [
                             [
                                 "8c07b9d.02c72c8"
                             ]
                         ]
                     },
                     {
                         "id": "ff4f5ab8.50b5c8",
                         "type": "change",
                         "z": "f70e8494.8c2a98",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "send.tomstart",
                                 "pt": "flow",
                                 "to": "payload",
                                 "tot": "msg"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 930,
                         "y": 620,
                         "wires": [
                             [
                                 "1d8b361f.e2080a"
                             ]
                         ]
                     },
                     {
                         "id": "613f3272.a40554",
                         "type": "function",
                         "z": "f70e8494.8c2a98",
                         "name": "",
                         "func": "var math = Number(msg.payload) + Number(msg.lauf);\nmsg.payload = math;\nreturn msg;",
                         "outputs": 1,
                         "noerr": 0,
                         "initialize": "",
                         "finalize": "",
                         "libs": [],
                         "x": 720,
                         "y": 660,
                         "wires": [
                             [
                                 "1a57a95b.78d267"
                             ]
                         ]
                     },
                     {
                         "id": "1a57a95b.78d267",
                         "type": "change",
                         "z": "f70e8494.8c2a98",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "send.tomend",
                                 "pt": "flow",
                                 "to": "payload",
                                 "tot": "msg"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 930,
                         "y": 660,
                         "wires": [
                             [
                                 "1d8b361f.e2080a"
                             ]
                         ]
                     },
                     {
                         "id": "1d8b361f.e2080a",
                         "type": "change",
                         "z": "f70e8494.8c2a98",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "send",
                                 "tot": "flow"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 1190,
                         "y": 660,
                         "wires": [
                             [
                                 "d1cb8c1a.20b868"
                             ]
                         ]
                     },
                     {
                         "id": "d1cb8c1a.20b868",
                         "type": "template",
                         "z": "f70e8494.8c2a98",
                         "name": "Create timer",
                         "field": "payload",
                         "fieldType": "msg",
                         "format": "handlebars",
                         "syntax": "mustache",
                         "template": "{\"timers\":[{\"starttime\":{{payload.tomstart}},\"days\":[{{payload.tomtag}}],\"output\":\"0\",\"endtime\":{{payload.tomend}}}],\"settings\":{\"disabledDevices\":[]}}",
                         "output": "str",
                         "x": 1390,
                         "y": 660,
                         "wires": [
                             [
                                 "cafc6f1d.b72b88"
                             ]
                         ]
                     },
                     {
                         "id": "e29d0be5.53d3d",
                         "type": "function",
                         "z": "f70e8494.8c2a98",
                         "name": "",
                         "func": "var math = (Number(msg.payload) + Number(msg.min)) * 60000;\nmsg.payload = math;\nreturn msg;",
                         "outputs": 1,
                         "noerr": 0,
                         "initialize": "",
                         "finalize": "",
                         "libs": [],
                         "x": 640,
                         "y": 520,
                         "wires": [
                             [
                                 "ff4f5ab8.50b5c8",
                                 "237b16ca.6c1e82"
                             ]
                         ]
                     },
                     {
                         "id": "8c07b9d.02c72c8",
                         "type": "function",
                         "z": "f70e8494.8c2a98",
                         "name": "",
                         "func": "var math = (Number(msg.payload) - 1) * 60;\nmsg.payload = math;\nreturn msg;",
                         "outputs": 1,
                         "noerr": 0,
                         "initialize": "",
                         "finalize": "",
                         "libs": [],
                         "x": 470,
                         "y": 520,
                         "wires": [
                             [
                                 "e29d0be5.53d3d"
                             ]
                         ]
                     },
                     {
                         "id": "237b16ca.6c1e82",
                         "type": "calculator",
                         "z": "f70e8494.8c2a98",
                         "name": "",
                         "inputMsgField": "lauf",
                         "outputMsgField": "lauf",
                         "operation": "mult",
                         "constant": "60000",
                         "round": false,
                         "decimals": 0,
                         "x": 580,
                         "y": 660,
                         "wires": [
                             [
                                 "613f3272.a40554"
                             ]
                         ]
                     },
                     {
                         "id": "cafc6f1d.b72b88",
                         "type": "debug",
                         "z": "f70e8494.8c2a98",
                         "name": "",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1680,
                         "y": 660,
                         "wires": []
                     }
                  ]
                  


                  1.jpg
                  2.jpg

                  mickym H 2 Replies Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @hafo last edited by

                    @hafo Nun ich verstehe einfach das Problem nicht??

                    Habe hier 4 mal das gerechnet was Du unten angegeben hast:

                    a07f3377-1af8-40cd-8380-e01c68aea0f0-image.png

                    [
                       {
                           "id": "5a297e8e.abb9d8",
                           "type": "inject",
                           "z": "f19174b9.aa88f8",
                           "name": "Payload",
                           "props": [
                               {
                                   "p": "payload"
                               },
                               {
                                   "p": "min",
                                   "v": "45",
                                   "vt": "num"
                               },
                               {
                                   "p": "lauf",
                                   "v": "20",
                                   "vt": "num"
                               }
                           ],
                           "repeat": "",
                           "crontab": "",
                           "once": false,
                           "onceDelay": 0.1,
                           "topic": "",
                           "payload": "8",
                           "payloadType": "num",
                           "x": 580,
                           "y": 1260,
                           "wires": [
                               [
                                   "7f2b9df4.d30d04",
                                   "d45a1c2a.6a7508",
                                   "c93fa4d4.3573a",
                                   "6e679c0.c2cb864",
                                   "6f0bb159.6ecbe",
                                   "3549ae59.415702",
                                   "a625c6c2.2ddfa8"
                               ]
                           ]
                       },
                       {
                           "id": "7f2b9df4.d30d04",
                           "type": "debug",
                           "z": "f19174b9.aa88f8",
                           "name": "",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 800,
                           "y": 1200,
                           "wires": []
                       },
                       {
                           "id": "d45a1c2a.6a7508",
                           "type": "debug",
                           "z": "f19174b9.aa88f8",
                           "name": "",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "min",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 810,
                           "y": 1260,
                           "wires": []
                       },
                       {
                           "id": "c93fa4d4.3573a",
                           "type": "debug",
                           "z": "f19174b9.aa88f8",
                           "name": "",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "lauf",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 800,
                           "y": 1300,
                           "wires": []
                       },
                       {
                           "id": "6e679c0.c2cb864",
                           "type": "change",
                           "z": "f19174b9.aa88f8",
                           "name": "payload * 60000",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "payload * 60000",
                                   "tot": "jsonata"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 820,
                           "y": 1400,
                           "wires": [
                               [
                                   "7e6953dd.b53aec"
                               ]
                           ]
                       },
                       {
                           "id": "7e6953dd.b53aec",
                           "type": "debug",
                           "z": "f19174b9.aa88f8",
                           "name": "payload * 60000",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "payload",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1070,
                           "y": 1400,
                           "wires": []
                       },
                       {
                           "id": "6f0bb159.6ecbe",
                           "type": "change",
                           "z": "f19174b9.aa88f8",
                           "name": "(payload - 1) * 60",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "(payload - 1) * 60",
                                   "tot": "jsonata"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 830,
                           "y": 1460,
                           "wires": [
                               [
                                   "c033f0e3.dd226"
                               ]
                           ]
                       },
                       {
                           "id": "c033f0e3.dd226",
                           "type": "debug",
                           "z": "f19174b9.aa88f8",
                           "name": "(payload - 1) * 60",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "payload",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1070,
                           "y": 1460,
                           "wires": []
                       },
                       {
                           "id": "3549ae59.415702",
                           "type": "change",
                           "z": "f19174b9.aa88f8",
                           "name": "(payload + min) * 60000;",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "(payload + min) * 60000",
                                   "tot": "jsonata"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 850,
                           "y": 1520,
                           "wires": [
                               [
                                   "1ddb1d5.a41cce3"
                               ]
                           ]
                       },
                       {
                           "id": "1ddb1d5.a41cce3",
                           "type": "debug",
                           "z": "f19174b9.aa88f8",
                           "name": "(payload + min) * 60000",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "payload",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1130,
                           "y": 1520,
                           "wires": []
                       },
                       {
                           "id": "a625c6c2.2ddfa8",
                           "type": "change",
                           "z": "f19174b9.aa88f8",
                           "name": "payload + lauf",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "payload + lauf",
                                   "tot": "jsonata"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 830,
                           "y": 1580,
                           "wires": [
                               [
                                   "2dfa315e.be413e"
                               ]
                           ]
                       },
                       {
                           "id": "2dfa315e.be413e",
                           "type": "debug",
                           "z": "f19174b9.aa88f8",
                           "name": "payload + lauf",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "payload",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1080,
                           "y": 1580,
                           "wires": []
                       }
                    ]
                    

                    1 Reply Last reply Reply Quote 0
                    • H
                      hafo @hafo last edited by

                      Ich sehe gerade dass ich da besser zuerst alle Daten einsammle und dann durch die Rechner laufen lasse. So langsam verstehe ich das Prinzip.

                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @hafo last edited by mickym

                        @hafo Na Du kannst sie HuckePack nehmen - das geht auch oder sammelst wieder in Flow Variable und schreibst zum Schluss. 😉

                        Ich sags immer wieder - Nachrichten warten nicht auf Dich und wenn nichts gespeichert wird, ist die Nachricht, hat sie mal eine Node passiert, Schall und Rauch. 😉

                        HuckePack kannst Du sie nehmen, wenn Du Deine Get-Nodes alle in unterschiedliche Eigenschaften speichern lässt, dann schleppst Du die im Nachrichtenobjekt mit und kannst dann damit rechnen!

                        Hier in Deinen get NOdes unterschiedliche Eigenschaften benennen, dann werden die mitgeschleift, sonst überschreibst Du die payload ja immer wieder:

                        42d8ae64-f1ef-4956-8358-58e6a5b8cc42-image.png

                        Schau Dir halt auch in den Debug Nodes in solchen Fällen nicht nur die Payload sondern das gesamte Nachrichtenobjekt an!!!

                        aacb980f-69c5-4590-bca1-693fa605db46-image.png

                        Ich weiß am Anfang braucht es etwas - damit man versteht was Nachrichten und ein Nachrichtenobjekt ist. Aber wenn Du das mal verstanden hast, dann spielst Du in NodeRed wie ein Pianist auf dem Klavier. 😉

                        H 1 Reply Last reply Reply Quote 0
                        • H
                          hafo @mickym last edited by

                          @mickym Danke, das habe ich schon mal gemacht mit dem HuckePack.
                          Ich habe nun aber dein "Nummer / Zahl" Problem.

                          "Invalid JSONata expression: The left side of the "-" operator must evaluate to a number"

                          mickym 1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @hafo last edited by mickym

                            @hafo Wie gesagt - Du bist nicht meiner Empfehlung gefolgt und hast die Stringkonvertierung in dem Adapter ausgeschaltet.

                            Du kannst das entweder jetzt machen - musst halt aufpassen, ob Du nicht schon viel konvertiert hast oder musst halt immer weiter konvertieren.

                            Wenn Du weiter konvertieren willst, dann musst halt alles mit $number() in JSONATA umwandeln oder Du liest Zahlen, die im iobroker als Zahl definiert sind auch als Zahl aus und machst diesen unsäglichen Haken raus!!!

                            Ansonsten kannst Du auch in JSONATA weiterhin Zahlen konvertieren:

                            2576f1a2-0448-4b1c-8e0c-c7ae17f21dec-image.png

                            e165e145-1937-4806-83fd-60223bba1011-image.png

                            H 1 Reply Last reply Reply Quote 0
                            • H
                              hafo @mickym last edited by

                              @mickym Nein, der Haken ist bei mir gesetzt. Aber vielleicht habe ich bei den Objekten etwas falsches eingestellt.

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @hafo last edited by mickym

                                @hafo sagte in String aufteilen:

                                @mickym Nein, der Haken ist bei mir gesetzt. 😠 😡 Aber vielleicht habe ich bei den Objekten etwas falsches eingestellt.

                                Das ist doch das Problem!!!! Haken raus!!!!

                                Mit gesetztem Haken kann im Datenpunkt stehen was will - es wird alles in Strings gewandelt!

                                H 1 Reply Last reply Reply Quote 0
                                • H
                                  hafo @mickym last edited by

                                  @mickym Ich glaub ich bin schon zu lange am Computer 🤦

                                  Jedenfalls triggert er nun wieder in alle unendlichkeit
                                  1.jpg

                                  mickym 2 Replies Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @hafo last edited by

                                    @hafo Nein - Du hast nun umgestellt und nun kommen auch Deine booleans als booleans und nicht mehr als String.

                                    Das ist jetzt vielleicht leider Umstellungsaufwand - deswegen empfehle ich den Haken von Beginn an rauszunehmen, sonst kannst halt weiter konvertieren.

                                    Du kannst den Haken ja erst mal wieder rein nehmen und dann anfangen zu suchen:

                                    Wenn Du im JSONATA konvertieren willst, dann geht das schon

                                    520f3d62-e5ff-4d71-a31e-a7c3872c32a0-image.png

                                    d980f38b-030d-4e70-83b9-92876f073a02-image.png

                                    Ich finde es auf Dauer umständlich, aber wie gesagt nun musst Du erst mal schauen, wo Deine Datentypen nicht mehr passen.

                                    1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @hafo last edited by mickym

                                      @hafo Der switch hinter Deinen Trigger wird wahrscheinlich nicht mehr passen, da der auf String und nicht auf Boolean abprüft.

                                      den musst mit Sicherheit umstellen:

                                      704ffd63-61bb-4097-8217-590b8fab4c97-image.png

                                      Einfach alle Eingänge überprüfen, ob der richtige Datentyp nun im weiteren Verlauf verwendet wird. Ansonsten zurück kannst immer. Aber ich denke lieber einmal Schmerzen, als dauernd konvertieren. 😉

                                      H 1 Reply Last reply Reply Quote 0
                                      • H
                                        hafo @mickym last edited by hafo

                                        @mickym das habe ich zuerst geändert. Beim oberen Beispiel ist dieser Switch gar nicht angehängt, und der untere sollte sämtliche Nachrichten in Boolean false ändern.
                                        Da muss ich noch ein bisschen suchen.
                                        OK, es läuft wieder. Ich musste natürlich beim Trigger einstellen dass er nur auf geänderte Nachrichten reagiert.

                                        mickym 1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active @hafo last edited by

                                          @hafo Na gut - 🙂 Du wirst erleichtert sein, dass Du Dir nun eine Menge Konvertiererei sparst. Das Rechnen sollte nun ohne den JSONATA Fehler funktionieren, wenn die Datenpunkte vom Typ Zahl sind.

                                          1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @mickym last edited by mickym

                                            @mickym sagte in String aufteilen:

                                            @hafo

                                            Ich habe noch ein bisschen mit der sort Node rumgespielt und dabei ein paar ganz gute Erkenntnisse gewonnen. Wenn Du willst dann poste ich sie hier mal im Thread - später. 😉

                                            So ich habe nun auch herausgefunden, wie man mit den Sort Nodes ggf. auch selbst eine Sortierreihenfolge definieren kann, selbst wenn man das nicht so vorab so vorbildlich gemacht hat, wie Du und immer eine Zahl vorangestellt hat. Das hat zwar bisschen Tüftelei gekostet, aber vielleicht ist das für den einen oder anderen interessant:

                                            d1b2e512-a187-4ceb-8d7e-7d1dd2f2560d-image.png

                                            Also was sieht man:

                                            1. Das Array mit durcheinandergewürfelten Wochentagen.
                                            2. Mit Standardeinstellungen wird das Array natürlich alphabetisch sortiert:
                                              7b25d282-5173-493c-8b1d-f97cb589395b-image.png
                                            3. Um nun eine eigene Reihenfolge festzulegen, kann man ein Objekt erstellen und den Begriffen, in diesem Fall Zahlenwerte zuordnen.
                                              In der letzten Node sieht man werden die Wochentage nun auch in dem Array richtig sortiert.
                                              Dies erfolgt über eine JSONATA Funktion - Kopfzerbrechen hat mir das $ Zeichen gemacht, dass von der Node als Platzhalter für die Arrayelemente verwendet.
                                              39b74ea3-ea16-4235-80f9-3549de6f760c-image.png
                                            $lookup(
                                               {
                                                   "Mo":0,
                                                   "Di":1,
                                                   "Mi":2,
                                                   "Do":3,
                                                   "Fr":4,
                                                   "Sa":5,
                                                   "So":6
                                               },
                                               $
                                            )
                                            

                                            Grundsätzlich kann man auch nur mit einer JSONATA Funktion in einer Change Node ein Array sortieren:

                                            580a44b7-dfc0-4165-9979-b303c98fa750-image.png

                                            Das ist aber bissi komplizierter - hier mal die JSONATA Defintion:

                                            $sort(payload,function($l, $r){
                                               $lookup(
                                                   {
                                                       "Mo":0,
                                                       "Di":1,
                                                       "Mi":2,
                                                       "Do":3,
                                                       "Fr":4,
                                                       "Sa":5,
                                                       "So":6
                                                   },
                                                   $l
                                               ) > $lookup(
                                                   {
                                                       "Mo":0,
                                                       "Di":1,
                                                       "Mi":2,
                                                       "Do":3,
                                                       "Fr":4,
                                                       "Sa":5,
                                                       "So":6
                                                   },
                                                   $r
                                               ) 
                                            })
                                            

                                            Hat man kein Objekt sondern splittet ein Array - dann kann man ebenfalls anstelle von dem topic bzw. key zum Beispiel nach der Payload sortieren:

                                            a2ee2f3d-a2dd-4fa0-9766-851afe9c3c00-image.png

                                            8391b6ce-a560-4499-ba0a-fd6d559a6e27-image.png

                                            3706772a-107b-4ddc-9830-c65950152efe-image.png

                                            $lookup(
                                               {
                                                   "Mo":0,
                                                   "Di":1,
                                                   "Mi":2,
                                                   "Do":3,
                                                   "Fr":4,
                                                   "Sa":5,
                                                   "So":6
                                               },
                                               payload
                                            )
                                            

                                            Hier muss ich dann die payload, statt der $ eingeben, da hier die payload ja bereits den skalaren Wert enthalten.

                                            Jedenfalls habe ich heute auch wieder einiges gelernt und vielleicht hilft das auch dem einen oder anderen.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            141
                                            8096
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo