# Multiple topics / output

**URL:** <https://discourse.nodered.org/t/multiple-topics-output/23751>\
**Category:** General\
**Created:** [27 March 2020 19:26 UTC](https://discourse.nodered.org/t/multiple-topics-output/23751 "2020-03-27T19:26:39Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Secundus](https://avatars.discourse-cdn.com/v4/letter/s/df705f/32.png) [@Secundus](https://discourse.nodered.org/u/Secundus)\
**Post date:** [27 March 2020 19:26 UTC](https://discourse.nodered.org/t/multiple-topics-output/23751/1 "2020-03-27T19:26:39Z")

</div>

Hello everybody;

I've got a no-doubt very newbie question.  
I have a sensor, which gives off a hex string as being the payload. So far I've been able to extract -within a function node- the data, put it in variables and process it as I want it to be. After this however, I got stuck.  
What I basically want to accomplish, is to put the variables in a "msg.payload.", so that I'll end up with one function which accepts the initial payload and outputs one msg with several topics.  
After a few hours of frustration and knowing it must be something simple which I oversee, my temperature sensor can pickup my body temperature... 🙄  
If anybody can help...  
The following is basically the working part..except for the outgoing part.

(test msg.payload = "0802016307684B0673259E026701150402227204022272")

```auto
let payload = msg.payload;

let batteryRaw = payload.substr(4,4);
let humidityRaw = payload.substr(12,2);
let pressureRaw = payload.substr(18,4);
let temperatureRaw = payload.substr(26,4);
let gasRaw = payload.substr(34,4);

let batteryDec = (parseInt(batteryRaw, 16)*0.01);
let humidityDec = (parseInt(humidityRaw, 16)*0.5);
let pressureDec = (parseInt(pressureRaw, 16)*0.1);
let temperatureDec = (parseInt(temperatureRaw, 16)*0.1);
let gasDec = (parseInt(gasRaw, 16)*0.01);

return {payload:temperatureDec};

```

Thank you,

Marc.

---

<div class="post-metadata">

**Author:** ![gerry](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gerry/32/21604_2.png) [@gerry](https://discourse.nodered.org/u/gerry)\
**Post date:** [27 March 2020 19:36 UTC](https://discourse.nodered.org/t/multiple-topics-output/23751/2 "2020-03-27T19:36:55Z")

</div>

I think you are looking for something like this. Not multiple topics but multiple different payloads, bad way of wording this but I'm at a loss for a better description  
msg = {  
topic: "data",  
payload: "sensors",  
battery: batteryraw,  
pressure: pressureraw,  
gas: gasraw,  
}  
return msg;  
and so on, this gives you all your data in one msg but lots of sub-payloads if you will. If this isn't what you are looking for please let us know, I triple checked my syntax but I may have a typo, sometimes hard to see everything on my monitor.  
If you put a debug node on the output of the function node and set it to complete msg object you'll see all the data in the output. You can have as many of these sub-parts as you want in the payload.

---

<div class="post-metadata">

**Author:** ![gerry](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gerry/32/21604_2.png) [@gerry](https://discourse.nodered.org/u/gerry)\
**Post date:** [27 March 2020 19:51 UTC](https://discourse.nodered.org/t/multiple-topics-output/23751/3 "2020-03-27T19:51:28Z")

</div>

One more thought, to get the data out of the msg you would use  
let a = msg.battery;  
let b = msg.pressure;  
let c = msg.gas  
and so on

---

<div class="post-metadata">

**Author:** ![Secundus](https://avatars.discourse-cdn.com/v4/letter/s/df705f/32.png) [@Secundus](https://discourse.nodered.org/u/Secundus)\
**Post date:** [28 March 2020 12:22 UTC](https://discourse.nodered.org/t/multiple-topics-output/23751/4 "2020-03-28T12:22:09Z")

</div>

Hi Gerry!

Thanks for the fast reply, it indeed was the _exact_ thing I wanted to accomplish! After seeing many errors, looking for many (obiously wrong-) terms on Google, I'm now "back on the road"! (and seeking a quick course in js 😉

The complete code for the functionnode is as below. (for the ones interested, it is to decode the RAK7204 environmental sensor, without "decrypting" it through TTN, ChirpStack, or the like.)

Gerry: thanks!!!

```auto
let payload = msg.payload;

let batteryRaw = payload.substr(4,4);
let humidityRaw = payload.substr(12,2);
let pressureRaw = payload.substr(18,4);
let temperatureRaw = payload.substr(26,4);
let gasRaw = payload.substr(34,4);

let batteryDec = (parseInt(batteryRaw, 16)*0.01);
let humidityDec = (parseInt(humidityRaw, 16)*0.5);
let pressureDec = (parseInt(pressureRaw, 16)*0.1);
let temperatureDec = (parseInt(temperatureRaw, 16)*0.1);
let gasDec = (parseInt(gasRaw, 16)*0.01);

msg = {
    topic: "RAK7204",
    payload: payload,
    battery: batteryDec,
    humidity: humidityDec,
    pressure: pressureDec,
    temperature: temperatureDec,
    gas: gasDec,
}

return msg;

```

---

<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:** [11 April 2020 12:24 UTC](https://discourse.nodered.org/t/multiple-topics-output/23751/5 "2020-04-11T12:24:08Z")

</div>

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