MQTT Engine: using "\" delimiter in SparkplugB topic groupID

@wes0johnson Let me know if you want a support ticket opened for the following.

Does anyone have experience using the"" delimiter in the SparkplugB groupID with Ignition? In using 8.1.3 with MQTT Engine 4.0.6 and 8.1.4 with MQTT Engine 4.0.7 I’m seeing the following issue:

When the data comes in, two structures are created under the MQTTengine tag provider: 1) a nested directory hierarchy (expected) and 2) a directory where the groupID had the “” replaced with underscores (unexpected). For example: when groupID is “Enterprise\Site\Area”, MQTT Engine produces the structure below:
image

The metrics from NDATA and DDATA are appearing under the 2nd structure (directory replacing “” with “_”, whereas the 1st structure just an empty, static skeleton.

The groupID in the published topic does show the backslash correctly in MQTTExplorer, HiveMQ websocket client, and MQTTx client, so I think the publish is correct.

1 Like

I would not recommend using \ in any group, edge node, or device ID. I believe that Ignition is converting the '\' chars to '/' chars which in turn creates folders for those char strings between the \ chars. I didn’t know that this occurred until this post and I wouldn’t count on that remaining valid functionality. Furthermore, I don’t know how ‘writes’ back to those tags would be interpreted. I would guess that it wouldn’t work - and certainly isn’t explicitly handled in the Engine module. Technically, a '\' char in a folder in Ignition is invalid so you couldn’t even reproduce this from an Edge Node using MQTT Transmission.

’ and . chars are also not valid chars in Ignition. So, these get replaced with underscores. As a general rule, any chars that can not be valid in Ignition tag names or Ignition folder names should not be published to MQTT Engine.

I think a lot of the characters you were trying to type are missing from the forum post (causing issues with the underlying architecture of this forums system I see!

Maybe you can post a screenshot of the characters that are “invalid”? Or a link to those that Ignition forbids?

I tweaked Wes’ post to escape the lone backslashes.

Referencing Ignition documentation here:
https://docs.inductiveautomation.com/display/DOC81/Tags

1 Like

Yes - I was going to defer to IA docs here. Technically Sparkplug doesn’t have these same limitations. But, since we’re talking about MQTT Engine in Ignition it must follow these rules for tag names and paths.

I have the same problem, I am trying to implement the Parris method to construction a UNS but at the moment of publishing the data in the GroupId: “Enterprise/Site/Area” and EdgeNodeId: “Line/Cell” the MQTT Engine Module is not able to read it due to special character “/”. What suggestion do you give me to receive the data in Ignition using the Parris method?

You may want to consider the delimiter suggestions on this GitHub issue:

Another point: nodeID should represent the component/application that is providing the result, and not include any upstream hierarchy/path information in the nodeID. For example, just add line as part of the group ID.

1 Like