MQTT
OmniBus has a single shared MQTT client for the whole instance. Configure the broker once on the MQTT page; each port then publishes parsed events and subscribes to command topics under its own prefix.
Broker settings
Set on the MQTT page (or during the first-run wizard):
- Broker URL — e.g.
mqtt://broker.lan:1883ormqtts://broker.lan:8883. - Credentials — username/password if your broker requires them.
- Base topic — the root all port prefixes hang under.
The broker password is stored in plaintext on disk (OmniBus has to present it to the broker), so keep the data directory locked down — see Administration → Backup & Restore and the encrypted-backup option.
Topic prefixes
Each port has a base prefix, default omnibus/<sanitized-port-path>. The
per-protocol topics below are relative to that prefix.
| Protocol | Publishes | Subscribes |
|---|---|---|
| Raw | <prefix>/rx — base64 inbound bytes | <prefix>/tx — outbound (base64 or hex:…) |
| Modbus RTU | <prefix>/response — parsed response; <prefix>/snoop — hex of every frame | <prefix>/request — JSON {"unitId":1,"fc":3,"address":0,"quantity":10} |
| BACnet MS/TP | <prefix>/frame — {frameType, src, dest, length, data, dataCrcOk} | <prefix>/send — {frameType, destination, source, dataHex} or raw hex |
The metering/decoding adapters (M-Bus, DNP3, N2, Jandy, Pentair, Modbus TCP client) publish their decoded points/records under the port prefix as well — see each protocol page.
Payloads are JSON
:::caution Every payload is JSON-encoded
All MQTT payloads OmniBus publishes are JSON — including primitive-typed
ones. A string value goes on the wire as "hello" (with the surrounding
quotes), not bare hello.
This is deliberate. Ignition's MQTT Engine "parse payload as JSON" mode is all-or-nothing: when it's on, raw primitive strings are silently dropped, while objects, numbers, booleans, and JSON-encoded strings all surface as tags. Sticking to JSON keeps OmniBus compatible with any broker-side parse mode. :::
A retained command-topic sentinel (__omnibus_idle__) is published JSON-
encoded for the same reason.
Sparkplug B
OmniBus can publish Sparkplug B alongside plain MQTT, so points land as native tags in Ignition without an intermediate transform. Enable it in the MQTT settings.