# No multiple topics

**URL:** <https://discourse.nodered.org/t/no-multiple-topics/45718>\
**Category:** General\
**Created:** [16 May 2021 10:54 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718 "2021-05-16T10:54:15Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![Crashy77](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Crashy77](https://discourse.nodered.org/u/Crashy77)\
**Post date:** [16 May 2021 10:54 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/1 "2021-05-16T10:54:15Z")

</div>

Hi.  
I´m pretty new in Node-Red, but I´m trying to understand it better every day.  
Actually I want to transfer MQTT of my heat pump to my PLC with ADS.  
But I don´t want to use 100´s of MQTT nodes, just only one with /# and then use only the ones I need.  
But how can I do that, to filter for subtopics ?  
Thanks.

Regards, Thorsten

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [16 May 2021 10:58 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/2 "2021-05-16T10:58:44Z")

</div>

That would depend on your topic structure, any answer would be a guess as you do not provide examples of your topics.

you could use a look up object and see if your incoming topic is in the look up object.  
Or  
you could split your topic on "/" and only pass if a certain array value is something you want to pass.

---

<div class="post-metadata">

**Author:** ![Crashy77](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Crashy77](https://discourse.nodered.org/u/Crashy77)\
**Post date:** [16 May 2021 11:03 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/3 "2021-05-16T11:03:01Z")

</div>

Hi.  
The structure is for example "panasonic\_heat\_pump/main/Heatpump\_Status" or "panasonic\_heat\_pump/main/Main\_Inlet\_Temp".  
Behind main/ is one of my suptopics and every subtopic has a value.  
So I´m using "panasonic\_heat\_pump/main/# for calling every subtopic.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [16 May 2021 11:06 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/4 "2021-05-16T11:06:46Z")

</div>

You can use a Switch node to send the message down the different routes by testing `msg.topic` in the Switch rules.

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [16 May 2021 11:07 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/5 "2021-05-16T11:07:13Z")

</div>

so spliting your topic on "/" and selecting an array index would produce a string  
`msg.topic = msg.topic.split("/")[2];`  
outputs  
`"Heatpump_Status"`  
you could then compare in function or switch node for that value.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [16 May 2021 11:10 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/6 "2021-05-16T11:10:03Z")

</div>

> [@E1cid](#):
>
> you could then compare in function or switch node for that value.

Isn't it easier just to test the topic directly in the Switch node?

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [16 May 2021 11:11 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/7 "2021-05-16T11:11:12Z")

</div>

That depends on how long your topic is, I just prefer not having to type long strings, It's just a personnel choice.

Also it allows for different topics starts with same final section

e.g.  
one/two/status  
four/five/status

both would be passed

---

<div class="post-metadata">

**Author:** ![Crashy77](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Crashy77](https://discourse.nodered.org/u/Crashy77)\
**Post date:** [16 May 2021 11:24 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/8 "2021-05-16T11:24:06Z")

</div>

All subtopics just have numbers as a value, no strings.  
[example](https://s20.directupload.net/images/210516/hf96aild.jpg)

MQTT directly to ADS, no visu with Node-Red

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [16 May 2021 11:26 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/9 "2021-05-16T11:26:42Z")

</div>

I am not talking about values, I am showing an example of directing message via msg.topic, which holds the mqtt topic.

---

<div class="post-metadata">

**Author:** ![Crashy77](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Crashy77](https://discourse.nodered.org/u/Crashy77)\
**Post date:** [16 May 2021 12:53 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/10 "2021-05-16T12:53:51Z")

</div>

Switch is working fine for me:  
[result](https://s20.directupload.net/images/210516/qrh2jy8r.jpg)

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [16 May 2021 13:04 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/11 "2021-05-16T13:04:14Z")

</div>

You can use one Switch node with multiple rules, sending each topic to its own output.

---

<div class="post-metadata">

**Author:** ![Crashy77](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Crashy77](https://discourse.nodered.org/u/Crashy77)\
**Post date:** [16 May 2021 13:10 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/12 "2021-05-16T13:10:33Z")

</div>

Yes, I´ve seen it.  
For heatpump states I´m having 9 rules and changing numbers to strings. It´s working fine.

---

<div class="post-metadata">

**Author:** ![Crashy77](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Crashy77](https://discourse.nodered.org/u/Crashy77)\
**Post date:** [16 May 2021 13:52 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/13 "2021-05-16T13:52:09Z")

</div>

How can I do this in the other way ?  
Signals are coming from PLC, for example "1", and must be sent to panasonic\_heat\_pump/main/SetOperationMode.  
But I´m also using /# for the MQTT-Out.  
With the change node it´s not working.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [16 May 2021 14:07 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/14 "2021-05-16T14:07:56Z")

</div>

As described in the help text for the node, leave the topic blank in the Out node and put the topic in msg.topic. In fact I believe that is the original reason that msg.topic is called msg.topic.

---

<div class="post-metadata">

**Author:** ![Crashy77](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Crashy77](https://discourse.nodered.org/u/Crashy77)\
**Post date:** [16 May 2021 14:13 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/15 "2021-05-16T14:13:07Z")

</div>

against missunderstanding:  
"ADS Notification" -\> "CHANGE" with 2 rules: bolean to number & msg.topic with the full path -\> "MQTT-Out" with blank topic ?

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [16 May 2021 14:22 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/16 "2021-05-16T14:22:48Z")

</div>

Sorry, that conveys nothing to me.

---

<div class="post-metadata">

**Author:** ![Crashy77](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Crashy77](https://discourse.nodered.org/u/Crashy77)\
**Post date:** [16 May 2021 14:24 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/17 "2021-05-16T14:24:17Z")

</div>

sorry, but I´m having the solution.  
Using change node with setting msg.topic to the path and leaving the OUT blank. Thanks.

---

<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:** [30 May 2021 14:25 UTC](https://discourse.nodered.org/t/no-multiple-topics/45718/18 "2021-05-30T14:25:13Z")

</div>

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