UNS Tag Creation Nested Metrics

Hello we are trying to use MQTT engine to ingest Sparkplug B data from an ALC WebCtrl system. Tag generation works fine when using the default tags option. But, the engine does not properly generate UNS tags. ALC seems to use a nested metric schema that the MQTT engine can’t decode. Instead of UNS tags matching the display names, it looks like I’m getting some erroneous conversion of the nested metrics. Please advise.

I’m not familiar with that device. Has it passed the Eclipse Sparkplug TCK to show it is fully Sparkplug compliant?

Hi Wes. Thanks for the quick reply. ALC isn’t a device but another BMS platform we are trying to scrape data from. We have a binary that decodes the protobuf and here’s what a sample message looks like. The UNS parser is getting confused by the metric structure.

Ok - so this is just some custom JSON data? If so, are you using a custom namespace in MQTT Engine to receive the data?

Also, are you seeing parsing errors in the log or is the tag structure just not what you expect?

Can you let me know the following:

  1. How is MQTT Engine configured (i.e. custom namespace or something else)?
  2. Can you give me a payload snippet and the corresponding tag structure created vs what you expect?
  3. If there are errors in the log related to this parsing, can you share the errors as well?

Sorry for the confusion. We are not using a custom JSON. We are receiving Sparkplug B encoded data from ALC. The snippet of the package I attached above was decoded from the protobuf into JSON so I could read it. We are using the default Sparkplug B Namespace with the UNS Tags Enable option selected.

The errors we are seeing in the Ignition logs:

image

Again, I suspect these errors are because the tag generator isn’t creating the UNS structure properly because of the nested metrics. It’s creating folders called Identity and Status rather than a namespace per the path in the display name

That specific error is saying that the same metric name already arrived and was sent by a different Sparkplug Edge Node. This isn’t allowed in a UNS namespace. MQTT Engine is taking all metric names from all Sparkplug Edge Nodes and Sparkplug Devices and merging them into a single Ignition tag tree. As a result, if a metric of the same name arrives from two different Edge Nodes or Devices, this error will be logged and the tag will not be updated in Ignition.

Hi Wes. Sorry I dropped this for a few days. I understand that it’s creating dupe tags. I think that’s because the metric structure in the Sparkplug message. The engine only seeing the top level of the metric structure. It’s only creating Identity and Status folders. Which would be duplicated in all the packages. The engine isn’t recognizing there’s a whole structure below that. Is this a functionality that should be expected or does the engine only support flat metric packages?