# Pick just one value from a MQTT message

**URL:** <https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998>\
**Category:** General\
**Created:** [10 December 2019 14:32 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998 "2019-12-10T14:32:25Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [10 December 2019 14:32 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/1 "2019-12-10T14:32:25Z")

</div>

Probaly simple for others but I got stuck.  
I have som esp8266 with tasmota 7.1 and lux meter.  
I want just the value to be sent to dashboard and MYSQL.  
The message looks like this:  
{"Time":"2019-12-10T15:30:16","TSL2561":{"Illuminance":56.190}}

How can I get Node-Red just to send the Illuminance value to next node thats a Dashboard or "insert into mysql" node?

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [10 December 2019 14:40 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/2 "2019-12-10T14:40:02Z")

</div>

Hi @Quart666

This page in the docs should give you some tips on how to work with messages, understand their structure and access the different parts of it: [https://nodered.org/docs/user-guide/messages](https://nodered.org/docs/user-guide/messages)

---

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [10 December 2019 14:49 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/3 "2019-12-10T14:49:49Z")

</div>

I have read that page but still dont get it ☹  
I now do this but still miss the target  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/b/be5256978c7766c3245ef62676414fd2aa410125.png)

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [10 December 2019 14:52 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/4 "2019-12-10T14:52:25Z")

</div>

@Quart666 so the property you are interested in is `msg.payload.TSL2561.Illuminance`

You could add a Change node to set `msg.payload` to the value of `msg.payload.TSL2561.Illuminance`. Most Dashboard nodes will use `msg.payload` by default.

---

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [10 December 2019 15:14 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/5 "2019-12-10T15:14:08Z")

</div>

Humm  
I am a newbie.  
Is this right?

```auto
[{"id":"8dbf67eb.fd5df8","type":"mqtt in","z":"76eae6e0.698b98","name":"","topic":"tele/tasmotatest/SENSOR","qos":"2","datatype":"json","broker":"fbf559eb.beb7d8","x":150,"y":1980,"wires":[["d54d210c.d2c2e"]]},{"id":"729bf046.a8b45","type":"debug","z":"76eae6e0.698b98","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":950,"y":1980,"wires":[]},{"id":"d54d210c.d2c2e","type":"change","z":"76eae6e0.698b98","name":"","rules":[{"t":"set","p":"payload.TSL2561.Illuminance","pt":"msg","to":"","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":1980,"wires":[["729bf046.a8b45"]]},{"id":"fbf559eb.beb7d8","type":"mqtt-broker","z":"","name":"Mosquitto MQTT Server","broker":"192.168.1.12","port":"1883","clientid":"node-red","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

```

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [10 December 2019 15:26 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/6 "2019-12-10T15:26:14Z")

</div>

The first entry here is what you have got. The second shows what I suggest you should try.

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

You want to set the value of `msg.payload` to the value of `msg.payload.TSL......`.

---

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [11 December 2019 07:26 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/7 "2019-12-11T07:26:06Z")

</div>

THanks for your input.  
But now I got this  
tele/tasmotatest/SENSOR : msg.payload : string[62]

"{"Time":"2019-12-11T08:24:56","TSL2561":{"Illuminance":6.524}}"

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [11 December 2019 07:38 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/8 "2019-12-11T07:38:44Z")

</div>

Did you change anything?

Earlier you had a properly parsed object. You now have a JSON string. The link I sent in my first reply explains the difference and how to convert one to the other.

---

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [11 December 2019 08:31 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/9 "2019-12-11T08:31:39Z")

</div>

Probaly do this to complex but now it works..

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

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [11 December 2019 08:34 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/10 "2019-12-11T08:34:52Z")

</div>

@Quart666 you don't need to do that.

The MQTT node is passing on a JSON String. Use a JSON node to convert it to a JavaScript Object where you can access its properties as you did in the earlier replies.

All of this is explained in the docs I linked to.

---

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [11 December 2019 08:44 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/11 "2019-12-11T08:44:36Z")

</div>

So first the json and then the change node?

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [11 December 2019 09:07 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/12 "2019-12-11T09:07:33Z")

</div>

At this point, I suggest you just try it and use Debug nodes along the flow to understand what you have at each stage.

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [11 December 2019 09:43 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/13 "2019-12-11T09:43:04Z")

</div>

> [@Quart666](#):
>
> tele/tasmotatest/SENSOR

Make sure your MQTT node produces JSON before feeding it into the change node

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

---

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [11 December 2019 10:28 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/14 "2019-12-11T10:28:18Z")

</div>

Finally..

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

---

<div class="post-metadata">

**Author:** ![dynamicdave](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dynamicdave/32/96_2.png) [@dynamicdave](https://discourse.nodered.org/u/dynamicdave)\
**Post date:** [11 December 2019 10:38 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/15 "2019-12-11T10:38:20Z")

</div>

As Simon pointed out, you don't need the {json} node, in your flow, if you select the 'parsed JSON object' option in the MQTT-In node.

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [11 December 2019 10:47 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/16 "2019-12-11T10:47:20Z")

</div>

Set the mqtt node output to "a parsed JSON object",  
Remove the json node,  
Remove the change node  
Enter in the gauge node: `msg.payload.TSL2561.Illuminance`

The beauty of node-red.

---

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [11 December 2019 10:54 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/17 "2019-12-11T10:54:56Z")

</div>

Thanks, I must be missing something  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/c/c286d1d2e11f7f8524de921501598b4f83cf706d.png)

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [11 December 2019 11:06 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/18 "2019-12-11T11:06:20Z")

</div>

In your Change node, make sure you have `msg` selected in the input where you have entered `payload.TSL2....`.

From your screenshot, it suggests you currently have that set to `String` rather than `msg` - so you are setting it to the literal string `payload.TLS2...` rather than looking up the value from the message object.

Look back at the screenshot of the Change node I provided and compare it to what you have got.

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [11 December 2019 11:11 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/19 "2019-12-11T11:11:44Z")

</div>

> [@bakman2](#):
>
> Remove the change node  
> Enter in the gauge node: `msg.payload.TSL2561.Illuminance`

@Quart666 wants to get the value into an SQL database as well as a gauge, so I think its best to try and stick with @knolleary method and extract the value as early on as possible

---

<div class="post-metadata">

**Author:** ![Quart666](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quart666/32/12072_2.png) [@Quart666](https://discourse.nodered.org/u/Quart666)\
**Post date:** [11 December 2019 11:38 UTC](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998/20 "2019-12-11T11:38:37Z")

</div>

Final version

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

[Next page](https://discourse.nodered.org/t/pick-just-one-value-from-a-mqtt-message/18998.md?page=2)
