# How to split data from serial communication

**URL:** <https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927>\
**Category:** General\
**Created:** [2 November 2022 04:31 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927 "2022-11-02T04:31:09Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![afafirmansyah](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/afafirmansyah/32/70076_2.png) [@afafirmansyah](https://discourse.nodered.org/u/afafirmansyah)\
**Post date:** [2 November 2022 04:31 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/1 "2022-11-02T04:31:09Z")

</div>

How to split data from character 25 to 30 and 31 to 35?

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/e/2/e255b0c3545cd1b645a29b04b4de0d9b6b08b854.png)

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [2 November 2022 04:33 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/2 "2022-11-02T04:33:27Z")

</div>

I'm not sure I exactly understand your question, but the `split` node may be a start.

---

<div class="post-metadata">

**Author:** ![afafirmansyah](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/afafirmansyah/32/70076_2.png) [@afafirmansyah](https://discourse.nodered.org/u/afafirmansyah)\
**Post date:** [2 November 2022 04:36 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/3 "2022-11-02T04:36:46Z")

</div>

I mean split characters like my picture below, character number 26-34

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/d/e/def0e07fe8e6b10a8f8775a700f6d3546e25ed69.png)

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [2 November 2022 04:40 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/4 "2022-11-02T04:40:04Z")

</div>

I fear it is not going to be easy if they are _blank_ or `spaces`.

Who or what is creating these messages?  
It is just it may be easier if you can define a delimiter like a `,` between the _fields_

---

<div class="post-metadata">

**Author:** ![afafirmansyah](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/afafirmansyah/32/70076_2.png) [@afafirmansyah](https://discourse.nodered.org/u/afafirmansyah)\
**Post date:** [2 November 2022 04:43 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/5 "2022-11-02T04:43:09Z")

</div>

this message got from sensor, so I can't change it.  
is there any solution for this problem?

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [2 November 2022 04:45 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/6 "2022-11-02T04:45:41Z")

</div>

Can you put a `debug` node where this message comes from and paste the message here (formatted) so I (and others) can see what it really looks like?

Sorry if that is not as easy as it sounds for you. No offense. How good are you with node-red?

---

<div class="post-metadata">

**Author:** ![afafirmansyah](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/afafirmansyah/32/70076_2.png) [@afafirmansyah](https://discourse.nodered.org/u/afafirmansyah)\
**Post date:** [2 November 2022 04:53 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/7 "2022-11-02T04:53:04Z")

</div>

```auto
[
    {
        "id": "87cdb5b3b0411da1",
        "type": "inject",
        "z": "8708c8565a0e32f0",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "H32022-11- 2 12:14:12 DAT11111111T22222222T33333333L 0 0 0 0 0 0 0V10.0A 0.00O 0.0",
        "payloadType": "str",
        "x": 350,
        "y": 80,
        "wires": [
            [
                "ae23bdfde7f32cd3"
            ]
        ]
    },
    {
        "id": "ae23bdfde7f32cd3",
        "type": "debug",
        "z": "8708c8565a0e32f0",
        "name": "debug 10",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 540,
        "y": 80,
        "wires": []
    }
]

```

---

<div class="post-metadata">

**Author:** ![afafirmansyah](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/afafirmansyah/32/70076_2.png) [@afafirmansyah](https://discourse.nodered.org/u/afafirmansyah)\
**Post date:** [2 November 2022 04:58 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/8 "2022-11-02T04:58:01Z")

</div>

i want a function like this, how do i write it in node-red?

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/6/d/6d247a10d6c0dd0efb24e3c14d16025c5efc997a.png)

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [2 November 2022 05:00 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/9 "2022-11-02T05:00:29Z")

</div>

OK, thanks.

Let me have a look and I'll get back to you.

Tip:  
That is the entire message. Fair enough.  
The _item of interest_ is the `payload` part.  
Up near where you copied the message, there should be a little `triangle`.  
Example.

![Screenshot from 2022-11-02 15-56-58](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/f/0/f0ac151d22fe7c7ace7594c5233fd7507f2ae9fd.png)

![Screenshot from 2022-11-02 15-57-08](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/4/7/477a47a80ea12fa5d039fe288e3c6ab10f4551ec.png)

and finally

![Screenshot from 2022-11-02 15-57-21](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/6/2/62e17bbb208374045e8115e9704d94f23ecc0f6c.png)

Then all you get is the `payload` part.

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [2 November 2022 05:02 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/10 "2022-11-02T05:02:53Z")

</div>

(OCD sucks)

I think you nearly have what you want in Javascript.

Just something like:  
`let result = text.substr(1,4);`

I'm no javascript person, but if you search for `javascript substring` I am sure you will get results.

---

<div class="post-metadata">

**Author:** ![afafirmansyah](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/afafirmansyah/32/70076_2.png) [@afafirmansyah](https://discourse.nodered.org/u/afafirmansyah)\
**Post date:** [2 November 2022 05:05 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/11 "2022-11-02T05:05:13Z")

</div>

Hi, thanks for your respone, proble solve with the string.slice

```auto
const string = msg.payload;
const bits = [["name1",2,5],["name2",5,8],["name3",8,13],["name4",13,19]];
msg.payload = bits.reduce((acc, arr) => {
    return Object.assign(acc, {[arr[0]]:string.slice(arr[1],arr[2])});
},{});
return msg;

```

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [2 November 2022 05:07 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/12 "2022-11-02T05:07:56Z")

</div>

> **[JavaScript String substring() Method](https://www.w3schools.com/jsref/jsref_substring.asp)**
>
> W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

```auto
let text = "Hello world!";
let result = text.substring(1, 4);

```

Quick search.

Seems a lot easier / like what you asked.  
But if that works. 😉

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [1 January 2023 05:08 UTC](https://discourse.nodered.org/t/how-to-split-data-from-serial-communication/69927/13 "2023-01-01T05:08:02Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
