MQTT Engine - Filtered Properties

Hi,

I was under the impression that the non-filtered tag properties sent over MQTT Transmission would populate automatically in the MQTT Engine tags on BIRTH. So far, I tried many different scenarios with no luck to get this working.

Versions:
Ignition Edge 8.1.33 - MQTT Transmission 4.0.20
Ignition Standard 8.1.32 - MQTT Engine 4.0.20
Default Sparkplug B namespace and other default settings

Edge Transmitter Config:
Convert UDTs - Enabled
Device level UDTs as Devices - Enabled

Under Advanced Settings/Filtered Properties:
I have removed all the historical-related properties as well as the event scripts leaving only:

accessRights;clampMode;deadband;deadbandMode;formatString;opcItemPath;opcServer;permissionModel;rawHigh;rawLow;scaleFactor;scaleMode;scaledHigh;scaledLow;tagGroup;valueSource;expression;expressionType;ConfiguredTagPath;readPermissions;writePermissions;parentEnabled;sourceTagPath

MQTT Engine → Advance Settings/ Filtered Properties:
Also removed the same properties so the MQTT engine autocreates the tags accordingly:

accessRights;clampMode;deadband;deadbandMode;formatString;opcItemPath;opcServer;permissionModel;rawHigh;rawLow;scaleFactor;scaleMode;scaledHigh;scaledLow;tagGroup;valueSource;expression;expressionType;ConfiguredTagPath;readPermissions;writePermissions;parentEnabled;sourceTagPath

When I subscribe to the DBIRTH topic I can see the properties are sent to the broker as expected:

On the Ignition tag browser only the Read Only property is properly updated on every tag under the corresponding Node of the MQTT Engine provider

What is the expected behaviour then?

Hi, MQTT Transmission will publish any non-filtered tag properties which are different from the default Ignition tag property setting, including custom properties, in the BIRTH message.

Hi, I can see them published but is the MQTT Engine supposed to apply them to the tags under the provider accordingly or is it simply context properties?

I am not sure I understand the question. As an example, I removed the HistoryEnabled and HistoricalDeadband from both the Transmission and Engine filtered properties list. At the edge, I set the HistoryEnabled from False to True and set the HistoricalDeadband from 0.01 to 0.05.

After a Transmission refresh to generate the BIRTH message, I see those two properties set on the tag at MQTT engine.

1 Like

This is exactly what I was expecting. For some reason, I am not getting these properties updated on the Engine side after removing them from the filtered properties list. I will have a deeper look. Thanks

Thanks, Gill again. I found that if the option below is checked

  • Convert UDTs: (Converts UDT members to normal Tags before publishing)

the properties are not updated on the MQTT Engine side after conversion to normal tags. As soon as I unchecked that and refreshed the transmitter, the properties were propagated correctly.

Note: I do have UDTs at the Edge

So, to summarise, the non-filtered properties will be properly updated on the MQTT Engine side only if using:

  • UDTs without conversion to normal tags and UDTs definitions sent on BIRTH.
  • Non UDTs tags

I am looking into this and will update you shortly.

Unfortunately, I am able to replicate the problem when using a simple UDT definition and instance. It may be related to the complexity of the UDT definitions that you have created. Can you open a support ticket with support@cirrus-link.com and provide the following and we can work through the issue you are seeing:

  • tags/UDT defs you are using at the Edge

  • filtered properties list from Engine and Transmission