Ignition edge(sparkplug message) to hivmq to influxdb

Hello HiveMQ Community,

I hope you are doing well.

I am currently working on an industrial IoT learning project using Ignition Edge, MQTT Sparkplug B, HiveMQ, InfluxDB, and eventually Grafana.

My current architecture is:


Ignition Edge / MQTT Transmission
        → HiveMQ Broker
        → Sparkplug B subscriber/decoder
        → InfluxDB
        → Grafana

Ignition Edge is already publishing Sparkplug B messages to HiveMQ. Now I would like to learn the best way to subscribe to those Sparkplug B messages from HiveMQ, decode them properly, and write the values into InfluxDB.

Does anyone know of a good tutorial, example project, GitHub repository, video, or documentation that shows this complete flow?

Specifically, I am looking for help with:


Ignition Edge Sparkplug B → HiveMQ → InfluxDB

I am also interested in knowing what the most professional or industrial approach would be for the subscriber/decoder layer. For example, should this be done with Python, Node-RED, Telegraf, or another recommended tool?

This project is for a course aimed at engineers, and the goal is to understand a realistic industrial architecture, not only a simple lab demo.

Thank you very much for any guidance, examples, or recommendations.

Best regards,

Jonam

Hello Jonam,

Thanks for reaching out on our HiveMQ Community Forum.

The open API of the HiveMQ extension framework gives developers the freedom to create custom extensions to fit their specific business needs. This framework allows you to seamlessly augment HiveMQ MQTT broker functionality with custom business logic, making it possible to integrate HiveMQ with virtually any external system.
As an example, there is a community-developed Sparkplug / InfluxDB extension available in our HiveMQ repository. Does this content help with your specific use case?

Important Notes:

  • Production Use: Please note that this extension is an exploratory prototype designed to demonstrate HiveMQ’s capabilities; it is not intended for production use.

  • Support: Because this is a community extension, it is not fully supported by HiveMQ, but rather by the community itself.

If you have any questions, please let us know.

Regards,
Gil

We need it for production

El El lun, 6 de jul de 2026 a la(s) 10:40 a.m., HiveMQ Support Team <notifications@hivemq1.discoursemail.com> escribió:

Hello Jonam,

I checked in with our team regarding the extension, and it turns out we don’t have a production-ready version available.
The repository I pointed you to is actually a community maintained example meant to demonstrate HiveMQ’s capabilities.

While we can’t provide technical support for custom or community use cases like this one, we have a lot of great resources available.
I’d suggest taking a look at our official documentation and our supported extensions list to see if an alternative might work for you.

Let us know if we can help you with anything else!

Regards,
Gil

Yes that is my question how to send the spark plug b mqtt messages to Influxdb ,

I hope you are doing very well.
My name is Jonam Sánchez, and I am a professor at a university. I am currently preparing a training course for approximately 20 engineers from an automotive manufacturing plant.
The goal of the training is to teach them how to collect data from a PLC, receive those tags in Ignition Edge, and then publish them to an MQTT broker. In our current lab setup, we are using HiveMQ as the broker.
At this point, I already have Ignition Edge publishing simulated PLC data successfully to HiveMQ using Sparkplug B. I can currently see tags such as Temperature, Flow Rate, and Pressure arriving at the broker in Sparkplug B format.
My original intention was to have a time-series database such as InfluxDB subscribe directly to the MQTT broker, decode the Sparkplug B payloads, store the data, and then visualize it in Grafana. However, after researching this approach, I noticed that decoding Sparkplug B and sending it directly into InfluxDB may require an additional decoder, middleware, or custom service.
Because of that, I am now considering a more industrial and Ignition-centered architecture:
Ignition Edge
→ HiveMQ MQTT Broker
→ Ignition Gateway with MQTT Engine
→ Ignition Tag Historian
→ Database
→ Grafana
The engineers want to learn about time-series databases and how to create dashboards in Grafana, but I also want to keep the architecture industrial, reliable, and appropriate for a real automotive plant environment.
My main questions are:

  1. What is the recommended industrial architecture for consuming Sparkplug B data from HiveMQ into Ignition Gateway?
  2. Should MQTT Engine be used to subscribe to the Sparkplug B data and reconstruct the tags inside Ignition Gateway?
  3. Once the tags are available in Ignition Gateway, what is the best way to send those tags to Ignition Tag Historian?
  4. Is there any official course, tutorial, or documentation that shows the full path from Sparkplug B MQTT data to Ignition Historian?
  5. Once Ignition Historian stores the data in a database, what would be the recommended way to visualize that historical data in Grafana?
  6. In a real implementation, how would an actual PLC send its data into Ignition Edge tags? In my current lab, I am simulating the tags manually, but I would like to understand the correct industrial method for connecting a real PLC to Ignition Edge.

PLEASE HELPE WITH SOME TUTORIAL OR VIDEO! I AM NEW ON ALL OF THIS

This training is very important because the engineers will apply this knowledge in a real automotive plant. Also, if the architecture is clear and successful, it may help the company evaluate and purchase the appropriate Ignition licenses and modules for production use.
I would greatly appreciate your guidance, recommended training materials, or any official resources that could help me teach this correctly.
Thank you very much for your support.
Best regards,
M.C. Jonam Leonel Sánchez Cuevas

El El lun, 6 de jul de 2026 a la(s) 2:49 p.m., HiveMQ Support Team <notifications@hivemq1.discoursemail.com> escribió:

Hi Jonam,

Yes — for your use case, the recommended industrial path is the architecture you proposed:
PLC → Ignition Edge → MQTT Transmission (Sparkplug B) → HiveMQ Broker → Ignition Gateway + MQTT Engine → Tag Historian → SQL database → Grafana.

That is the cleanest way to keep the OT side Sparkplug-compliant while letting Ignition reconstruct tags and handle historian storage in the way its ecosystem expects.
Also, for exact Ignition/Cirrus Link settings, I would validate the final module configuration against Cirrus Link and Inductive Automation documentation, since HiveMQ is the broker layer and not the configuration authority for Ignition.

Figure 1 below shows a representative high-level industrial pattern with HiveMQ between edge/OT devices and downstream IT systems.

1) What is the recommended industrial architecture?Use Ignition Edge to acquire PLC data and publish Sparkplug B through HiveMQ, then use a central Ignition Gateway with MQTT Engine as the Sparkplug subscriber/primary application, and historian storage behind that.

I would recommend this over trying to make InfluxDB subscribe directly to raw Sparkplug B for a beginner training, because Ignition + MQTT Engine gives you automatic tag reconstruction and a more standard OT workflow for engineers who are new to the stack.

2) Should MQTT Engine be used to subscribe to the Sparkplug B data and reconstruct the tags?Yes. MQTT Engine is the right module for this role: it connects to the broker, subscribes to Sparkplug messages, and automatically discovers/reconstructs the published tag structure inside Ignition.

Figure 2 below shows where the MQTT Engine configuration lives in Ignition.

Figure 3 below shows an example MQTT Engine server-set configuration screen.

3) Once the tags are available in Ignition Gateway, what is the best way to send them to Tag Historian?The best practice is to enable history in Ignition and use Tag Historian with a SQL database behind it.

For MQTT Engine specifically, Cirrus Link documents two valid history patterns:

  • write historical events directly to the historian/database (default behavior), or
  • write historical events to the tag first, then let Ignition process them.
    For most projects, I would start with the default direct-to-historian approach. If you need tag-change scripts, alarms, or indirect reference-tag behavior during backfill, use the alternate in-order mode instead.
    Cirrus Link also recommends using Reference Tags to indirectly reference MQTT Engine tags when you want history configuration to persist cleanly, because MQTT Engine tags may be deleted/recreated in some cases.

4) Is there any official course, tutorial, or documentation for the full path?Yes — these are the best resources to send them:

5) Once Ignition Historian stores the data, what is the recommended way to visualize it in Grafana?Ignition Historian stores history in SQL, but Inductive’s documentation notes that the data does not lend itself well to direct querying and is normally consumed through Ignition’s historian querying/bindings/reporting tools.

So if Grafana is required, I would avoid teaching direct ad hoc SQL against Ignition historian tables as the primary method. A safer approach is either:

  • use Ignition’s own charts first for the historian lesson, then
  • expose curated history to Grafana through a controlled API/plugin path, or mirror the data into a Grafana-friendly analytics store for dashboarding.
    If the goal of the class is specifically “time-series database + Grafana”, then it is often simpler to keep Grafana paired with a dedicated analytics/time-series store, while letting Ignition Historian serve the OT/historian role.

6) In a real implementation, how does a real PLC send data into Ignition Edge tags?In production, the PLC normally does not write directly into “manual tags.” Instead, Ignition Edge connects to the PLC through an industrial protocol/driver such as OPC UA, Modbus TCP, or a vendor-specific driver, and those live values become Ignition tags.

Then MQTT Transmission publishes those Ignition tags as Sparkplug B to HiveMQ.
So the real industrial chain is:
PLC → industrial driver/OPC UA in Ignition Edge → Ignition tags → MQTT Transmission → HiveMQ.

Figure 4 below shows a broker-side validation view once the Ignition clients are connected.

Please note, we will not be able to provide any further assistance with for topics/content that reside outside of the HiveMQ product.
We advise consulting with Cirrus Link, Inductive Automation, etc, for further inquiries.

Regards,
Gil

Hello HiveMQ Support Team,

Thank you very much for your kind and helpful response. I really appreciate your support. Your team has been excellent and very generous with your guidance.

At the moment, I have three simulated PLC tag values in Ignition Edge, and Ignition Edge is already publishing the information to HiveMQ every time there is a change. This is for a training course I will give to 20 engineers who work in automotive plants. After the course, it is very likely that they will evaluate or purchase HiveMQ and Ignition licenses for real industrial use.

However, at this point I only know how to publish the data from Ignition Edge to HiveMQ. I still need guidance on the next step: how to subscribe to the Sparkplug B data from HiveMQ using Ignition “Gateway ???” or what is the name of Ignition?.

My understanding is that, for this part, I should install the full Ignition Gateway and use the MQTT Engine module. Is that correct?

For training purposes, can I install Ignition Gateway on another computer, or can I install it on the same computer as Ignition Edge using different ports? Also, which Ignition version or setup would you recommend for a simple but realistic industrial training environment?

After receiving the Sparkplug B data in Ignition “Gateway”, my goal is to send or visualize the data in Grafana/

Could you please recommend the best tutorial, documentation, or video to learn this specific flow?

HiveMQ → Ignition Gateway / MQTT Engine → Historian or database → Grafana

I see that there is a lot of information available, but I would like to build something simple, functional, and still appropriate for automotive plant engineers who may later apply this architecture in real industrial environments.

Thank you again for your help. I truly appreciate your support, and I want this course to be successful and technically correct for industrial use.

Best regards,
M.C. Jonam Leonel Sánchez Cuevas

Hello you miss the figures

Hello Jonam,

To subscribe to Sparkplug B data from HiveMQ in Ignition, the component you are looking for is the Inductive Automation Ignition Gateway using the Cirrus Link MQTT Engine module.
In short:

  • Ignition Gateway is the Ignition runtime/server component that connects to HiveMQ and consumes the Sparkplug B data.

  • MQTT Engine is the Ignition module used to subscribe to and ingest Sparkplug B messages from the broker.

  • If you also need Ignition to publish Sparkplug B data, that is typically done with the MQTT Transmission module.

If you are using Sparkplug B, make sure the Primary Host Enabled option is checked in the MQTT Engine configuration so the Sparkplug state messaging works correctly.
So the correct name to refer to on the Ignition side is usually:

  • Ignition Gateway

  • with the MQTT Engine module for subscribing to Sparkplug B data from HiveMQ

Sources:

​HiveMQ does not have a video or formal documentation that explains the flow that you require.
The best case, is to start with our blog, that explains the Transmission and Engine module.

Regards,
Gil

Gil,

Thank you for your guidance!

Is it possible to send the Mqtt Engine (tags) send to influxdb or grafana ?

I think for influxdb is not possible and for grafana maybe through an API

Is it possible ?

El El vie, 10 de jul de 2026 a la(s) 9:26 a.m., HiveMQ Support Team <notifications@hivemq1.discoursemail.com> escribió: