MQTT BIRTH - Creating Ignition Folders

Just wondering what syntax is required to create additional folders within the DBIRTH Topic in NodeRed. We have some NodeRed nodes that are communicating to the Ignition Distributor where we would like to have additional subfolders created. You cannot use the “/” in the Topic: deviceId /DBIRTH which builds the root folder of any data set. Does anyone out there know the trick to creating a subfolder in Ignition? (The Ignition Engine & Transmission module does this naturally, but there is some method to passing the entire Folder structure through MQTT).

Nodered reference:node-red-contrib-sparkplug (node) - Node-RED

This reference refers to setting Properties on a Tag in Ignition

Device level folders are not included in the topic, but instead are a “prefix” on the metric name in the actual message payload. Take a look at the example Python code here - tahu/ at develop · eclipse/tahu · GitHub

In the publishDeviceBirth() method, see lines 218 - 221 where the input and output folders are included in the metric name. The result is that MQTT Engine will create those input and output folders and then create the appropriate tags within those folders.

This is the resulting DBIRTH message on the wire with the payload decoded.
spBv1.0/Sparkplug B Devices/DBIRTH/Python Edge Node 1/Emulated Device

{“timestamp”:1629928453676,“metrics”:[{“name”:“input/Device Metric0”,“alias”:8,“timestamp”:1629928453676,“dataType”:“String”,“value”:“hello device”},{“name”:“input/Device Metric1”,“alias”:9,“timestamp”:1629928453676,“dataType”:“Boolean”,“value”:true},{“name”:“output/Device Metric2”,“alias”:10,“timestamp”:1629928453676,“dataType”:“Int16”,“value”:16},{“name”:“output/Device Metric3”,“alias”:11,“timestamp”:1629928453676,“dataType”:“Boolean”,“value”:true},{“name”:“My_Custom_Motor”,“alias”:12,“timestamp”:1629928453676,“dataType”:“Template”,“value”:{“version”:"",“reference”:“Custom_Motor”,“isDefinition”:false,“metrics”:[{“name”:“RPMs”,“timestamp”:1629928453676,“dataType”:“Int32”,“value”:123},{“name”:“AMPs”,“timestamp”:1629928453676,“dataType”:“Int32”,“value”:456}],“parameters”:[{“name”:“Index”,“type”:“String”,“value”:“1”}]}}],“seq”:1}

Awesome. I will take a deeper look at this. That’s great help. Thanks!