MQTT Engine Historical Backfill and Reference Tags

Hi,

I’m using MQTT Engine to receive Sparkplug B data from an edge device. The device doesn’t support the folder structure I need, so I created UDTs in Ignition using Reference Tags to organize the MQTT Engine tags.

Real-time data historizes correctly through the UDTs.

However, when the edge device reconnects after a network outage and sends backfilled historical data, the MQTT Engine tags historize the backfilled data correctly, but the UDT Reference Tags do not.

I’ve tried:

  • MQTT Engine: Store Historical Events = OFF

  • Tag Provider: Allow Back-fill Data = ON

  • UDT members are Reference Tags with history enabled

Is there a way to have the UDT/Reference Tags historize the MQTT Engine backfilled data while preserving the original timestamps?

Or is this a limitation of Reference Tags/UDTs in Ignition?

Thanks!

You should be able to disable “Store Historical Events” in Engine configuration so historical Sparkplug data is written to the tag and then propagated to the reference tag. This requires the edge node to publish its historical data in order.

If the edge node cannot publish historical data in order, you can disable “Store Historical Events” in Engine config, enable back-fill on the tag provider with the reference tags, and disable metric timestamp validation in MQTT Engine config. This will result in all tag changes (live and historical) being written to the Engine tag. This in turn will cause the reference tags to update. The downside of this configuration is that at any point in time the MQTT Engine tag and reference tag may show an older historical value rather than the live current value.

Thanks,
Nathan

Thanks!
This worked fine.