Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. string zerlegen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    string zerlegen

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

      Re: Iobroker und Signal Messenger

      Hallo,
      Ich bin schon mal ein Stück weiter und habe das ganze mit signal-cli und einem node-red exec Aufruf hinbekommen das ich beim Empfangen schon mal einen string im msg.payload habe der dann so aussieht:

      "Envelope from: +12345678 (device: 1);Timestamp: 1585568553483 (2020-03-30T11:42:33.483Z);Sender: +12345678 (device: 1);Message timestamp: 1585568553483 (2020-03-30T11:42:33.483Z);Body:Das ist eine Testmeldung;"
      

      Eventuell kann mir jemand beim Zerlegen des string's helfen. Benötigen würde ich folgende Werte:

      • Von Envelope from: +12345678

      • Von Timestamp 2020-03-30T11:42:33

      • und alles rechts von Body: Das ist eine Testmeldung

      Mit einer Funktion in Node-Red müsste das doch lösbar sein.

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @peppino last edited by paul53

        @peppino sagte:

        Mit einer Funktion in Node-Red müsste das doch lösbar sein.

        Von Node-Red habe ich keine Ahnung, aber mit Javascript sollte es so funktionieren:

        let str = "Envelope from: +12345678 (device: 1);Timestamp: 1585568553483 (2020-03-30T11:42:33.483Z);Sender: +12345678 (device: 1);Message timestamp: 1585568553483 (2020-03-30T11:42:33.483Z);Body:Das ist eine Testmeldung";
        let arr = str.split(';'); // zerlegt String in ein Array mit Kriterium ";" als Trennzeichen im String
        let obj = {}; // leeres Objekt
        for(let i = 0; i < arr.length; i++) { // über alle Array-Elemente
            let pos = arr[i].indexOf(':'); // Im Array-Element erstes Auftreten von ":" ermtteln
            let ele = arr[i].substring(0, pos).replace(' ', '_'); // Bezeichener für Objekt separieren und Leerzeichen durch "_" ersetzen
            let attr = arr[i].substring(pos + 1); // Objekt-Attribut separieren (Rest hinter 1. Doppelpunkt)
            if(ele == 'Timestamp') attr = formatDate(parseInt(attr), 'DD.MM.JJ hh:mm:ss'); // wandelt ms in lesbare Zeit
            obj[ele] = attr; // Objekt um neues Attribut ergänzen
        }
        
        log(obj.Envelope_from);
        log(obj.Timestamp);
        log(obj.Body);
        
        P 1 Reply Last reply Reply Quote 0
        • P
          peppino @paul53 last edited by

          @paul53 said in string zerlegen:

          @peppino sagte:

          Mit einer Funktion in Node-Red müsste das doch lösbar sein.

          Von Node-Red habe ich keine Ahnung, aber mit Javascript sollte es so funktionieren:

          let str = "Envelope from: +12345678 (device: 1);Timestamp: 1585568553483 (2020-03-30T11:42:33.483Z);Sender: +12345678 (device: 1);Message timestamp: 1585568553483 (2020-03-30T11:42:33.483Z);Body:Das ist eine Testmeldung";
          let arr = str.split(';');
          let obj = {};
          for(let i = 0; i < arr.length; i++) {
              let pos = arr[i].indexOf(':');
              let ele = arr[i].substring(0, pos).replace(' ', '_');
              let attr = arr[i].substring(pos + 1);
              if(ele == 'Timestamp') attr = formatDate(parseInt(attr), 'DD.MM.JJ hh:mm:ss');
              obj[ele] = attr;
          }
          
          log(obj.Envelope_from);
          log(obj.Timestamp);
          log(obj.Body);
          

          Danke Paul!

          In Javascript funktioniert es einwandfrei.
          Im Node-Red kennt er formatDate nicht.

          ReferenceError: formatDate is not defined (line 15, col 28)
          

          Willst du mir eventuell die Code Zeilen etwas kommentieren was in den jeweiligen Zeilen passiert, ich lerne gerne mit 😉

          Bg

          Joe

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @peppino last edited by

            @peppino sagte:

            Code Zeilen etwas kommentieren was in den jeweiligen Zeilen passiert

            Erledigt (siehe oben).

            P 1 Reply Last reply Reply Quote 0
            • P
              peppino @paul53 last edited by

              @paul53 said in string zerlegen:

              @peppino sagte:

              Code Zeilen etwas kommentieren was in den jeweiligen Zeilen passiert

              Erledigt (siehe oben).

              Danke Dir!

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

              Support us

              ioBroker
              Community Adapters
              Donate
              FAQ Cloud / IOT
              HowTo: Node.js-Update
              HowTo: Backup/Restore
              Downloads
              BLOG

              684
              Online

              31.9k
              Users

              80.3k
              Topics

              1.3m
              Posts

              parser regex
              2
              5
              1482
              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