Fixed Interval MQTT Publishing

[Note: I posted this previously on Ignition forum but haven’t received any reply that helps. Hoping someone here might be able to shed some light on whether it’s possible without a big workaround]

Hi. We are quite keen to start using Ignition Edge with MQTT Transmission module across a number of our client sites, but we’re hitting an issue that I’m hoping someone can shed some light on.

We are involved in Industrial Energy Efficiency, so a lot of the data we gather in sites is energy data, often in the form of totalised values from energy meters.

Our preferred architecture for getting the data from the edge to our cloud platform is MQTT publishing to AWS IOT Core. I’m aware IOT Core is not properly Sparkplug compliant, but it’s sufficient for our purposes.

My issue is that we want to know the latest value for all of our edge tags every minute, regardless of whether it’s changed or not. A unchanged totalised value is just as informative as a changed one, in that it indicates no energy was consumed in that preceding minute. The problem is that the MQTT Transmission module only seems to publish when the tag value changes and that’s no good to us.

Could I suggest an enhancement to the configuration of a MQTT Transmitter to tell it that all tags it’s responsible for publishing, should be published on a fixed interval (configurable), regardless of whether they have changed since last published. That would solve our problem perfectly and allow us get started on a rollout of Ignition Edge.

Thanks, John.

Currently we do not support periodic publishing from MQTT Transmission. You can force MQTT Transmission to republish the current value for all tags it knows of by triggering a Transmission Refresh. This can be done by writing True to the ‘[MQTT Transmission]Transmission Control/Refresh’ tag. To publish all tags once a min you can create a gateway timer script that writes True to the Refresh tag at that interval.

Another potential solution… we do support periodic publishing from our Cloud Injector modules and you could consider using our AWS Injector at the edge and configure it to push tag values once a min to AWS IoT Core.

Thanks Nathan.

On the second suggestion, I don’t the the Injector module will suit us as we’re only using IOT Core as an MQTT Broker and not using Kinesis etc.

On the first suggestion, given that there’s already a mechanism built in to force republishing, would it not be a small additional step to add to Transmission configuration to tell it to use regular interval publishing and under the hood it can simply use the mechanism that is already there.

Though this only addresses one part of the problem we’re having. We want to slow down publishing of tags that are changing more rapidly (without having to slow down polling) to only publish on a fixed interval. And the second part is to always publish on that fixed interval, whether a tag has changed or not since last publish. The second part might be addressed I think by what you’ve suggested.

Regards, John.