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. Anfängerfrage http request

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Anfängerfrage http request

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      ralf2201 last edited by

      Hallo,

      ich bin absoluter Anfänger und benötige einen Tip um in die richtige Richtung zu gehen. Ich bekomme über einen http request Daten eines Wettersensors. Die Daten liegen folgendermaßen an.

      20210415112525 TH0 2.5 65 1.4

      Am Anfang steht also Das Datum mit Uhrzeit. Dann folgt die Kennung des Sensors gefolgt von Temperatur, Luftfeuchtigkeit und Taupunkt.

      Mein Ziel ist jetzt die Daten so zu vereinzeln dass sie lesbar sind und ich sie an einen zB cuxd Sensor bzw. Eine Systemvariable an HomematicIP übergeben kann.

      Danke für eure Hilfe oder Anregungen.

      Asgothian mickym R 3 Replies Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @ralf2201 last edited by Asgothian

        @ralf2201 Was nutzt du denn / willst du denn nutzen ?

        JS ?
        Blockly ?

        NodeRed ?
        (edit: sorry, hatte das Forum nicht beachtet)

        Letztendlich würde ein Regex gehen :

        (\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d) TH\d (\d+.\d+) (\d+) (\d+.\d) Liefert ein Array zurück
        [Jahr, Monat, Tag, Stunde, Minute,Sekunde, Wert 1, Wert 2, Wert 3]

        Zum ausprobieren: https://regex101.com, deinen String als Teststring, meinen als Expression

        NodeRed hat sicherlich auch eine Node die ein Regex verarbeiten kann. Da kannst du dann die einzelnen Punkte heraus holen.

        A.

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

          @ralf2201 Ich würde es so machen:
          Wandle entweder alles in ein Array um oder lass Dir die Daten nacheinander über die Split Node nacheinander ausgeben.
          Im Array greifst Du dann zum Beispiel auf die einzlnen Werte mit msg.payload[0] auf das Datum zu,

          Ich hab dann das Datum, als 1. Feld mal genommen, mit dem vom @Asgothian regulären Ausdruck in einen moment konformen String umgewandelt und dann kannst Du das Datum direkt in der für Dich gewünschten Form ausgeben:

          7e69aa37-4842-49d9-9c5f-d9bf37a5f75c-image.png

          Die regulären Ausdrücke stehen Dir auch in Abfragen zur Verfügung - und somit kannst Du nach der Split Node die Nachrichten auch direkt weiter verarbeiten.
          Damit sollten Dir nun alle Zugriffsmöglichkeiten zur Analyse und Weiterverarbeitung offen stehen.

          Hier der Flow zum Import:

          [
              {
                  "id": "1a22e998.f26ea6",
                  "type": "change",
                  "z": "6e170384.60c96c",
                  "name": "",
                  "rules": [
                      {
                          "t": "set",
                          "p": "payload",
                          "pt": "msg",
                          "to": "$split(payload, ' ')",
                          "tot": "jsonata"
                      }
                  ],
                  "action": "",
                  "property": "",
                  "from": "",
                  "to": "",
                  "reg": false,
                  "x": 1990,
                  "y": 4460,
                  "wires": [
                      [
                          "c4360147.fe2db",
                          "4fe27f3e.632cb"
                      ]
                  ]
              },
              {
                  "id": "512d58b0.e503e8",
                  "type": "inject",
                  "z": "6e170384.60c96c",
                  "name": "",
                  "props": [
                      {
                          "p": "payload"
                      }
                  ],
                  "repeat": "",
                  "crontab": "",
                  "once": false,
                  "onceDelay": 0.1,
                  "topic": "",
                  "payload": "20210415112525 TH0 2.5 65 1.4",
                  "payloadType": "str",
                  "x": 1780,
                  "y": 4460,
                  "wires": [
                      [
                          "1a22e998.f26ea6",
                          "37608c3d.886b14"
                      ]
                  ]
              },
              {
                  "id": "c4360147.fe2db",
                  "type": "debug",
                  "z": "6e170384.60c96c",
                  "name": "Array",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "payload",
                  "targetType": "msg",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 2220,
                  "y": 4460,
                  "wires": []
              },
              {
                  "id": "37608c3d.886b14",
                  "type": "split",
                  "z": "6e170384.60c96c",
                  "name": "",
                  "splt": " ",
                  "spltType": "str",
                  "arraySplt": 1,
                  "arraySpltType": "len",
                  "stream": false,
                  "addname": "",
                  "x": 1960,
                  "y": 4520,
                  "wires": [
                      [
                          "b43c4b47.ad7238"
                      ]
                  ]
              },
              {
                  "id": "6bb74424.1ab97c",
                  "type": "debug",
                  "z": "6e170384.60c96c",
                  "name": "nacheinander",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "payload",
                  "targetType": "msg",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 2560,
                  "y": 4540,
                  "wires": []
              },
              {
                  "id": "4fe27f3e.632cb",
                  "type": "change",
                  "z": "6e170384.60c96c",
                  "name": "Datum ausgeben",
                  "rules": [
                      {
                          "t": "set",
                          "p": "payload",
                          "pt": "msg",
                          "to": "payload[0]",
                          "tot": "msg"
                      },
                      {
                          "t": "change",
                          "p": "payload",
                          "pt": "msg",
                          "from": "(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)",
                          "fromt": "re",
                          "to": "$1-$2-$3 $4:$5:$6",
                          "tot": "str"
                      },
                      {
                          "t": "set",
                          "p": "payload",
                          "pt": "msg",
                          "to": "$moment(payload).locale(\"de\").tz('Europe/Berlin').format('dddd, [der] D. MMMM YYYY [um] HH:mm')",
                          "tot": "jsonata"
                      }
                  ],
                  "action": "",
                  "property": "",
                  "from": "",
                  "to": "",
                  "reg": false,
                  "x": 2250,
                  "y": 4400,
                  "wires": [
                      [
                          "a9bfff85.af1c4"
                      ]
                  ]
              },
              {
                  "id": "a9bfff85.af1c4",
                  "type": "debug",
                  "z": "6e170384.60c96c",
                  "name": "Datum und Uhrzeit",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "payload",
                  "targetType": "msg",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 2480,
                  "y": 4400,
                  "wires": []
              },
              {
                  "id": "b43c4b47.ad7238",
                  "type": "switch",
                  "z": "6e170384.60c96c",
                  "name": "Ist Datum?",
                  "property": "payload",
                  "propertyType": "msg",
                  "rules": [
                      {
                          "t": "regex",
                          "v": "(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)",
                          "vt": "str",
                          "case": false
                      },
                      {
                          "t": "else"
                      }
                  ],
                  "checkall": "true",
                  "repair": false,
                  "outputs": 2,
                  "x": 2150,
                  "y": 4520,
                  "wires": [
                      [
                          "4560291b.7b5ed8"
                      ],
                      [
                          "6bb74424.1ab97c"
                      ]
                  ]
              },
              {
                  "id": "4560291b.7b5ed8",
                  "type": "change",
                  "z": "6e170384.60c96c",
                  "name": "Datum ausgeben",
                  "rules": [
                      {
                          "t": "set",
                          "p": "payload",
                          "pt": "msg",
                          "to": "payload[0]",
                          "tot": "msg"
                      },
                      {
                          "t": "change",
                          "p": "payload",
                          "pt": "msg",
                          "from": "(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)",
                          "fromt": "re",
                          "to": "$1-$2-$3 $4:$5:$6",
                          "tot": "str"
                      },
                      {
                          "t": "set",
                          "p": "payload",
                          "pt": "msg",
                          "to": "$moment(payload).locale(\"de\").tz('Europe/Berlin').format('dddd, [der] D. MMMM YYYY [um] HH:mm')",
                          "tot": "jsonata"
                      }
                  ],
                  "action": "",
                  "property": "",
                  "from": "",
                  "to": "",
                  "reg": false,
                  "x": 2350,
                  "y": 4500,
                  "wires": [
                      [
                          "6bb74424.1ab97c"
                      ]
                  ]
              }
          ]
          

          1 Reply Last reply Reply Quote 0
          • R
            rewenode @ralf2201 last edited by

            @ralf2201 Was @Asgothian vorgeschlagen hat geht natürlich auch ganz simpel in Node-red. Hier mal mit einem change-node und einem JS-Objekt als Ergebnis.

            2021-04-19_17-22-37.jpg

            Und hier der Flow:

            [
               {
                   "id": "63a2c2b5.20f30c",
                   "type": "inject",
                   "z": "bab1cb5b.6907f",
                   "name": "Teststring \"20210415112525 TH0 2.5 65 1.4\"",
                   "props": [
                       {
                           "p": "payload"
                       },
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "20210415112525 TH0 2.5 65 1.4",
                   "payloadType": "str",
                   "x": 850,
                   "y": 120,
                   "wires": [
                       [
                           "4c8d9547.c1ce9c"
                       ]
                   ]
               },
               {
                   "id": "12fbd242.3e911e",
                   "type": "debug",
                   "z": "bab1cb5b.6907f",
                   "name": "",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 950,
                   "y": 300,
                   "wires": []
               },
               {
                   "id": "4c8d9547.c1ce9c",
                   "type": "change",
                   "z": "bab1cb5b.6907f",
                   "name": "Konvertieren mit regEx",
                   "rules": [
                       {
                           "t": "change",
                           "p": "payload",
                           "pt": "msg",
                           "from": "^((\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d) TH\\d (\\d+.\\d+) (\\d+) (\\d+.\\d).*)$",
                           "fromt": "re",
                           "to": "{\"Jahr\": \"$2\" ,\"Monat\": \"$3\", \"Tag\":\"$4\", \"Stunde\": \"$5\", \"Minute\": \"$6\", \"Sekunde\": \"$7\", \"Wert 1\": \"$8\", \"Wert 2\": \"$9\", \"Wert 3\": \"$10\" }",
                           "tot": "str"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 920,
                   "y": 180,
                   "wires": [
                       [
                           "d4dc4db8.ec7ee"
                       ]
                   ]
               },
               {
                   "id": "d4dc4db8.ec7ee",
                   "type": "json",
                   "z": "bab1cb5b.6907f",
                   "name": "Ergebnis in Javascript Objekt",
                   "property": "payload",
                   "action": "",
                   "pretty": false,
                   "x": 900,
                   "y": 240,
                   "wires": [
                       [
                           "12fbd242.3e911e"
                       ]
                   ]
               }
            ]
            

            1 Reply Last reply Reply Quote 0
            • R
              ralf2201 last edited by

              Vielen Dank für die Hilfe.
              Mein Problem ist soweit gelöst. Ich habe aber gesehen, dass ich mich noch viel mehr einlesen muss.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              560
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              4
              5
              265
              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