# MQTT Transmission module

**URL:** <https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575>\
**Category:** General Discussion\
**Tags:** ignition81, scripting, perspective\
**Created:** [April 25, 2025, 4:23pm UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575 "2025-04-25T16:23:45Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Marcos\_Verdugo](https://avatars.discourse-cdn.com/v4/letter/m/ecc23a/32.png) [@Marcos\_Verdugo](https://forum.inductiveautomation.com/u/Marcos_Verdugo)\
**Post date:** [April 25, 2025, 4:23pm UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575/1 "2025-04-25T16:23:45Z")

</div>

Hi, I am working on a MQTT application using the MQTT modules (Engine and Transmission) What I do is basically read some data from Node-Red, I read this data on Ignition, and then I publish it back to Node-Red. I have solved the communication stuff, I can read and write, the thing is that I need to receive periodically the data on Node-Red. What I have investigated is that MQTT Transmission module uses the Sparkplug B protocol, which doesnt publish data periodically, it uses messages types like DBIRTH, DDATA and DDEATH. On DDATA it publishes just the variable that have changed, and in the other 2 it publishes ALL the data when the connection is started or ended.

Is there a way of publishing ALL the data periodically? I need this because sometimes I lost data when I only listen to the DDATA messages. Or even if I can retain the values on the topics, that also will be great.

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [April 27, 2025, 10:09pm UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575/2 "2025-04-27T22:09:54Z")

</div>

That's not how Sparkplug works. For Sparkplug there's a primary host ID that the listener/subscriber of the primary server publishes to that tells the transmission side that it's online and ready to receive data. It's up to the engine side to get the birth message from transmission and record all the initial values and just changes from then on. I'd have to look it up again but I believe there's a 3rd party module named HydraMQTT or something like that on Github that will do vanilla MQTT. Not sure though if it publishes data on a periodic basis or only on change though.

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [April 27, 2025, 10:31pm UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575/3 "2025-04-27T22:31:40Z")

</div>

Hydra MQTT is very buggy and doesn't support any authentication or encryption, I am in the middle of working on a vanilla MQTT Client with both encryption and authentication.

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [April 28, 2025, 5:03am UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575/4 "2025-04-28T05:03:10Z")

</div>

I don't understand why CirrusLink hasn't implemented this yet. I would think it would be easier than Sparkplug B and would make the module more compatible with other systems that don't support SpB yet.

---

<div class="post-metadata">

**Author:** ![Marcos\_Verdugo](https://avatars.discourse-cdn.com/v4/letter/m/ecc23a/32.png) [@Marcos\_Verdugo](https://forum.inductiveautomation.com/u/Marcos_Verdugo)\
**Post date:** [April 28, 2025, 6:39am UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575/5 "2025-04-28T06:39:13Z")

</div>

I guess I will need to get the initial values on the DBIRTH message and then listen to the DDATA for every change then.

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [April 28, 2025, 11:14am UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575/6 "2025-04-28T11:14:03Z")

</div>

If you're using MQTT Engine, this is fine automatically for you. Does Node-Red have a Sparkplug compatible MQTT module?

---

<div class="post-metadata">

**Author:** ![kcollins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kcollins/32/19646_2.png) [@kcollins](https://forum.inductiveautomation.com/u/kcollins)\
**Post date:** [April 28, 2025, 1:59pm UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575/7 "2025-04-28T13:59:32Z")

</div>

Node-RED does have a Sparkplug node. I [spun it up a while back](https://forum.inductiveautomation.com/t/issues-with-ignition-and-ignition-designer-while-using-node-red/62357/4) and was able to get it working quite nicely.

---

<div class="post-metadata">

**Author:** ![kcollins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kcollins/32/19646_2.png) [@kcollins](https://forum.inductiveautomation.com/u/kcollins)\
**Post date:** [April 28, 2025, 2:08pm UTC](https://forum.inductiveautomation.com/t/mqtt-transmission-module/105575/8 "2025-04-28T14:08:01Z")

</div>

> [@michael.flagler](#):
>
> I'd have to look it up again but I believe there's a 3rd party module named HydraMQTT or something like that on Github that will do vanilla MQTT. Not sure though if it publishes data on a periodic basis or only on change though.

You might find the relatively new [UNS Transmitters](https://docs.chariot.io/display/CLD80/MT%3A+Configuration#MT:Configuration-unstransmitterUNSTransmitters) functionality of MQTT Transmission handy for publishing to non-SpB aware entities. It publishes on-change in a more user-friendly JSON format across a hierarchical topic namespace.
