# Function extract value help

**URL:** <https://discourse.nodered.org/t/function-extract-value-help/3563>\
**Category:** General\
**Created:** [29 September 2018 21:18 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563 "2018-09-29T21:18:04Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![cismarine](https://avatars.discourse-cdn.com/v4/letter/c/dbc845/32.png) [@cismarine](https://discourse.nodered.org/u/cismarine)\
**Post date:** [29 September 2018 21:18 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/1 "2018-09-29T21:18:04Z")

</div>

hi guys,

I have simple question.  
working on some rough data and want to extract just the value in function node:

{"topic":"xiaomi/lounge/th","payload":{"cmd":"report","model":"weather.v1","sid":"158d000201b16a","short\_id":33470,"data":"{"temperature":"2803"}"},"qos":0,"retain":false,"\_msgid":"cc82776e.9b0708"}

just need numeric value of temperature out of it. Possibly with proper formatting 28.0 instead of 2803.  
can anyone help?

thanks

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [29 September 2018 22:04 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/2 "2018-09-29T22:04:44Z")

</div>

divide by 1000?

---

<div class="post-metadata">

**Author:** ![ghayne](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ghayne/32/39_2.png) [@ghayne](https://discourse.nodered.org/u/ghayne)\
**Post date:** [29 September 2018 22:08 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/3 "2018-09-29T22:08:53Z")

</div>

> [@ukmoose](#):
>
> divide by 1000?

Cough 😉

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [29 September 2018 22:17 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/4 "2018-09-29T22:17:54Z")

</div>

oops! I’m blaming auto correct!

---

<div class="post-metadata">

**Author:** ![Paul-Reed](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/paul-reed/32/66906_2.png) [@Paul-Reed](https://discourse.nodered.org/u/Paul-Reed)\
**Post date:** [29 September 2018 22:19 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/5 "2018-09-29T22:19:59Z")

</div>

@cismarine - divide by 100

---

<div class="post-metadata">

**Author:** ![cismarine](https://avatars.discourse-cdn.com/v4/letter/c/dbc845/32.png) [@cismarine](https://discourse.nodered.org/u/cismarine)\
**Post date:** [29 September 2018 22:29 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/6 "2018-09-29T22:29:01Z")

</div>

Thanks Paul,  
That is the easy part, but how do I get just the numeric value out of the object?

---

<div class="post-metadata">

**Author:** ![Paul-Reed](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/paul-reed/32/66906_2.png) [@Paul-Reed](https://discourse.nodered.org/u/Paul-Reed)\
**Post date:** [29 September 2018 22:35 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/7 "2018-09-29T22:35:02Z")

</div>

If you attach a debug node to the incoming message, what do you see?

---

<div class="post-metadata">

**Author:** ![cismarine](https://avatars.discourse-cdn.com/v4/letter/c/dbc845/32.png) [@cismarine](https://discourse.nodered.org/u/cismarine)\
**Post date:** [29 September 2018 22:41 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/8 "2018-09-29T22:41:37Z")

</div>

that's output from my mqtt:

{"topic":"xiaomi/lounge/th","payload":{"cmd":"report","model":"weather.v1","sid":"158d000201b16a","short\_id":33470,"data":"{"humidity":"9334"}"},"qos":0,"retain":false,"\_msgid":"53f2dd35.0db3d4"}

---

<div class="post-metadata">

**Author:** ![cflurin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cflurin/32/29_2.png) [@cflurin](https://discourse.nodered.org/u/cflurin)\
**Post date:** [30 September 2018 05:12 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/9 "2018-09-30T05:12:47Z")

</div>

Wire the mqtt-in node to a function-node:

```auto
var xm_msg = JSON.parse(msg.payload);

if (xm_msg.data) {
    var data = JSON.parse(xm_msg.data);

    if (data.temperature) {
        msg.payload = {"temperature": Math.round(data.temperature / 100)};
    } else if (data.humidity) {
        msg.payload = {"humidity": Math.round(data.humidity / 100)};
    }
}

return msg;

```

---

<div class="post-metadata">

**Author:** ![cismarine](https://avatars.discourse-cdn.com/v4/letter/c/dbc845/32.png) [@cismarine](https://discourse.nodered.org/u/cismarine)\
**Post date:** [30 September 2018 12:17 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/10 "2018-09-30T12:17:03Z")

</div>

Thank you very much.

---

<div class="post-metadata">

**Author:** ![cismarine](https://avatars.discourse-cdn.com/v4/letter/c/dbc845/32.png) [@cismarine](https://discourse.nodered.org/u/cismarine)\
**Post date:** [30 September 2018 13:30 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/11 "2018-09-30T13:30:31Z")

</div>

I have tested it and added couple more values.  
Now I have follow up question...  
How can I send each individual value on different function output?

return [msg1,msg2,msg3,msg4];

TIA

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [30 September 2018 13:35 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/12 "2018-09-30T13:35:29Z")

</div>

Have you read the docs?

[https://nodered.org/docs/writing-functions#multiple-outputs](https://nodered.org/docs/writing-functions#multiple-outputs)

---

<div class="post-metadata">

**Author:** ![cflurin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cflurin/32/29_2.png) [@cflurin](https://discourse.nodered.org/u/cflurin)\
**Post date:** [30 September 2018 15:00 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/13 "2018-09-30T15:00:57Z")

</div>

I suppose you are using several xiaomi devices. If so, you will have to select several parameters (cmd, sid, model). I would use switch nodes to do the job.  
Which xiaomi models are you using?

---

<div class="post-metadata">

**Author:** ![cismarine](https://avatars.discourse-cdn.com/v4/letter/c/dbc845/32.png) [@cismarine](https://discourse.nodered.org/u/cismarine)\
**Post date:** [30 September 2018 17:26 UTC](https://discourse.nodered.org/t/function-extract-value-help/3563/14 "2018-09-30T17:26:39Z")

</div>

quite a few. Mainly aquara sensors.  
I inject their data into mqtt already sorted by device (with separate topics)
