Node-Red polling CIP and publishing sparkplug B

Hopefully someone out there can shed some light on this - in a nutshell I’m trying to setup the following:
AB PLC –> Node-Red –> MQTT –> Ignition

We currently use ignition edge to poll AB devices and publish data via MQTT, so I’m attempting to come up with an ultra-lightweight edge device to poll the PLC, then publish the data in sparkplug B to my MQTT server for ignition to pick it up.

The plan is to run node-red on an advantech ADAM for a handful of tags with low power draw for those fringe edge cases where a full blow ignition edge is overkill and I want to save data on metered connections.

Using ignition edge the data shows up in our IO server on the following path:
Edge Nodes –> Facility group –> Facility Name –> Tag Group –> Tags
Works great, everything is happy.

Using node-red it shows up on the following path:
Edge Nodes –> Facility group –> Facility Name –> Device –> Tag Group –> Tags

That additional Device entry in the path is killing me, using the mqtt sparkplug device node there is no way I’ve been able to find to NOT get that node to inject the device field.

When try the other nodes, mqtt sparkplug out getting it to perform an NBIRTH and get store and forward working, and all the stuff that the mqtt sparkplug device node just does out of the box is a nightmare.

Has anyone managed to get node-red polling local PLC’s and publishing proper sparkplug B into ignition without the device node just putting that extra step in the path? am I using the wrong nodes?

Been going in circles for weeks and I’ve not found a way to make this work.

I haven't used Node Red for SparkplugB, but have you looked into RedLion DA10s or DA30s? The DA10s aren't Class 1 Div 2 if you need that and they don't do store and forwarding but the DA30 does both. They would be lightweight and easier to configure and deploy most likely.

I happen to have a DA30 on my desk, but it’s my understanding that they do not support Sparkplug, but they do support MQTT

I haven't used them for SparkplugB yet, but they do support it.

I’ll crack open the DA30 at some point, but I think I just got the structure going and building sparkplug properly. I’ll need to optimize from here but this at least finally works

What a pain, not having the NDEATH added in was throwing me for a loop any time I tried to modify the tag map, but I’ve arrived at something that’s working pretty good.

I use node-red-contrib-mqtt-sparkplug-plus. I must admit, it was years ago when I switched over to that node so I don’t remember all the details but it was the answer to my struggles at the time. I think it’s easier to implement and easier to set up multi Sparkplug devices. I publish 100 wellsite simulator devices to Ignition with each Node-RED instance it and I don’t have any issues with the topic structure.

The Red Lion DA30 SparkplugB support is decent.

I’m using node-red-contrib-mqtt-sparkplug-plus as well, I had to switch to node-red-contrib-cip-st-ethernet-ip for Allen Bradley due to a bug in node-red-contrib-cip-ethernet-ip