Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Zwei Strings zusammenführen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Zwei Strings zusammenführen

Scheduled Pinned Locked Moved Node-Red
23 Posts 2 Posters 1.4k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P peterfido

    @ju_ probiere mal:

    [
        {
            "id": "5b74298a9d871858",
            "type": "function",
            "z": "e85adb77025ff03d",
            "name": "function 3",
            "func": "if(msg.topic==\"Datum\"){\n    flow.set(\"GelbDatum\", msg.payload.slice(0,8));\n}\nif(msg.topic==\"Tage\"){\n    var s = msg.payload;\n    for(var i=1;i<s.length;i++){\n        var x = s.slice(i,i+1);\n        if(isNaN(x)){\n            flow.set(\"GelbTage\", s.slice(0,i-1));\n            break;\n        }\n    }\n}\nnode.status({ text: flow.get(\"GelbDatum\") + flow.get(\"GelbTage\") + \" \" + x });\n\nif(flow.get(\"GelbDatum\").length > 0  && flow.get(\"GelbTage\").length > 0) {\n    msg.payload = flow.get(\"GelbDatum\").slice(0,8) + \" (\" + flow.get(\"GelbTage\") + \"d)\";\n    node.status({text: msg.payload});\n    return msg;\n}",
            "outputs": 1,
            "timeout": 0,
            "noerr": 0,
            "initialize": "// Der Code hier wird ausgeführt,\n// wenn der Node gestartet wird\nflow.set(\"GelbDatum\",\"\");\nflow.set(\"GelbTage\", \"\");\n",
            "finalize": "",
            "libs": [],
            "x": 620,
            "y": 200,
            "wires": [
                [
                    "cccfb4eb94a27733"
                ]
            ]
        }
    ]
    

    Ich habe die Strings jetzt nach der erwarteten Länge abgeschnitten.

    Im Prinzip nur die Function Node:

    if(msg.topic=="Datum"){
        flow.set("GelbDatum", msg.payload.slice(0,8));
    }
    if(msg.topic=="Tage"){
        var s = msg.payload;
        for(var i=1;i<s.length;i++){
            var x = s.slice(i,i+1);
            if(isNaN(x)){
                flow.set("GelbTage", s.slice(0,i-1));
                break;
            }
        }
    }
    node.status({ text: flow.get("GelbDatum") + flow.get("GelbTage") + " " + x });
    
    if(flow.get("GelbDatum").length > 0  && flow.get("GelbTage").length > 0) {
        msg.payload = flow.get("GelbDatum").slice(0,8) + " (" + flow.get("GelbTage") + "d)";
        node.status({text: msg.payload});
        return msg;
    }
    

    Ich habe es nochmal editiert.

    Im Start-Bereich der Function die Variablen zurücksetzen. Sonst bleiben die alten Werte.

    flow.set("GelbDatum","");
    flow.set("GelbTage", "");
    
    J Offline
    J Offline
    JU_
    wrote on last edited by
    #21

    @peterfido vielen Dank, probiere es gleich morgen früh aus! Melde mich. 🙂

    1 Reply Last reply
    0
    • P peterfido

      @ju_ probiere mal:

      [
          {
              "id": "5b74298a9d871858",
              "type": "function",
              "z": "e85adb77025ff03d",
              "name": "function 3",
              "func": "if(msg.topic==\"Datum\"){\n    flow.set(\"GelbDatum\", msg.payload.slice(0,8));\n}\nif(msg.topic==\"Tage\"){\n    var s = msg.payload;\n    for(var i=1;i<s.length;i++){\n        var x = s.slice(i,i+1);\n        if(isNaN(x)){\n            flow.set(\"GelbTage\", s.slice(0,i-1));\n            break;\n        }\n    }\n}\nnode.status({ text: flow.get(\"GelbDatum\") + flow.get(\"GelbTage\") + \" \" + x });\n\nif(flow.get(\"GelbDatum\").length > 0  && flow.get(\"GelbTage\").length > 0) {\n    msg.payload = flow.get(\"GelbDatum\").slice(0,8) + \" (\" + flow.get(\"GelbTage\") + \"d)\";\n    node.status({text: msg.payload});\n    return msg;\n}",
              "outputs": 1,
              "timeout": 0,
              "noerr": 0,
              "initialize": "// Der Code hier wird ausgeführt,\n// wenn der Node gestartet wird\nflow.set(\"GelbDatum\",\"\");\nflow.set(\"GelbTage\", \"\");\n",
              "finalize": "",
              "libs": [],
              "x": 620,
              "y": 200,
              "wires": [
                  [
                      "cccfb4eb94a27733"
                  ]
              ]
          }
      ]
      

      Ich habe die Strings jetzt nach der erwarteten Länge abgeschnitten.

      Im Prinzip nur die Function Node:

      if(msg.topic=="Datum"){
          flow.set("GelbDatum", msg.payload.slice(0,8));
      }
      if(msg.topic=="Tage"){
          var s = msg.payload;
          for(var i=1;i<s.length;i++){
              var x = s.slice(i,i+1);
              if(isNaN(x)){
                  flow.set("GelbTage", s.slice(0,i-1));
                  break;
              }
          }
      }
      node.status({ text: flow.get("GelbDatum") + flow.get("GelbTage") + " " + x });
      
      if(flow.get("GelbDatum").length > 0  && flow.get("GelbTage").length > 0) {
          msg.payload = flow.get("GelbDatum").slice(0,8) + " (" + flow.get("GelbTage") + "d)";
          node.status({text: msg.payload});
          return msg;
      }
      

      Ich habe es nochmal editiert.

      Im Start-Bereich der Function die Variablen zurücksetzen. Sonst bleiben die alten Werte.

      flow.set("GelbDatum","");
      flow.set("GelbTage", "");
      
      J Offline
      J Offline
      JU_
      wrote on last edited by
      #22

      @peterfido Es funktioniert! Vielen lieben Dank für deine Hilfe und deine Gedult!! ❤

      P 1 Reply Last reply
      0
      • J JU_

        @peterfido Es funktioniert! Vielen lieben Dank für deine Hilfe und deine Gedult!! ❤

        P Offline
        P Offline
        peterfido
        wrote on last edited by peterfido
        #23

        @ju_ Prima. Danke für die Rückmeldung.

        Edit: In den beiden Change-Nodes kann die Regel, wo die Werte nach flow.Datum und flow.Tage geschrieben werden, raus. Da brauchts nur das Topic. Den Rest macht die Function.

        Die nimmt vom Datum die ersten 8 Stellen und vom Tage sucht die sich nur die Ziffern am Anfang raus. Wenn beides gefunden wurde, wird es weitergeleitet.

        Gruß

        Peterfido


        Proxmox auf Intel NUC12WSHi5
        ioBroker: Debian (VM)
        CCU: Debmatic (VM)
        Influx: Debian (VM)
        Grafana: Debian (VM)
        eBus: Debian (VM)
        Zigbee: Debian (VM) mit zigbee2mqtt

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        727

        Online

        32.4k

        Users

        81.4k

        Topics

        1.3m

        Posts
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        ioBroker Community 2014-2025
        logo
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Recent
        • Tags
        • Unread 0
        • Categories
        • Unreplied
        • Popular
        • GitHub
        • Docu
        • Hilfe