Skip to content

Artek MQTT

The Artek MQTT suite connects an Ignition gateway to MQTT brokers natively. You can publish tags to MQTT (including as a Unified Namespace), turn subscribed MQTT topics into Ignition tags, and run a Sparkplug B edge node or host application, all from gateway modules with no external bridge.

Where Artek MQTT fits Inside the Ignition gateway, Artek MQTT Pub publishes tags and script messages, Sub turns subscribed topics into tags in an MQTT tag provider, and Common holds the broker connections. Messages travel through one or more MQTT brokers to consumers and from field devices. Ignition Gateway Tags any tag provider Scripts system.artekmqtt.publish MQTT tag provider topics become tags; write back if allowed; script callbacks Artek MQTT Pub UNS publishing from your tag tree; Sparkplug B edge node Sub subscriptions into tags; Sparkplug B host application Common broker connections, failover, TLS, store-and-forward, status MQTT broker(s) MQTT 5.0 or 3.1.1; primary and backup Consumers UNS, cloud, historians, other SCADA Field devices Sparkplug edge nodes, gateways, sensors
Pub publishes, Sub subscribes, Common holds the broker connections they share.

The suite is MQTT 5.0 first, with MQTT 3.1.1 selectable per connection. It uses TLS everywhere you need it and implements the Eclipse Sparkplug 3.0 specification (see Sparkplug B for the Eclipse Sparkplug TCK results).

The three modules

Module Module id What it does
Artek-MQTT-Common com.artek.mqtt.common The shared foundation. Named broker connection profiles (several brokers at once, primary/backup failover), the MQTT 5.0 and 3.1.1 client, TLS and mutual TLS, store-and-forward, connection status, and the Connections web page.
Artek-MQTT-Pub com.artek.mqtt.pub The publish side. Declarative tag-to-topic mappings with a first-class UNS mode and per-mapping broker routing, the system.artekmqtt.* scripting functions (Gateway and Designer scope), and a Sparkplug B edge node that is aware of the primary host. Requires Common.
Artek-MQTT-Sub com.artek.mqtt.sub The subscribe side. A managed tag provider (subscribed topics appear as tags), MQTT 5 shared subscriptions, per-subscription gateway script callbacks, optional write-back, and a Sparkplug B host application. Requires Common.

Pub and Sub both depend on Common: they refer to broker connections by profile name and publish and subscribe through Common's connections.

Which modules you need

You want to Install
Publish tag values to a broker, build a UNS, or call system.artekmqtt.publish from scripts Common + Pub
Bring MQTT data into Ignition as tags, or run a script when a message arrives Common + Sub
Run a Sparkplug B edge node Common + Pub
Run a Sparkplug B host application Common + Sub
Do both directions Common + Pub + Sub

Common is always required. Install every module you use from the same release (see Install).

Requirements

  • Ignition 8.3.4 or later. The modules declare 8.3.4 as their minimum Ignition version and do not run on Ignition 8.1 or earlier.
  • Scope. Common and Sub run in Gateway scope. Pub runs in Gateway scope and adds a Designer-scope part so that system.artekmqtt.* autocompletes in the Designer. No Vision client scope is needed.
  • A broker. Any MQTT 5.0 or 3.1.1 broker. MQTT 5 shared subscriptions require an MQTT 5 connection.

MQTT 5.0, first class

MQTT 5.0 is the default protocol, and its features are exposed as configuration: shared subscriptions, user properties, message expiry, topic aliases, session expiry, reason codes and will delay. The plain MQTT and UNS publish path supports QoS 1 with store-and-forward, so messages published while the broker is unreachable are sent when it comes back (at-least-once delivery, within the queue's limits). Sparkplug works over either MQTT 5.0 or 3.1.1.

Where to configure it

The modules add an Artek MQTT section to the gateway web interface with these pages:

Page Module Purpose
Connections Common Create and edit broker connection profiles, and see each one's live status.
Publishers Pub Tag-to-topic mappings, with per-mapping counters.
Edge Nodes Pub Sparkplug B edge nodes.
Subscriptions Sub Topic subscriptions, with per-subscription counters.
Host Applications Sub Sparkplug B host applications.

Every setting is also an Ignition 8.3 config resource on disk, so it can be managed as code (see Configuration as code).

Licensing

For licensing, see artekis.io or contact Artek.

Each .modl contains a license.html (the Artek End User License Agreement and the full third-party notices for that module), which the gateway shows when you install it.

Third-party components

All of these are bundled inside the .modl files.

Component Version Bundled in License
HiveMQ MQTT Client (shaded; incorporates Netty) 1.3.16 Common Apache-2.0
RxJava 2.2.21 Common Apache-2.0
Reactive Streams 1.0.4 Common MIT-0
Eclipse Tahu (tahu-core) 1.0.20 Pub, Sub EPL-2.0 (unmodified, object form; source: github.com/eclipse-tahu/tahu)
Protocol Buffers Java 3.25.5 Pub, Sub BSD-3-Clause

Common's notices also cover the components shaded inside the HiveMQ client (Netty, JCTools, Dagger, javax.inject, JetBrains annotations).

Trademarks and attribution

Ignition® is a registered trademark of Inductive Automation, LLC. The Artek MQTT suite is an independent Artek product, not affiliated with or endorsed by Inductive Automation.

Sparkplug® and the Sparkplug logo are registered trademarks of the Eclipse Foundation. The suite implements the Eclipse Sparkplug 3.0 specification (Eclipse Foundation Specification License) and publishes its Eclipse Sparkplug TCK results as factual test evidence. It is not certified under the Eclipse Sparkplug Compatibility Program.

In this manual

  • Install: install, upgrade and verify the modules.
  • Connections: broker profiles, failover, TLS, store-and-forward, status.
  • Publishing: mappings, UNS mode, triggers, payload formats, MQTT 5 options.
  • Subscribing: subscriptions, the managed tag provider, JSON expansion, script callbacks, write-back.
  • Sparkplug B: edge node, host application, TCK results.
  • Scripting: the system.artekmqtt.* functions.
  • Configuration as code: editing config on disk and the web API.
  • Security: how the suite handles secrets, limits, redundancy and audit.
  • Release notes